<?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>93609</bug_id>
          
          <creation_ts>2012-08-09 05:21:40 -0700</creation_ts>
          <short_desc>Rename functions in the ARM port of DFG-JIT for better code readability.</short_desc>
          <delta_ts>2012-08-14 04:28:45 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Gabor Ballabas">gaborb</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gaborb</cc>
    
    <cc>loki</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691412</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-09 05:21:40 -0700</bug_when>
    <thetext>Rename functions in the ARM port of DFG-JIT for better code readability. Also for better following of WebKit coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691432</commentid>
    <comment_count>1</comment_count>
      <attachid>157450</attachid>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-09 05:34:04 -0700</bug_when>
    <thetext>Created attachment 157450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692500</commentid>
    <comment_count>2</comment_count>
      <attachid>157718</attachid>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-10 05:52:35 -0700</bug_when>
    <thetext>Created attachment 157718
Add a couple of function renaming to the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692562</commentid>
    <comment_count>3</comment_count>
      <attachid>157738</attachid>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-10 08:33:06 -0700</bug_when>
    <thetext>Created attachment 157738
Final patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694186</commentid>
    <comment_count>4</comment_count>
      <attachid>157738</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-13 15:50:11 -0700</bug_when>
    <thetext>Comment on attachment 157738
Final patch

It&apos;s worth noting that for the assembler backends, we typically use underscore naming.  I&apos;m fine with this patch, but I think maybe Zoltan would be a better judge of whether you want to change naming in this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694187</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-13 15:50:43 -0700</bug_when>
    <thetext>Zoltan, r=me if you&apos;re fine with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694719</commentid>
    <comment_count>6</comment_count>
      <attachid>157738</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-08-14 02:28:38 -0700</bug_when>
    <thetext>Comment on attachment 157738
Final patch

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

&gt; Source/JavaScriptCore/assembler/ARMAssembler.h:470
&gt; -        void vsqrt_f64_r(int dd, int dm, Condition cc = AL)
&gt; +        void vsqrtFloat64(int dd, int dm, Condition cc = AL)

Do not rename this, only remove the _r. There are other similar instances, probavbly a followup patch.

&gt; Source/JavaScriptCore/assembler/ARMAssembler.h:475
&gt; -        void vabs_f64_r(int dd, int dm, Condition cc = AL)
&gt; +        void vabsFloat64(int dd, int dm, Condition cc = AL)

Ditto.

&gt; Source/JavaScriptCore/assembler/ARMAssembler.h:480
&gt; -        void vneg_f64_r(int dd, int dm, Condition cc = AL)
&gt; +        void vnegFloat64(int dd, int dm, Condition cc = AL)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694753</commentid>
    <comment_count>7</comment_count>
      <attachid>158278</attachid>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-14 03:29:46 -0700</bug_when>
    <thetext>Created attachment 158278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694756</commentid>
    <comment_count>8</comment_count>
    <who name="Gabor Ballabas">gaborb</who>
    <bug_when>2012-08-14 03:30:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 157738 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157738&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/ARMAssembler.h:470
&gt; &gt; -        void vsqrt_f64_r(int dd, int dm, Condition cc = AL)
&gt; &gt; +        void vsqrtFloat64(int dd, int dm, Condition cc = AL)
&gt; 
&gt; Do not rename this, only remove the _r. There are other similar instances, probavbly a followup patch.
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/ARMAssembler.h:475
&gt; &gt; -        void vabs_f64_r(int dd, int dm, Condition cc = AL)
&gt; &gt; +        void vabsFloat64(int dd, int dm, Condition cc = AL)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/ARMAssembler.h:480
&gt; &gt; -        void vneg_f64_r(int dd, int dm, Condition cc = AL)
&gt; &gt; +        void vnegFloat64(int dd, int dm, Condition cc = AL)
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694762</commentid>
    <comment_count>9</comment_count>
      <attachid>158278</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-08-14 03:39:37 -0700</bug_when>
    <thetext>Comment on attachment 158278
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694801</commentid>
    <comment_count>10</comment_count>
      <attachid>158278</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 04:28:41 -0700</bug_when>
    <thetext>Comment on attachment 158278
Patch

Clearing flags on attachment: 158278

Committed r125541: &lt;http://trac.webkit.org/changeset/125541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694802</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 04:28:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157450</attachid>
            <date>2012-08-09 05:34:04 -0700</date>
            <delta_ts>2012-08-10 05:52:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0003-renaming-functions.patch</filename>
            <type>text/plain</type>
            <size>60145</size>
            <attacher name="Gabor Ballabas">gaborb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMWU3MWQuLmIzMzFlMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxMi0wOC0wOSAgR2Fib3IgQmFsbGFi
YXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJlbmFtZSBmdW5jdGlvbnMg
aW4gdGhlIEFSTSBwb3J0IG9mIERGRy1KSVQgZm9yIGJldHRlciBjb2RlIHJlYWRhYmlsaXR5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgZnVu
Y3Rpb25zIGluIHRoZSBBUk0gcG9ydCBvZiBERkctSklUIGZvciBiZXR0ZXIgY29kZQorICAgICAg
ICByZWFkYWJpbGl0eSwgYW5kIGZvciBmb2xsb3dpbmcgdGhlIFdlYktpdCBjb2Rpbmcgc3R5bGUg
d2hlcmV2ZXIgaXQgaXMKKyAgICAgICAgcG9zc2libGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpnZW5JbnQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmdldEltbSk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6bW92ZUltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29t
cGxleEltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyMzIpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkYXRhVHJhbnNmZXJGbG9hdCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YmFz
ZUluZGV4VHJhbnNmZXJGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpdEFuZCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6Yml0QW5kcyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW9yKToK
KyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjplb3JzKToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjpzdWIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnN1YnMpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJzYik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cnNicyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjphZGRzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjphZGMpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmFkY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnNiYyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6c2Jjcyk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cnNjKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpy
c2NzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp0c3QpOgorICAgICAgICAoSlNDOjpB
Uk1Bc3NlbWJsZXI6OnRlcSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Y21wKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpjbW4pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om9ycik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6b3Jycyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bW92KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z3
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z0KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjptb3ZzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiaWMpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om12bik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bXZucyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bXVsKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxz
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxsKToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjp2bW92RmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmFk
ZEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZkaXZGbG9hdDY0KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3ViRmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6dm11bEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZj
bXBGbG9hdDY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3FydEZsb2F0NjQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZhYnNGbG9hdDY0KToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjp2bmVnRmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
bGRySW1tZWRpYXRlKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsZHJVbmlxdWVJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0clVwKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpkdHJVcFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkdHJEb3duKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJEb3duUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmhhbGZEdHJVcCk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6aGFsZkR0clVwUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk1B
c3NlbWJsZXI6OmhhbGZEdHJEb3duKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpoYWxm
RHRyRG93blJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkb3VibGVEdHJV
cCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZG91YmxlRHRyRG93bik6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cHVzaCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cG9wKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpwb2tlKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjpwZWVrKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpjbHopOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmFsaWduKToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjpsb2FkQnJhbmNoVGFyZ2V0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0
aFVuYWxpZ25lZEhhbGZXb3Jkcyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjphZGQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjphbmQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpt
dWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpvcjMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnVyc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
OjpzdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp4b3IzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb3VudExlYWRpbmdaZXJvczMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbnZlcnRpYmxlTG9hZFB0cik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMldpdGhDb21wYWN0QWRkcmVz
c09mZnNldFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN0b3JlMzJX
aXRoQWRkcmVzc09mZnNldFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cG9wKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnB1c2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6bW92ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzd2Fw
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjptdWxsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTo6YnJhbmNoU3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29tcGFy
ZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRlc3QzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6cmVsYXRpdmVUYWJsZUp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6bW92ZVdpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
Ojpsb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmVEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YWRkRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmRpdkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjpzdWJEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6bXVsRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnNxcnRE
b3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YWJzRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTo6YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hEb3VibGVaZXJvT3JOYU4pOgorCiAy
MDEyLTA4LTA4ICBTaGFuZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBDb21waWxlIGZsYWcgZm9yIENTUyBIaWVyYXJjaGllcwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCmluZGV4IDUzMzY0MGUuLjk2
NTU1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNz
ZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2Vt
Ymxlci5jcHAKQEAgLTE4NywxMSArMTg3LDExIEBAIGludCBBUk1Bc3NlbWJsZXI6OmdlbkludChp
bnQgcmVnLCBBUk1Xb3JkIGltbSwgYm9vbCBwb3NpdGl2ZSkKICAgICB9CiAKICAgICBpZiAocG9z
aXRpdmUpIHsKLSAgICAgICAgbW92X3IocmVnLCBpbW0xKTsKLSAgICAgICAgb3JyX3IocmVnLCBy
ZWcsIGltbTIpOworICAgICAgICBtb3YocmVnLCBpbW0xKTsKKyAgICAgICAgb3JyKHJlZywgcmVn
LCBpbW0yKTsKICAgICB9IGVsc2UgewotICAgICAgICBtdm5fcihyZWcsIGltbTEpOwotICAgICAg
ICBiaWNfcihyZWcsIHJlZywgaW1tMik7CisgICAgICAgIG12bihyZWcsIGltbTEpOworICAgICAg
ICBiaWMocmVnLCByZWcsIGltbTIpOwogICAgIH0KIAogICAgIHJldHVybiAxOwpAQCAtMjEwLDcg
KzIxMCw3IEBAIEFSTVdvcmQgQVJNQXNzZW1ibGVyOjpnZXRJbW0oQVJNV29yZCBpbW0sIGludCB0
bXBSZWcsIGJvb2wgaW52ZXJ0KQogICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewog
ICAgICAgICBpZiAoaW52ZXJ0KQogICAgICAgICAgICAgcmV0dXJuIHRtcCB8IE9wMkludmVydGVk
SW1tZWRpYXRlOwotICAgICAgICBtdm5fcih0bXBSZWcsIHRtcCk7CisgICAgICAgIG12bih0bXBS
ZWcsIHRtcCk7CiAgICAgICAgIHJldHVybiB0bXBSZWc7CiAgICAgfQogCkBAIC0yMjQsMTMgKzIy
NCwxMyBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6bW92ZUltbShBUk1Xb3JkIGltbSwgaW50IGRlc3Qp
CiAgICAgLy8gRG8gaXQgYnkgMSBpbnN0cnVjdGlvbgogICAgIHRtcCA9IGdldE9wMihpbW0pOwog
ICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewotICAgICAgICBtb3ZfcihkZXN0LCB0
bXApOworICAgICAgICBtb3YoZGVzdCwgdG1wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIHRtcCA9IGdldE9wMih+aW1tKTsKICAgICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUp
IHsKLSAgICAgICAgbXZuX3IoZGVzdCwgdG1wKTsKKyAgICAgICAgbXZuKGRlc3QsIHRtcCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0MiwxMSArMjQyLDExIEBAIEFSTVdvcmQgQVJN
QXNzZW1ibGVyOjplbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKICNpZiBX
VEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykKICAgICBBUk1Xb3JkIHRtcCA9IGdldEltbTE2T3AyKGlt
bSk7CiAgICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG1vdndfcihk
ZXN0LCB0bXApOworICAgICAgICBtb3Z3KGRlc3QsIHRtcCk7CiAgICAgICAgIHJldHVybiBkZXN0
OwogICAgIH0KLSAgICBtb3Z3X3IoZGVzdCwgZ2V0SW1tMTZPcDIoaW1tICYgMHhmZmZmKSk7Ci0g
ICAgbW92dF9yKGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOworICAgIG1vdncoZGVzdCwg
Z2V0SW1tMTZPcDIoaW1tICYgMHhmZmZmKSk7CisgICAgbW92dChkZXN0LCBnZXRJbW0xNk9wMihp
bW0gPj4gMTYpKTsKICAgICByZXR1cm4gZGVzdDsKICNlbHNlCiAgICAgLy8gRG8gaXQgYnkgMiBp
bnN0cnVjdGlvbgpAQCAtMjU1LDcgKzI1NSw3IEBAIEFSTVdvcmQgQVJNQXNzZW1ibGVyOjplbmNv
ZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKICAgICBpZiAoZ2VuSW50KGRlc3Qs
IH5pbW0sIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGRlc3Q7CiAKLSAgICBsZHJfaW1tKGRlc3Qs
IGltbSk7CisgICAgbGRySW1tZWRpYXRlKGRlc3QsIGltbSk7CiAgICAgcmV0dXJuIGRlc3Q7CiAj
ZW5kaWYKIH0KQEAgLTI2NiwyMyArMjY2LDIzIEBAIHZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJh
bnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjCiB7
CiAgICAgaWYgKG9mZnNldCA+PSAwKSB7CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHhmZmYpCi0g
ICAgICAgICAgICBkdHJfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQpOwogICAg
ICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZikgewotICAgICAgICAgICAgYWRkX3IoQVJN
UmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMikgfCAoMTAg
PDwgOCkpOwotICAgICAgICAgICAgZHRyX3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lz
dGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikpOworICAgICAgICAgICAgYWRkKEFSTVJlZ2lzdGVy
czo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgpKTsK
KyAgICAgICAgICAgIGR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMw
LCAob2Zmc2V0ICYgMHhmZmYpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1vdmVJ
bW0ob2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgICAgIGR0cl91cih0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgICAgICBkdHJV
cFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChvZmZzZXQgPj0gLTB4ZmZmKQot
ICAgICAgICAgICAgZHRyX2QodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIC1vZmZzZXQpOwor
ICAgICAgICAgICAgZHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgLW9mZnNldCk7
CiAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA+PSAtMHhmZmZmZikgewotICAgICAgICAgICAgc3Vi
X3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKC1vZmZzZXQgPj4gMTIp
IHwgKDEwIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cl9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBB
Uk1SZWdpc3RlcnM6OlMwLCAoLW9mZnNldCAmIDB4ZmZmKSk7CisgICAgICAgICAgICBzdWIoQVJN
UmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKC1vZmZzZXQgPj4gMTIpIHwgKDEw
IDw8IDgpKTsKKyAgICAgICAgICAgIGR0ckRvd24odHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJl
Z2lzdGVyczo6UzAsICgtb2Zmc2V0ICYgMHhmZmYpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgICAgIGR0
cl91cih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAg
ICAgICAgICBkdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdp
c3RlcnM6OlMwKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI5MywxMSArMjkzLDExIEBAIHZv
aWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRy
YW5zZmVyVHlwZSwgUmVnaXN0ZXJJCiAgICAgQVJNV29yZCBvcDIgPSBsc2woaW5kZXgsIHNjYWxl
KTsKIAogICAgIGlmICghb2Zmc2V0KSB7Ci0gICAgICAgIGR0cl91cih0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgb3AyKTsKKyAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgb3AyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZF9yKEFS
TVJlZ2lzdGVyczo6UzEsIGJhc2UsIG9wMik7CisgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzEsIGJh
c2UsIG9wMik7CiAgICAgZGF0YVRyYW5zZmVyMzIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJl
Z2lzdGVyczo6UzEsIG9mZnNldCk7CiB9CiAKQEAgLTMwNSwyMyArMzA1LDIzIEBAIHZvaWQgQVJN
QXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUs
IFJlZ2lzdGVySUQgc3JjCiB7CiAgICAgaWYgKG9mZnNldCA+PSAwKSB7CiAgICAgICAgIGlmIChv
ZmZzZXQgPD0gMHhmZikKLSAgICAgICAgICAgIGR0cmhfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
YmFzZSwgZ2V0T3AySGFsZihvZmZzZXQpKTsKKyAgICAgICAgICAgIGhhbGZEdHJVcCh0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0T3AySGFsZihvZmZzZXQpKTsKICAgICAgICAgZWxzZSBp
ZiAob2Zmc2V0IDw9IDB4ZmZmZikgewotICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpT
MCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAg
ICAgICAgICBkdHJoX3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdl
dE9wMkhhbGYob2Zmc2V0ICYgMHhmZikpOworICAgICAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6
UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gOCkgfCAoMTIgPDwgOCkpOworICAg
ICAgICAgICAgaGFsZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMw
LCBnZXRPcDJIYWxmKG9mZnNldCAmIDB4ZmYpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgICAgIGR0cmhf
dXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAg
ICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJl
Z2lzdGVyczo6UzApOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG9mZnNl
dCA+PSAtMHhmZikKLSAgICAgICAgICAgIGR0cmhfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFz
ZSwgZ2V0T3AySGFsZigtb2Zmc2V0KSk7CisgICAgICAgICAgICBoYWxmRHRyRG93bih0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgYmFzZSwgZ2V0T3AySGFsZigtb2Zmc2V0KSk7CiAgICAgICAgIGVsc2Ug
aWYgKG9mZnNldCA+PSAtMHhmZmZmKSB7Ci0gICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6
OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0g
ICAgICAgICAgICBkdHJoX2QodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAs
IGdldE9wMkhhbGYoLW9mZnNldCAmIDB4ZmYpKTsKKyAgICAgICAgICAgIHN1YihBUk1SZWdpc3Rl
cnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7
CisgICAgICAgICAgICBoYWxmRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAg
ICAgZHRyaF91cih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7
CisgICAgICAgICAgICBoYWxmRHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFz
ZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zMjksMTEgKzMy
OSwxMSBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlw
ZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyYwogdm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJ
bmRleFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklE
IHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGlu
dDMyX3Qgb2Zmc2V0KQogewogICAgIGlmICghc2NhbGUgJiYgIW9mZnNldCkgewotICAgICAgICBk
dHJoX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBpbmRleCk7CisgICAgICAgIGhhbGZE
dHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBpbmRleCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMxLCBiYXNlLCBsc2wo
aW5kZXgsIHNjYWxlKSk7CisgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRl
eCwgc2NhbGUpKTsKICAgICBkYXRhVHJhbnNmZXIxNih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIApAQCAtMzQyLDM2ICszNDIsMzYgQEAgdm9pZCBB
Uk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFu
c2ZlclR5cGUsIEZQUmVnaXMKICAgICAvLyBWRlAgY2Fubm90IGRpcmVjdGx5IGFjY2VzcyBtZW1v
cnkgdGhhdCBpcyBub3QgZm91ci1ieXRlLWFsaWduZWQKICAgICBpZiAoIShvZmZzZXQgJiAweDMp
KSB7CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmYgJiYgb2Zmc2V0ID49IDApIHsKLSAgICAg
ICAgICAgIGZkdHJfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwor
ICAgICAgICAgICAgZG91YmxlRHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNl
dCA+PiAyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAob2Zm
c2V0IDw9IDB4M2ZmZmYgJiYgb2Zmc2V0ID49IDApIHsKLSAgICAgICAgICAgIGFkZF9yKEFSTVJl
Z2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8
IDgpKTsKLSAgICAgICAgICAgIGZkdHJfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOworICAgICAgICAgICAgYWRkKEFSTVJlZ2lz
dGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgp
KTsKKyAgICAgICAgICAgIGRvdWJsZUR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdp
c3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKIAogICAgICAgICBpZiAob2Zmc2V0
IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBmZHRyX2QodHJhbnNmZXJU
eXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNldCA+PiAyKTsKKyAgICAgICAgICAgIGRvdWJsZUR0ckRv
d24odHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNldCA+PiAyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmZmYgJiYgb2Zm
c2V0ID49IDApIHsKLSAgICAgICAgICAgIHN1Yl9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9w
MkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAgIGZk
dHJfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAy
KSAmIDB4ZmYpOworICAgICAgICAgICAgc3ViKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMklt
bWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKKyAgICAgICAgICAgIGRvdWJs
ZUR0ckRvd24odHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQg
Pj4gMikgJiAweGZmKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBv
ZmZzZXQgPSAtb2Zmc2V0OwogICAgIH0KIAogICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdpc3Rl
cnM6OlMwKTsKLSAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBi
YXNlKTsKLSAgICBmZHRyX3UodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAs
IDApOworICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBiYXNlKTsK
KyAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CiB9CiAKIHZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFU
cmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkK
IHsKLSAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMxLCBiYXNlLCBsc2woaW5kZXgsIHNjYWxlKSk7
CisgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKICAg
ICBkYXRhVHJhbnNmZXJGbG9hdCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpT
MSwgb2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
QXNzZW1ibGVyLmgKaW5kZXggYWM5MThmMy4uNzFkNTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCkBAIC0yNjgsMzA0ICsyNjgsMzA0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNtID4+
IDEpIHwgKChzbSAmIDB4MSkgPDwgNSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBhbmRf
cihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIGJpdEFuZChpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IEFORCwgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBhbmRzX3Io
aW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAg
dm9pZCBiaXRBbmRzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgQU5EIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBlb3JfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIGVvcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IEVPUiwgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBlb3JzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKKyAgICAgICAgdm9pZCBlb3JzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0
b0FSTVdvcmQoY2MpIHwgRU9SIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzdWJfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHN1YihpbnQgcmQsIGludCBybiwg
QVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBl
bWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNVQiwgcmQsIHJuLCBvcDIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBzdWJzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBzdWJzKGludCByZCwgaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU1VCIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQs
IHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByc2JfcihpbnQgcmQsIGludCBy
biwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHJzYihpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAg
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQiwgcmQsIHJuLCBv
cDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByc2JzX3IoaW50IHJkLCBpbnQgcm4sIEFS
TVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCByc2JzKGludCByZCwg
aW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNCIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBhZGRfcihp
bnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2
b2lkIGFkZChpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFE
RCwgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBhZGRzX3IoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBh
ZGRzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQUREIHwg
U2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBhZGNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIGFkYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IEFEQywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBh
ZGNzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAg
ICAgICAgdm9pZCBhZGNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgQURDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBzYmNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHNiYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBzYmNzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgdm9pZCBzYmNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwg
Q29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlv
bih0b0FSTVdvcmQoY2MpIHwgU0JDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByc2NfcihpbnQgcmQsIGludCBybiwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHJzYyhpbnQgcmQsIGludCBy
biwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAg
ICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQywgcmQsIHJuLCBvcDIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByc2NzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCByc2NzKGludCByZCwgaW50IHJuLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVt
aXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNDIHwgU2V0Q29uZGl0aW9uYWxDb2Rlcywg
cmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB0c3RfcihpbnQgcm4sIEFS
TVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB0c3QoaW50IHJuLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVt
aXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVFNUIHwgU2V0Q29uZGl0aW9uYWxDb2Rlcywg
MCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHRlcV9yKGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHRlcShpbnQgcm4sIEFS
TVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1p
dEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBURVEgfCBTZXRDb25kaXRpb25hbENvZGVzLCAw
LCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgY21wX3IoaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgY21wKGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IENNUCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIDAs
IHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBjbW5fcihpbnQgcm4sIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBjbW4oaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQ01OIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgMCwg
cm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG9ycl9yKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgb3JyKGludCBy
ZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgT1JSLCByZCwgcm4sIG9w
Mik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG9ycnNfcihpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG9ycnMoaW50IHJkLCBp
bnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAg
ICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBPUlIgfCBTZXRDb25kaXRpb25h
bENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG1vdl9yKGlu
dCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG1vdihp
bnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAg
ICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBNT1YsIHJkLCBBUk1SZWdpc3Rl
cnM6OnIwLCBvcDIpOwogICAgICAgICB9CiAKICNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykK
LSAgICAgICAgdm9pZCBtb3Z3X3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgbW92dyhpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKChvcDIgfCAweGYwZmZmKSA9PSAw
eGYwZmZmKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgTU9W
VyB8IFJEKHJkKSB8IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG1vdnRfcihpbnQg
cmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtb3Z0KGlu
dCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoKG9wMiB8IDB4ZjBmZmYpID09IDB4ZjBmZmYpOwogICAgICAgICAgICAgbV9i
dWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNT1ZUIHwgUkQocmQpIHwgb3AyKTsKICAgICAg
ICAgfQogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBtb3ZzX3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgbW92cyhpbnQgcmQsIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0
aW9uKHRvQVJNV29yZChjYykgfCBNT1YgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgQVJNUmVn
aXN0ZXJzOjpyMCwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgYmljX3IoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBi
aWMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBCSUMsIHJk
LCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgYmljc19yKGludCByZCwgaW50
IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYmljcyhp
bnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7
CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQyB8IFNldENv
bmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
bXZuX3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZv
aWQgbXZuKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7
CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiwgcmQsIEFS
TVJlZ2lzdGVyczo6cjAsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG12bnNfcihp
bnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtdm5z
KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAg
ICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiB8IFNldENvbmRpdGlv
bmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBtdWxfcihpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCBtdWwoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgTVVMIHwgUk4ocmQpIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgbXVsc19yKGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIG11bHMoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgTVVMIHwgU2V0Q29uZGl0aW9uYWxDb2RlcyB8IFJOKHJkKSB8IFJTKHJuKSB8IFJNKHJtKSk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG11bGxfcihpbnQgcmRoaSwgaW50IHJkbG8sIGlu
dCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtdWxsKGludCBy
ZGhpLCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTEwgfCBS
TihyZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgdm1vdl9mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisg
ICAgICAgIHZvaWQgdm1vdkZsb2F0NjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwgZG0pOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCB2YWRkX2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIHZhZGRGbG9hdDY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENv
bmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lz
aW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZBRERfRjY0LCBkZCwgZG4sIGRtKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgdmRpdl9mNjRfcihpbnQgZGQsIGludCBkbiwgaW50IGRt
LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2ZGl2RmxvYXQ2NChpbnQgZGQsIGlu
dCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAg
ZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWRElWX0Y2NCwg
ZGQsIGRuLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZzdWJfZjY0X3IoaW50IGRk
LCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdnN1YkZs
b2F0NjQoaW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgVlNVQl9GNjQsIGRkLCBkbiwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2
bXVsX2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB2b2lkIHZtdWxGbG9hdDY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZNVUxfRjY0LCBkZCwgZG4sIGRtKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgdmNtcF9mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgdmNtcEZsb2F0NjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDTVBfRjY0LCBkZCwgMCwgZG0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCB2c3FydF9mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgdnNxcnRGbG9hdDY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBWU1FSVF9GNjQsIGRkLCAwLCBkbSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIHZhYnNfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIHZhYnNGbG9hdDY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUJTX0Y2NCwgZGQsIDAsIGRtKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgdm5lZ19mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgdm5lZ0Zsb2F0NjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZORUdfRjY0LCBkZCwgMCwgZG0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBsZHJfaW1tKGludCByZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIGxkckltbWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0
aENvbnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5zZmVyVXAg
fCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tLCB0cnVlKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgbGRyX3VuX2ltbShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgdm9pZCBsZHJVbmlxdWVJbW1lZGlhdGUoaW50IHJkLCBBUk1Xb3Jk
IGltbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEludFdpdGhDb25zdGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQzMiB8IERhdGFU
cmFuc2ZlclVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGR0cl91KERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwg
aW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAg
dm9pZCBkdHJVcChEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJi
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5z
ZmVyVXAsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyX3VyKERh
dGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBybSwgQ29u
ZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyVXBSZWdpc3RlcihEYXRhVHJhbnNmZXJU
eXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwIHwgT3AySXNSZWdpc3RlckFyZ3VtZW50
LCByZCwgcmIsIHJtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyX2QoRGF0YVRyYW5z
ZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUEgdHJh
bnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IHRyYW5zZmVyVHlwZSwgcmQsIHJiLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBk
dHJfZHIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50
IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJEb3duUmVnaXN0ZXIoRGF0
YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJkLCBy
Yiwgcm0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJoX3UoRGF0YVRyYW5zZmVyVHlw
ZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQorICAgICAgICB2b2lkIGhhbGZEdHJVcChEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2Zl
clR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJh
bnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZHRyaF91cihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCBy
ZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGhhbGZE
dHJVcFJlZ2lzdGVyKERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQg
cm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVt
aXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVy
VXAsIHJkLCBybiwgcm0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJoX2QoRGF0YVRy
YW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGhhbGZEdHJEb3duKERhdGFUcmFuc2ZlclR5
cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCB0cmFuc2ZlclR5cGUsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgZHRyaF9kcihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50
IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGhhbGZEdHJEb3du
UmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwg
aW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUsIHJkLCBybiwgcm0pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBmZHRyX3UoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUs
IGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAg
IHZvaWQgZG91YmxlRHRyVXAoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50
IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChvcDIgPD0gMHhmZiAmJiByZCA8PSAxNSk7CiAgICAgICAgICAgICAvKiBPbmx5
IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAuLi4gczMwIGFyZSBzdXBwb3J0ZWQuICovCiAgICAgICAg
ICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IERhdGFUcmFuc2ZlclVwIHwgdHlw
ZSB8IChyZCA8PCAxMikgfCBSTihyYikgfCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBmZHRyX2QoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZG91YmxlRHRyRG93bihE
YXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAw
eGZmICYmIHJkIDw9IDE1KTsKICAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIs
IHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KICAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dCh0b0FSTVdvcmQoY2MpIHwgdHlwZSB8IChyZCA8PCAxMikgfCBSTihyYikgfCBvcDIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBwdXNoX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgcHVzaChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwogICAgICAgICAgICAg
bV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBTdG9yZVVpbnQzMiB8IERhdGFUcmFuc2Zl
cldyaXRlQmFjayB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHBvcF9yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIHBvcChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwogICAgICAgICAgICAgbV9i
dWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCAoTG9hZFVpbnQzMiBeIERhdGFUcmFuc2ZlclBv
c3RVcGRhdGUpIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJl
ZykgfCAweDQpOwogICAgICAgICB9CiAKLSAgICAgICAgaW5saW5lIHZvaWQgcG9rZV9yKGludCBy
ZWcsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICBpbmxpbmUgdm9pZCBwb2tlKGludCByZWcs
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBkdHJfZChTdG9yZVVp
bnQzMiwgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgcmVnLCBjYyk7CisgICAgICAgICAgICBkdHJEb3du
KFN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OnNwLCAwLCByZWcsIGNjKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlubGluZSB2b2lkIHBlZWtfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgaW5saW5lIHZvaWQgcGVlayhpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewotICAgICAgICAgICAgZHRyX3UoTG9hZFVpbnQzMiwgcmVnLCBBUk1SZWdpc3RlcnM6
OnNwLCAwLCBjYyk7CisgICAgICAgICAgICBkdHJVcChMb2FkVWludDMyLCByZWcsIEFSTVJlZ2lz
dGVyczo6c3AsIDAsIGNjKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgdm1vdl92ZnA2NF9y
KGludCBzbSwgaW50IHJ0LCBpbnQgcnQyLCBDb25kaXRpb24gY2MgPSBBTCkKQEAgLTYyNyw3ICs2
MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FS
TVdvcmQoY2MpIHwgVk1SU19BUFNSKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgY2x6X3Io
aW50IHJkLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGNseihpbnQg
cmQsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgQ0xaIHwgUkQocmQpIHwgUk0ocm0pKTsKICAg
ICAgICAgfQpAQCAtNzQyLDcgKzc0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQogICAgICAgICB7CiAgICAgICAgICAgICB3
aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQotICAgICAgICAgICAgICAgIG1v
dl9yKEFSTVJlZ2lzdGVyczo6cjAsIEFSTVJlZ2lzdGVyczo6cjApOworICAgICAgICAgICAgICAg
IG1vdihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKIAogICAgICAgICAgICAg
cmV0dXJuIGxhYmVsKCk7CiAgICAgICAgIH0KQEAgLTc1MSw3ICs3NTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgZW5zdXJlU3BhY2Uoc2l6ZW9mKEFSTVdvcmQp
LCBzaXplb2YoQVJNV29yZCkpOwogICAgICAgICAgICAgbV9qdW1wcy5hcHBlbmQobV9idWZmZXIu
Y29kZVNpemUoKSB8ICh1c2VDb25zdGFudFBvb2wgJiAweDEpKTsKLSAgICAgICAgICAgIGxkcl91
bl9pbW0ocmQsIEludmFsaWRCcmFuY2hUYXJnZXQsIGNjKTsKKyAgICAgICAgICAgIGxkclVuaXF1
ZUltbWVkaWF0ZShyZCwgSW52YWxpZEJyYW5jaFRhcmdldCwgY2MpOwogICAgICAgICAgICAgcmV0
dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAppbmRleCBhMjUxYTQz
Li45OGRjM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNLmNwcApAQCAtNzYsMjEgKzc2LDIxIEBAIHZvaWQgTWFjcm9Bc3Nl
bWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3Ms
IFJlZ2lzdGVyCiAgICAgb3AyID0gbV9hc3NlbWJsZXIubHNsKGFkZHJlc3MuaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSkpOwogCiAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49
IDAgJiYgYWRkcmVzcy5vZmZzZXQgKyAweDIgPD0gMHhmZikgewotICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmR0cmhfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCkpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5kdHJoX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdp
c3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoYWRk
cmVzcy5vZmZzZXQgKyAweDIpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVy
czo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVw
KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNz
ZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmhhbGZEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFS
TVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCAr
IDB4MikpOwogICAgIH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYmIGFkZHJlc3Mub2Zm
c2V0ID49IC0weGZmKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6
UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9kKEFSTUFz
c2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJIYWxmKC1hZGRyZXNzLm9mZnNldCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJo
X2QoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3Rl
cnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoLWFkZHJlc3Mub2Zmc2V0IC0gMHgyKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2Us
IG9wMik7CisgICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9h
ZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxm
KC1hZGRyZXNzLm9mZnNldCkpOworICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyRG93bihBUk1B
c3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAs
IEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGFkZHJlc3Mub2Zmc2V0LCBBUk1S
ZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNUmVnaXN0ZXJzOjpTMCwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF91cihB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJz
OjpTMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6T3AySW1tZWRpYXRlIHwgMHgyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZHRyaF91cihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVy
czo6UzAsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5oYWxmRHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYs
IGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6
Ok9wMkltbWVkaWF0ZSB8IDB4Mik7CisgICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcFJlZ2lz
dGVyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5i
YXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICB9Ci0gICAgbV9hc3NlbWJsZXIub3JyX3IoZGVz
dCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7CisgICAgbV9h
c3NlbWJsZXIub3JyKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmxzbChBUk1SZWdpc3RlcnM6OlMw
LCAxNikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAppbmRleCA4NWQwZmZiLi4zMDEzODE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5o
CkBAIC04NiwxMiArODYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19y
KGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwg
c3JjKTsKICAgICB9CiAKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19y
KGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBvcDEsIG9w
Mik7CiAgICAgfQogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFk
ZHJlc3MpCkBAIC0xMDMsMTMgKzEwMywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmFkZHNfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBt
X2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9
CiAKICAgICB2b2lkIGFkZDMyKEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBBUk1SZWdpc3Rl
cnM6OlMxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWlu
dDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3RlcnM6OlMx
LCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKICAgICAgICAgYWRkMzIoQVJNUmVnaXN0ZXJzOjpTMSwg
ZGVzdCk7CiAgICAgfQogCkBAIC0xMjEsMzUgKzEyMSwzNSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgc3JjLCBtX2Fzc2VtYmxl
ci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkcyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJN
UmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0
LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHNy
Yyk7CiAgICAgfQogCiAgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihk
ZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgb3AxLCBv
cDIpOwogICAgIH0KIAogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGlt
bS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwLCB0cnVlKTsKICAgICAgICAgaWYgKHcgJiBBUk1B
c3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
Ymljc19yKGRlc3QsIGRlc3QsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0
ZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iaWNzKGRlc3QsIGRlc3QsIHcgJiB+QVJNQXNz
ZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBkZXN0LCB3KTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJpdEFuZHMoZGVzdCwgZGVzdCwgdyk7CiAgICAgfQogCiAgICAgdm9pZCBhbmQzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwLCB0cnVlKTsKICAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVy
dGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKGRlc3QsIHNyYywg
dyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJpY3MoZGVzdCwgc3JjLCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJ
bW1lZGlhdGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRzX3Io
ZGVzdCwgc3JjLCB3KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgc3Jj
LCB3KTsKICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE2MCwxOSArMTYwLDE5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAs
IHNoaWZ0QW1vdW50LCB3KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKEFSTVJlZ2lzdGVy
czo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVz
dCwgbV9hc3NlbWJsZXIubHNsX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsX3Ioc3JjLCBBUk1SZWdpc3RlcnM6
OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9h
c3NlbWJsZXIubHNsKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzbChkZXN0LCBpbW0ubV92YWx1ZSAmIDB4MWYp
KTsKICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3Zz
X3IoZGVzdCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1fdmFs
dWUgJiAweDFmKSk7CiAgICAgfQogCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVn
aXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgb3AyID0gdG1wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm11bHNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm11bHMoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQgbXVsMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tdWxzX3IoZGVzdCwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIubXVscyhkZXN0LCBzcmMsIEFSTVJlZ2lzdGVyczo6UzApOwog
ICAgIH0KIAogICAgIHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQpAQCAtMjA5LDIyICsy
MDksMjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzX3IoZGVzdCwgZGVzdCwg
c3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0K
IAogICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzX3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0
SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9ycnMoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5vcnJzX3IoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJl
Z2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNz
ZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAog
ICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBvcDEsIG9wMik7
CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAg
IHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMjM1LDkgKzIzNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3
KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIuYXNyX3Io
c3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwg
bV9hc3NlbWJsZXIuYXNyX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAg
dm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yNDcs
NyArMjQ3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywg
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgx
ZikpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMs
IGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAogICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lz
dGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI1OCwyOSArMjU4LDI5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBz
aGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0g
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDB4MWYpOwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRf
cihBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmJpdEFuZChBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAgICAgICAgbV9h
c3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzcl9yKHNyYywgQVJNUmVnaXN0ZXJz
OjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzcl9y
KHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgdXJzaGlmdDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3IoZGVzdCwgaW1tLm1fdmFsdWUgJiAweDFm
KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3Qs
IGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KICAgICAKICAgICB2b2lkIHVyc2hpZnQzMihS
ZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzcihzcmMsIGlt
bS5tX3ZhbHVlICYgMHgxZikpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNz
ZW1ibGVyLmxzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAogICAgIHZvaWQg
c3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnN1YnNfcihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJzKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJz
X3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3Rl
cnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgZGVzdCwgbV9hc3NlbWJs
ZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAg
dm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCkBAIC0yOTgsNyAr
Mjk4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3Vic19yKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgc3JjLCBtX2Fzc2Vt
Ymxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAg
ICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0zMTQsNyAr
MzE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubXZuc19yKGRlc3QsIGRlc3QpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubXZucyhkZXN0LCBkZXN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZW9yc19yKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwg
QVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KQEAgLTMyMiw3ICszMjIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubXZuc19yKGRlc3QsIHNyYyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5tdm5zKGRlc3QsIHNyYyk7CiAgICAgICAgIGVsc2UgICAgCiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5lb3JzX3IoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKICAgICB9CkBAIC0zMzAsNyArMzMwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY291bnRMZWFkaW5nWmVyb3MzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKLSAgICAgICAgbV9hc3NlbWJs
ZXIuY2x6X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY2x6KGRlc3QsIHNyYyk7
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc3JjKTsKICAgICAgICAgVU5VU0VEX1BBUkFN
KGRlc3QpOwpAQCAtMzk2LDE1ICszOTYsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ29u
dmVydGlibGVMb2FkTGFiZWwgcmVzdWx0KHRoaXMpOwogICAgICAgICBBU1NFUlQoYWRkcmVzcy5v
ZmZzZXQgPj0gMCAmJiBhZGRyZXNzLm9mZnNldCA8PSAyNTUpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIERhdGFMYWJlbDMyIGxvYWQzMldpdGhBZGRyZXNz
T2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
cl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91
cihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdp
c3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXBSZWdpc3RlcihBUk1Bc3Nl
bWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7
CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCkBAIC00MTgsMTcgKzQxOCwxNyBA
QCBwdWJsaWM6CiAgICAgICAgIERhdGFMYWJlbENvbXBhY3QgZGF0YUxhYmVsKHRoaXMpOwogICAg
ICAgICBBU1NFUlQoaXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQoYWRkcmVzcy5vZmZz
ZXQpKTsKICAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IDApCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX2QoQVJNQXNzZW1ibGVy
OjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmR0ckRvd24oQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJl
bDsKICAgICB9CiAKICAgICBEYXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRj
aChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxh
YmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFS
TVJlZ2lzdGVyczo6UzAsIDApOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1i
bGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpTdG9y
ZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICBy
ZXR1cm4gZGF0YUxhYmVsOwogICAgIH0KIApAQCAtNDY2LDI1ICs0NjYsMjUgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVy
cHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3Uo
QVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIHJl
aW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOworICAgICAgICBtX2Fzc2VtYmxlci5k
dHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDAp
OwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6
OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZD4oYWRkcmVzcykpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGltbS5t
X3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJN
QXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpT
MCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAg
IHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBv
cF9yKGRlc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5wb3AoZGVzdCk7CiAgICAgfQogCiAgICAg
dm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucHVz
aF9yKHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjKTsKICAgICB9CiAKICAgICB2
b2lkIHB1c2goQWRkcmVzcyBhZGRyZXNzKQpAQCAtNTA3LDcgKzUwNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1vdmUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3Qs
IHNyYyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgc3JjKTsKICAgICB9CiAK
ICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTUx
Nyw5ICs1MTcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBS
ZWdpc3RlcklEIHJlZzIpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdp
c3RlcnM6OlMwLCByZWcxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IocmVnMSwgcmVnMik7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZzIsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpTMCwgcmVnMSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdihyZWcxLCByZWcyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KHJlZzIs
IEFSTVJlZ2lzdGVyczo6UzApOwogICAgIH0KIAogICAgIHZvaWQgc2lnbkV4dGVuZDMyVG9QdHIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTU0OSw3ICs1NDksNyBAQCBwdWJs
aWM6CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY21wKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSwgdXNlQ29uc3RhbnRQb29sKSk7CiAgICAgfQogCkBA
IC01NTcsOSArNTU3LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVJNV29yZCB0bXAgPSAo
cmlnaHQubV92YWx1ZSA9PSAweDgwMDAwMDAwKSA/IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVk
aWF0ZSA6IG1fYXNzZW1ibGVyLmdldE9wMigtcmlnaHQubV92YWx1ZSk7CiAgICAgICAgIGlmICh0
bXAgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21uX3IobGVmdCwgdG1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihsZWZ0
LCB0bXApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihsZWZ0
LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShyaWdo
dC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNz
ZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwogICAgIH0K
IApAQCAtNjA5LDcgKzYwOSw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnRzdF9yKHJlZywgbWFzayk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnRzdChyZWcsIG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJN
Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCkBAIC02MTgsOSArNjE4LDkgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogICAg
ICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwLCB0cnVlKTsKICAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVy
dGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKEFSTVJlZ2lzdGVy
czo6UzAsIHJlZywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoQVJNUmVnaXN0ZXJzOjpTMCwgcmVnLCB3ICYgfkFS
TUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci50c3RfcihyZWcsIHcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
dHN0KHJlZywgdyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25k
aXRpb24oY29uZCkpKTsKICAgICB9CiAKQEAgLTcwNSw4ICs3MDUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgb3AyID0gdG1wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm11bGxfcihBUk1SZWdpc3RlcnM6OlMxLCBkZXN0LCBvcDEsIG9wMik7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzEsIG1fYXNzZW1ibGVyLmFz
cihkZXN0LCAzMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5tdWxsKEFSTVJlZ2lzdGVyczo6UzEs
IGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wKEFSTVJlZ2lzdGVyczo6
UzEsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNo
TXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC03NjMsNyArNzYzLDcgQEAgcHVibGljOgogICAgIEp1
bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25k
ID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3Vic19yKGRlc3QsIG9wMSwg
b3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBvcDEsIG9wMik7CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAgICB9
CiAKQEAgLTgwOSwxNiArODA5LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGFyZTMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihsZWZ0
LCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6
Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuY21wKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFS
TUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1f
dmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVz
dCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92
X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5jbXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0
Lm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KGRl
c3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7
CiAgICAgfQogCiAgICAgdm9pZCBjb21wYXJlOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCkBAIC04MzAs
MTEgKzgzMCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcF9yKDAsIHJlZyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoMCwgcmVn
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0X3IocmVnLCBtX2Fz
c2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgx
KSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcs
IG1fYXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lz
dGVySUQgZGVzdCkKQEAgLTg1MSwzMSArODUxLDMxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRk
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0
SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZChkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0
ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5f
aW1tKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5t
X3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50
MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fz
c2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMSwgcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVw
KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJz
OjpTMSwgMCk7CiAgICAgICAgIGFkZDMyKGltbSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2Fz
dDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFS
TUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6
UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0
ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lz
dGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIo
VHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6
UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0
ZXJzOjpTMSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0
ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CiAgICAgICAgIHN1YjMyKGltbSwgQVJNUmVn
aXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJz
OjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVy
czo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlx
dWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihh
ZGRyZXNzLm1fcHRyKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAg
IH0KIAogICAgIHZvaWQgbG9hZDMyKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpT
MCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpT
MCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3Rl
cnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBBUk1SZWdpc3Rl
cnM6OlMwLCAwKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC04OTMs
MTAgKzg5MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBBU1NFUlQoc2NhbGUgPj0gMCAm
JiBzY2FsZSA8PSAzMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6
cGMsIEFSTVJlZ2lzdGVyczo6cGMsIG1fYXNzZW1ibGVyLmxzbChpbmRleCwgc2NhbGUpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6cGMsIEFSTVJlZ2lzdGVyczo6cGMs
IG1fYXNzZW1ibGVyLmxzbChpbmRleCwgc2NhbGUpKTsKIAogICAgICAgICAvLyBOT1AgdGhlIGRl
ZmF1bHQgcHJlZmV0Y2hpbmcKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJz
OjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihBUk1SZWdp
c3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKICAgICB9CiAKICAgICBDYWxsIGNhbGwoKQpA
QCAtOTE5LDcgKzkxOSw3IEBAIHB1YmxpYzoKICAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRj
aChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsUHRyIGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bGRyX3VuX2ltbShkZXN0LCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5t
X3ZhbHVlKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCBy
ZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5tX3ZhbHVlKSk7CiAgICAgICAg
IHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCkBAIC05ODUsNyArOTg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9hZERvdWJsZShjb25zdCB2b2lkKiBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJN
V29yZD4oYWRkcmVzcykpLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZUR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZERv
dWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9y
ZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQpAQCAtMTAxMiwxNyAr
MTAxMiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9mNjRfcihkZXN0LCBzcmMpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIudm1vdkZsb2F0NjQoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGFk
ZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIudmFkZEZsb2F0NjQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lk
IGFkZERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwgb3Ax
LCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci52YWRkRmxvYXQ2NChkZXN0LCBvcDEsIG9wMik7
CiAgICAgfQogCiAgICAgdm9pZCBhZGREb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQpAQCAtMTAzOSwxMiArMTAzOSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpdkRvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnZkaXZfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudmRpdkZsb2F0NjQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGRpdkRv
dWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0X3IoZGVzdCwgb3AxLCBvcDIp
OworICAgICAgICBtX2Fzc2VtYmxlci52ZGl2RmxvYXQ2NChkZXN0LCBvcDEsIG9wMik7CiAgICAg
fQogCiAgICAgdm9pZCBkaXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTA1NiwxMiArMTA1NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1YkRvdWJsZShGUFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnZzdWJfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudnN1
YkZsb2F0NjQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIHN1YkRvdWJsZShG
UFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAg
ICAgICBtX2Fzc2VtYmxlci52c3ViRmxvYXQ2NChkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAg
ICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTA3
Miw3ICsxMDcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52bXVs
X2Y2NF9yKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtdWxGbG9hdDY0
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBtdWxEb3VibGUoQWRkcmVzcyBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTA4MywyMiArMTA4MywyMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZtdWxfZjY0X3Io
ZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci52bXVsRmxvYXQ2NChkZXN0LCBv
cDEsIG9wMik7CiAgICAgfQogCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnNxcnRfZjY0
X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudnNxcnRGbG9hdDY0KGRlc3QsIHNy
Yyk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWJzRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmFic19mNjRfcihk
ZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52YWJzRmxvYXQ2NChkZXN0LCBzcmMpOwog
ICAgIH0KIAogICAgIHZvaWQgbmVnYXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm5lZ19mNjRfcihkZXN0LCBz
cmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bmVnRmxvYXQ2NChkZXN0LCBzcmMpOwogICAgIH0K
IAogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQpAQCAtMTEzMiwxMCArMTEzMiwxMCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJy
YW5jaERvdWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVn
aXN0ZXJJRCByaWdodCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjbXBfZjY0X3IobGVm
dCwgcmlnaHQpOworICAgICAgICBtX2Fzc2VtYmxlci52Y21wRmxvYXQ2NChsZWZ0LCByaWdodCk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtcnNfYXBzcigpOwogICAgICAgICBpZiAoY29uZCAmIERv
dWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OlZTKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6
OlMwLCBBUk1Bc3NlbWJsZXI6OlZTKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
am1wKHN0YXRpY19jYXN0PEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kICYgfkRvdWJsZUNv
bmRpdGlvbk1hc2spKSk7CiAgICAgfQogCkBAIC0xMTQ4LDEyICsxMTQ4LDEyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwogCi0gICAg
ICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGRlc3QsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AyQnl0ZSgxKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpY19yKEFSTVJlZ2lzdGVy
czo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWMoQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKIAog
ICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsKICAg
ICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJzOjpTMCwgdyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcChBUk1SZWdpc3RlcnM6OlMwLCB3KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuam1wKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEFSTUFz
c2VtYmxlcjo6RVEgOiBBUk1Bc3NlbWJsZXI6Ok5FKSk7CiAgICAgfQogCkBAIC0xMTYxLDEwICsx
MTYxLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHRydW5jYXRlRG91YmxlVG9VaW50MzIo
c3JjLCBkZXN0KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMw
LCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6
OmdldE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpT
MCwgZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYmljKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6
Z2V0T3AyQnl0ZSgxKSk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
Y21wKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1
bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNzZW1ibGVyOjpORSkpOwogICAg
IH0KIApAQCAtMTIwMCwxNCArMTIwMCwxNCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERv
dWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKICAgICAgICAgY29udmVydEludDMy
VG9Eb3VibGUoQVJNUmVnaXN0ZXJzOjpTMCwgc2NyYXRjaCk7CiAgICAgICAgIHJldHVybiBicmFu
Y2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVt
cCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNj
cmF0Y2gpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMw
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Yo
QVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKICAgICAgICAg
Y29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0ZXJzOjpTMCwgc2NyYXRjaCk7CiAgICAgICAg
IHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3JhdGNo
KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157718</attachid>
            <date>2012-08-10 05:52:35 -0700</date>
            <delta_ts>2012-08-10 08:33:06 -0700</delta_ts>
            <desc>Add a couple of function renaming to the previous patch.</desc>
            <filename>0003-renaming-all-functions.patch</filename>
            <type>text/plain</type>
            <size>66332</size>
            <attacher name="Gabor Ballabas">gaborb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MjViNmIuLjM0MmYwNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0wOC0xMCAgR2Fib3IgQmFsbGFi
YXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJlbmFtZSBmdW5jdGlvbnMg
aW4gdGhlIEFSTSBwb3J0IG9mIERGRy1KSVQgZm9yIGJldHRlciBjb2RlIHJlYWRhYmlsaXR5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgZnVu
Y3Rpb25zIGluIHRoZSBBUk0gcG9ydCBvZiBERkctSklUIGZvciBiZXR0ZXIgY29kZQorICAgICAg
ICByZWFkYWJpbGl0eSwgYW5kIGZvciBmb2xsb3dpbmcgdGhlIFdlYktpdCBjb2Rpbmcgc3R5bGUg
d2hlcmV2ZXIgaXQgaXMKKyAgICAgICAgcG9zc2libGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpnZW5JbnQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmdldEltbSk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6bW92ZUltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29t
cGxleEltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyMzIpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkYXRhVHJhbnNmZXJGbG9hdCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YmFz
ZUluZGV4VHJhbnNmZXJGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpdEFuZCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6Yml0QW5kcyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW9yKToK
KyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjplb3JzKToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjpzdWIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnN1YnMpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJzYik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cnNicyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjphZGRzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjphZGMpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmFkY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnNiYyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6c2Jjcyk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cnNjKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpy
c2NzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp0c3QpOgorICAgICAgICAoSlNDOjpB
Uk1Bc3NlbWJsZXI6OnRlcSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Y21wKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpjbW4pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om9ycik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6b3Jycyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bW92KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z3
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z0KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjptb3ZzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiaWMpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om12bik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bXZucyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bXVsKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxz
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxsKToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjp2bW92RmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmFk
ZEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZkaXZGbG9hdDY0KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3ViRmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6dm11bEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZj
bXBGbG9hdDY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3FydEZsb2F0NjQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZhYnNGbG9hdDY0KToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjp2bmVnRmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
bGRySW1tZWRpYXRlKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsZHJVbmlxdWVJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0clVwKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpkdHJVcFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkdHJEb3duKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJEb3duUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmhhbGZEdHJVcCk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6aGFsZkR0clVwUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk1B
c3NlbWJsZXI6OmhhbGZEdHJEb3duKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpoYWxm
RHRyRG93blJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkb3VibGVEdHJV
cCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZG91YmxlRHRyRG93bik6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cHVzaCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cG9wKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpwb2tlKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjpwZWVrKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3Zm
cDY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X2FybTY0KToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3ZmcDMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjp2bW92X2FybTMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2Y3Z0X2Y2NF9z
MzIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRfczMyX2Y2NCk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6dmN2dF91MzJfZjY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjp2Y3Z0X2Y2NF9mMzIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRf
ZjMyX2Y2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Y2x6KToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjphbGlnbik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bG9h
ZEJyYW5jaFRhcmdldCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dm1vdik6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6YWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YW5kMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bHNoaWZ0MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpyc2hpZnQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp1cnNoaWZ0MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y291
bnRMZWFkaW5nWmVyb3MzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb252
ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMy
V2l0aEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
Ojpsb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjpzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnBvcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwdXNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmUpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTo6c3dhcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjpicmFuY2gzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hU
ZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bXVsbDMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OmNvbXBhcmUzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjp0ZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJlbGF0aXZlVGFibGVKdW1wKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjptb3ZlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmFkZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpkaXZE
b3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3ViRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om11bERvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNOjpzcXJ0RG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk06OmFic0RvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpu
ZWdhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29udmVydElu
dDMyVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29udmVydEZs
b2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29udmVydERv
dWJsZVRvRmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoRG91
YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91
YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hUcnVu
Y2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRy
dW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0
cnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKwogMjAxMi0wOC0wOSAgWW9uZyBMaSAgPHlv
bGlAcmltLmNvbT4KIAogICAgICAgICBbUU5YXSBJbXBsZW1lbnQgZ2V0Q1BVVGltZSgpIGZvciBP
UyhRTlgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFz
c2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxl
ci5jcHAKaW5kZXggNTMzNjQwZS4uOTY1NTU1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAgaW50
IEFSTUFzc2VtYmxlcjo6Z2VuSW50KGludCByZWcsIEFSTVdvcmQgaW1tLCBib29sIHBvc2l0aXZl
KQogICAgIH0KIAogICAgIGlmIChwb3NpdGl2ZSkgewotICAgICAgICBtb3ZfcihyZWcsIGltbTEp
OwotICAgICAgICBvcnJfcihyZWcsIHJlZywgaW1tMik7CisgICAgICAgIG1vdihyZWcsIGltbTEp
OworICAgICAgICBvcnIocmVnLCByZWcsIGltbTIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG12
bl9yKHJlZywgaW1tMSk7Ci0gICAgICAgIGJpY19yKHJlZywgcmVnLCBpbW0yKTsKKyAgICAgICAg
bXZuKHJlZywgaW1tMSk7CisgICAgICAgIGJpYyhyZWcsIHJlZywgaW1tMik7CiAgICAgfQogCiAg
ICAgcmV0dXJuIDE7CkBAIC0yMTAsNyArMjEwLDcgQEAgQVJNV29yZCBBUk1Bc3NlbWJsZXI6Omdl
dEltbShBUk1Xb3JkIGltbSwgaW50IHRtcFJlZywgYm9vbCBpbnZlcnQpCiAgICAgaWYgKHRtcCAh
PSBJbnZhbGlkSW1tZWRpYXRlKSB7CiAgICAgICAgIGlmIChpbnZlcnQpCiAgICAgICAgICAgICBy
ZXR1cm4gdG1wIHwgT3AySW52ZXJ0ZWRJbW1lZGlhdGU7Ci0gICAgICAgIG12bl9yKHRtcFJlZywg
dG1wKTsKKyAgICAgICAgbXZuKHRtcFJlZywgdG1wKTsKICAgICAgICAgcmV0dXJuIHRtcFJlZzsK
ICAgICB9CiAKQEAgLTIyNCwxMyArMjI0LDEzIEBAIHZvaWQgQVJNQXNzZW1ibGVyOjptb3ZlSW1t
KEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKICAgICAvLyBEbyBpdCBieSAxIGluc3RydWN0aW9uCiAg
ICAgdG1wID0gZ2V0T3AyKGltbSk7CiAgICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7
Ci0gICAgICAgIG1vdl9yKGRlc3QsIHRtcCk7CisgICAgICAgIG1vdihkZXN0LCB0bXApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgdG1wID0gZ2V0T3AyKH5pbW0pOwogICAgIGlmICh0
bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewotICAgICAgICBtdm5fcihkZXN0LCB0bXApOworICAg
ICAgICBtdm4oZGVzdCwgdG1wKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQyLDEx
ICsyNDIsMTEgQEAgQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0oQVJNV29y
ZCBpbW0sIGludCBkZXN0KQogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQogICAgIEFSTVdv
cmQgdG1wID0gZ2V0SW1tMTZPcDIoaW1tKTsKICAgICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlh
dGUpIHsKLSAgICAgICAgbW92d19yKGRlc3QsIHRtcCk7CisgICAgICAgIG1vdncoZGVzdCwgdG1w
KTsKICAgICAgICAgcmV0dXJuIGRlc3Q7CiAgICAgfQotICAgIG1vdndfcihkZXN0LCBnZXRJbW0x
Nk9wMihpbW0gJiAweGZmZmYpKTsKLSAgICBtb3Z0X3IoZGVzdCwgZ2V0SW1tMTZPcDIoaW1tID4+
IDE2KSk7CisgICAgbW92dyhkZXN0LCBnZXRJbW0xNk9wMihpbW0gJiAweGZmZmYpKTsKKyAgICBt
b3Z0KGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOwogICAgIHJldHVybiBkZXN0OwogI2Vs
c2UKICAgICAvLyBEbyBpdCBieSAyIGluc3RydWN0aW9uCkBAIC0yNTUsNyArMjU1LDcgQEAgQVJN
V29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0
KQogICAgIGlmIChnZW5JbnQoZGVzdCwgfmltbSwgZmFsc2UpKQogICAgICAgICByZXR1cm4gZGVz
dDsKIAotICAgIGxkcl9pbW0oZGVzdCwgaW1tKTsKKyAgICBsZHJJbW1lZGlhdGUoZGVzdCwgaW1t
KTsKICAgICByZXR1cm4gZGVzdDsKICNlbmRpZgogfQpAQCAtMjY2LDIzICsyNjYsMjMgQEAgdm9p
ZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVy
VHlwZSwgUmVnaXN0ZXJJRCBzcmMKIHsKICAgICBpZiAob2Zmc2V0ID49IDApIHsKICAgICAgICAg
aWYgKG9mZnNldCA8PSAweGZmZikKLSAgICAgICAgICAgIGR0cl91KHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBlLCBzcmNE
c3QsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7
Ci0gICAgICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUg
fCAob2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7Ci0gICAgICAgICAgICBkdHJfdSh0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCAmIDB4ZmZmKSk7CisgICAg
ICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNl
dCA+PiAxMikgfCAoMTAgPDwgOCkpOworICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBlLCBz
cmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAg
ICAgICAgICAgZHRyX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6
OlMwKTsKKyAgICAgICAgICAgIGR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJh
c2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKG9mZnNldCA+PSAtMHhmZmYpCi0gICAgICAgICAgICBkdHJfZCh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgLW9mZnNldCk7CisgICAgICAgICAgICBkdHJEb3duKHRyYW5zZmVyVHlwZSwg
c3JjRHN0LCBiYXNlLCAtb2Zmc2V0KTsKICAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZm
ZmZmKSB7Ci0gICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1l
ZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyX2Qo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsICgtb2Zmc2V0ICYgMHhmZmYp
KTsKKyAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUg
fCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOworICAgICAgICAgICAgZHRyRG93bih0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVy
czo6UzApOwotICAgICAgICAgICAgZHRyX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBB
Uk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgIGR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtMjkzLDExICsyOTMsMTEgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVy
MzIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBSZWdpc3RlckkKICAgICBBUk1Xb3Jk
IG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwogCiAgICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAg
ZHRyX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvcDIpOworICAgICAgICBkdHJVcFJl
Z2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvcDIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgb3AyKTsKKyAgICBh
ZGQoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgb3AyKTsKICAgICBkYXRhVHJhbnNmZXIzMih0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0KTsKIH0KIApAQCAtMzA1
LDIzICszMDUsMjMgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjE2KERhdGFUcmFu
c2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmMKIHsKICAgICBpZiAob2Zmc2V0
ID49IDApIHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmKQotICAgICAgICAgICAgZHRyaF91
KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKG9mZnNldCkpOworICAgICAg
ICAgICAgaGFsZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKG9m
ZnNldCkpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmKSB7Ci0gICAgICAgICAg
ICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+
IDgpIHwgKDEyIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cmhfdSh0cmFuc2ZlclR5cGUsIHNyY0Rz
dCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAweGZmKSk7CisgICAgICAg
ICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+
PiA4KSB8ICgxMiA8PCA4KSk7CisgICAgICAgICAgICBoYWxmRHRyVXAodHJhbnNmZXJUeXBlLCBz
cmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdldE9wMkhhbGYob2Zmc2V0ICYgMHhmZikpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6
UzApOwotICAgICAgICAgICAgZHRyaF91cih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJN
UmVnaXN0ZXJzOjpTMCk7CisgICAgICAgICAgICBoYWxmRHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmKQotICAgICAgICAgICAgZHRyaF9kKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsKKyAgICAgICAg
ICAgIGhhbGZEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKC1v
ZmZzZXQpKTsKICAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmYpIHsKLSAgICAgICAg
ICAgIHN1Yl9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8ICgtb2Zmc2V0
ID4+IDgpIHwgKDEyIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cmhfZCh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOworICAg
ICAgICAgICAgc3ViKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8ICgtb2Zm
c2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKKyAgICAgICAgICAgIGhhbGZEdHJEb3duKHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxmKC1vZmZzZXQgJiAweGZm
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVn
aXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBkdHJoX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBi
YXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTMyOSwxMSArMzI5LDExIEBAIHZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJh
bnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjCiB2
b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0
cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpCiB7CiAgICAgaWYgKCFzY2FsZSAm
JiAhb2Zmc2V0KSB7Ci0gICAgICAgIGR0cmhfdXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2Us
IGluZGV4KTsKKyAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3Qs
IGJhc2UsIGluZGV4KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZF9yKEFSTVJl
Z2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBhZGQoQVJNUmVnaXN0
ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwogICAgIGRhdGFUcmFuc2ZlcjE2KHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwogfQogCkBAIC0z
NDIsMzYgKzM0MiwzNiBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyRmxvYXQoRGF0
YVRyYW5zZmVyVHlwZUZsb2F0IHRyYW5zZmVyVHlwZSwgRlBSZWdpcwogICAgIC8vIFZGUCBjYW5u
b3QgZGlyZWN0bHkgYWNjZXNzIG1lbW9yeSB0aGF0IGlzIG5vdCBmb3VyLWJ5dGUtYWxpZ25lZAog
ICAgIGlmICghKG9mZnNldCAmIDB4MykpIHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZiAm
JiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgZmR0cl91KHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBiYXNlLCBvZmZzZXQgPj4gMik7CisgICAgICAgICAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewot
ICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwg
KG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZmR0cl91KHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7Cisg
ICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9m
ZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOworICAgICAgICAgICAgZG91YmxlRHRyVXAodHJhbnNm
ZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgPj4gMikgJiAweGZmKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0
OwogCiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmYgJiYgb2Zmc2V0ID49IDApIHsKLSAgICAg
ICAgICAgIGZkdHJfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwor
ICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zm
c2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChv
ZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgc3ViX3IoQVJN
UmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEg
PDwgOCkpOwotICAgICAgICAgICAgZmR0cl9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdp
c3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CisgICAgICAgICAgICBzdWIoQVJNUmVn
aXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwg
OCkpOworICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAgICAgfQogCiAgICAgbW92
ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6
UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJfdSh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFS
TVJlZ2lzdGVyczo6UzAsIGJhc2UpOworICAgIGRvdWJsZUR0clVwKHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKIH0KIAogdm9pZCBBUk1Bc3NlbWJsZXI6OmJhc2VJ
bmRleFRyYW5zZmVyRmxvYXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHRyYW5zZmVyVHlwZSwgRlBS
ZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQg
c2NhbGUsIGludDMyX3Qgb2Zmc2V0KQogewotICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJh
c2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwg
bHNsKGluZGV4LCBzY2FsZSkpOwogICAgIGRhdGFUcmFuc2ZlckZsb2F0KHRyYW5zZmVyVHlwZSwg
c3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAppbmRleCBhYzkxOGYzLi4xNDhiYzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgK
QEAgLTI2OCwzNTUgKzI2OCwzNTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAoc20gPj4gMSkgfCAoKHNtICYgMHgxKSA8PCA1KSk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGFuZF9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYml0QW5kKGludCByZCwgaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQU5ELCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGFuZHNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGJpdEFuZHMoaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBTkQgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwg
cm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVvcl9yKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZW9yKGludCBy
ZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgRU9SLCByZCwgcm4sIG9w
Mik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVvcnNfcihpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGVvcnMoaW50IHJkLCBp
bnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAg
ICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBFT1IgfCBTZXRDb25kaXRpb25h
bENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHN1Yl9yKGlu
dCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZv
aWQgc3ViKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU1VC
LCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHN1YnNfcihpbnQgcmQs
IGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHN1
YnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIgfCBT
ZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHJzYl9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgcnNiKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgUlNCLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJz
YnNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB2b2lkIHJzYnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCBSU0IgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGFkZF9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYWRkKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9w
MiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgQURELCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGFkZHNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQorICAgICAgICB2b2lkIGFkZHMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBBREQgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkY19yKGludCByZCwgaW50IHJuLCBBUk1Xb3Jk
IG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYWRjKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDLCByZCwgcm4sIG9wMik7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGFkY3NfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGFkY3MoaW50IHJkLCBpbnQgcm4sIEFS
TVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1p
dEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREMgfCBTZXRDb25kaXRpb25hbENvZGVzLCBy
ZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNiY19yKGludCByZCwgaW50
IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgc2JjKGlu
dCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU0JDLCByZCwgcm4s
IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNiY3NfcihpbnQgcmQsIGludCBybiwg
QVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHNiY3MoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTQkMgfCBTZXRDb25kaXRp
b25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJzY19y
KGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAg
IHZvaWQgcnNjKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwg
UlNDLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJzY3NfcihpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lk
IHJzY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBSU0Mg
fCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIHRzdF9yKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB2b2lkIHRzdChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBUU1Qg
fCBTZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgdGVxX3IoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHZvaWQgdGVxKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAg
ICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRFUSB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBjbXBfcihpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCBjbXAoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQ01QIHwg
U2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIGNtbl9yKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIGNtbihpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTU4gfCBT
ZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgb3JyX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCBvcnIoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBPUlIsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgb3Jy
c19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHZvaWQgb3JycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IE9SUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgbW92X3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgbW92KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IE1PViwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7CiAgICAgICAgIH0KIAogI2lmIFdU
Rl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgICAgICB2b2lkIG1vdndfcihpbnQgcmQsIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtb3Z3KGludCByZCwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoKG9wMiB8IDB4ZjBmZmYpID09IDB4ZjBmZmYpOwogICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50KHRvQVJNV29yZChjYykgfCBNT1ZXIHwgUkQocmQpIHwgb3AyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgbW92dF9yKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIG1vdnQoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgob3AyIHwgMHhmMGZmZikgPT0gMHhm
MGZmZik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1PVlQg
fCBSRChyZCkgfCBvcDIpOwogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICB2b2lkIG1vdnNf
cihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBt
b3ZzKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAg
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViB8IFNldENvbmRp
dGlvbmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBiaWNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQorICAgICAgICB2b2lkIGJpYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IEJJQywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBiaWNzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKKyAgICAgICAgdm9pZCBiaWNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgQklDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBtdm5fcihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtdm4oaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgTVZOLCByZCwgQVJNUmVnaXN0ZXJzOjpyMCwgb3AyKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgbXZuc19yKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIG12bnMoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgTVZOIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9w
Mik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG11bF9yKGludCByZCwgaW50IHJuLCBpbnQg
cm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG11bChpbnQgcmQsIGludCBybiwg
aW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBtdWxzX3IoaW50IHJkLCBpbnQgcm4sIGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgbXVscyhpbnQgcmQsIGludCBybiwg
aW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBTZXRDb25kaXRpb25hbENvZGVzIHwgUk4o
cmQpIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbXVsbF9y
KGludCByZGhpLCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIG11bGwoaW50IHJkaGksIGludCByZGxvLCBpbnQgcm4sIGludCBybSwgQ29u
ZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0
b0FSTVdvcmQoY2MpIHwgTVVMTCB8IFJOKHJkaGkpIHwgUkQocmRsbykgfCBSUyhybikgfCBSTShy
bSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2bW92X2Y2NF9yKGludCBkZCwgaW50IGRt
LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92RmxvYXQ2NChpbnQgZGQsIGlu
dCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXREb3Vi
bGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVk1PVl9GNjQsIGRkLCAwLCBk
bSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZhZGRfZjY0X3IoaW50IGRkLCBpbnQgZG4s
IGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmFkZEZsb2F0NjQoaW50
IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkFE
RF9GNjQsIGRkLCBkbiwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2ZGl2X2Y2NF9y
KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lk
IHZkaXZGbG9hdDY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IFZESVZfRjY0LCBkZCwgZG4sIGRtKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgdnN1Yl9mNjRfcihpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBB
TCkKKyAgICAgICAgdm9pZCB2c3ViRmxvYXQ2NChpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lv
bkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWU1VCX0Y2NCwgZGQsIGRuLCBkbSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHZtdWxfZjY0X3IoaW50IGRkLCBpbnQgZG4sIGludCBkbSwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdm11bEZsb2F0NjQoaW50IGRkLCBpbnQg
ZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVt
aXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVk1VTF9GNjQsIGRk
LCBkbiwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y21wX2Y2NF9yKGludCBkZCwg
aW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2Y21wRmxvYXQ2NChpbnQg
ZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVt
aXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNNUF9GNjQsIGRk
LCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZzcXJ0X2Y2NF9yKGludCBkZCwg
aW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2c3FydEZsb2F0NjQoaW50
IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBl
bWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZTUVJUX0Y2NCwg
ZGQsIDAsIGRtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdmFic19mNjRfcihpbnQgZGQs
IGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmFic0Zsb2F0NjQoaW50
IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBl
bWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZBQlNfRjY0LCBk
ZCwgMCwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2bmVnX2Y2NF9yKGludCBkZCwg
aW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bmVnRmxvYXQ2NChpbnQg
ZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVt
aXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVk5FR19GNjQsIGRk
LCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGxkcl9pbW0oaW50IHJkLCBBUk1X
b3JkIGltbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgbGRySW1tZWRpYXRlKGlu
dCByZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQodG9BUk1Xb3JkKGNjKSB8IExvYWRV
aW50MzIgfCBEYXRhVHJhbnNmZXJVcCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBp
bW0sIHRydWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBsZHJfdW5faW1tKGludCByZCwg
QVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGxkclVuaXF1ZUlt
bWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAg
ewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29yZChj
YykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8
IFJEKHJkKSwgaW1tKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyX3UoRGF0YVRyYW5z
ZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0clVwKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5z
ZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0
cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCwgcmQsIHJiLCBvcDIpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBkdHJfdXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJV
cFJlZ2lzdGVyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIs
IGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAg
fCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJkLCByYiwgcm0pOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBkdHJfZChEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50
IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyRG93
bihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3Jk
IG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0
cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwgcmIsIG9wMik7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kcihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5
cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2
b2lkIGR0ckRvd25SZWdpc3RlcihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCBy
ZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IE9wMklz
UmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGR0cmhfdShEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgaGFsZkR0clVwKERh
dGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0
aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCwgcmQsIHJi
LCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJoX3VyKERhdGFUcmFuc2ZlclR5
cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgaGFsZkR0clVwUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJh
bnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFu
c2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCwgcmQsIHJuLCBybSk7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGR0cmhfZChEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwg
aW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgaGFs
ZkR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwg
QVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBl
bWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSwgcmQsIHJiLCBvcDIp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJoX2RyKERhdGFUcmFuc2ZlclR5cGVCIHRy
YW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisg
ICAgICAgIHZvaWQgaGFsZkR0ckRvd25SZWdpc3RlcihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2Zl
clR5cGUsIGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVy
VHlwZSwgcmQsIHJuLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfdShEYXRh
VHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkb3VibGVEdHJVcChEYXRhVHJhbnNmZXJUeXBl
RmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1
KTsKICAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJl
IHN1cHBvcnRlZC4gKi8KICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgRGF0YVRyYW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfZChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlw
ZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCBkb3VibGVEdHJEb3duKERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBpbnQgcmQs
IGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQob3AyIDw9IDB4ZmYgJiYgcmQgPD0gMTUpOwogICAgICAgICAgICAgLyog
T25seSBkMC1kMTUgYW5kIHMwLCBzMiwgczQgLi4uIHMzMCBhcmUgc3VwcG9ydGVkLiAqLwogICAg
ICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCB0eXBlIHwgKHJkIDw8IDEy
KSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHB1c2hfcihpbnQg
cmVnLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBwdXNoKGludCByZWcsIENvbmRp
dGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoQVJNV29yZChyZWcp
IDw9IDB4Zik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IFN0
b3JlVWludDMyIHwgRGF0YVRyYW5zZmVyV3JpdGVCYWNrIHwgUk4oQVJNUmVnaXN0ZXJzOjpzcCkg
fCBSRChyZWcpIHwgMHg0KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcG9wX3IoaW50IHJl
ZywgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgcG9wKGludCByZWcsIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoQVJNV29yZChyZWcpIDw9
IDB4Zik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IChMb2Fk
VWludDMyIF4gRGF0YVRyYW5zZmVyUG9zdFVwZGF0ZSkgfCBEYXRhVHJhbnNmZXJVcCB8IFJOKEFS
TVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CiAgICAgICAgIH0KIAotICAgICAgICBp
bmxpbmUgdm9pZCBwb2tlX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIGlu
bGluZSB2b2lkIHBva2UoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGR0cl9kKFN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OnNwLCAwLCByZWcsIGNj
KTsKKyAgICAgICAgICAgIGR0ckRvd24oU3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6c3AsIDAs
IHJlZywgY2MpOwogICAgICAgICB9CiAKLSAgICAgICAgaW5saW5lIHZvaWQgcGVla19yKGludCBy
ZWcsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICBpbmxpbmUgdm9pZCBwZWVrKGludCByZWcs
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAgICBkdHJfdShMb2FkVWlu
dDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsKKyAgICAgICAgICAgIGR0clVwKExv
YWRVaW50MzIsIHJlZywgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgY2MpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCB2bW92X3ZmcDY0X3IoaW50IHNtLCBpbnQgcnQsIGludCBydDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIHZtb3ZfdmZwNjQoaW50IHNtLCBpbnQgcnQsIGludCBy
dDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocnQg
IT0gcnQyKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVk1P
Vl9WRlA2NCB8IFJOKHJ0MikgfCBSRChydCkgfCAoc20gJiAweGYpIHwgKChzbSAmIDB4MTApIDw8
ICg1IC0gNCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdm1vdl9hcm02NF9yKGludCBy
dCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92
X2FybTY0KGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNT1ZfQVJNNjQgfCBSTihydDIpIHwgUkQocnQpIHwg
KHNtICYgMHhmKSB8ICgoc20gJiAweDEwKSA8PCAoNSAtIDQpKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIHZtb3ZfdmZwMzJfcihpbnQgc24sIGludCBydCwgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgdm1vdl92ZnAzMihpbnQgc24sIGludCBydCwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChydCA8PSAxNSk7CiAgICAgICAgICAg
ICBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZNT1ZfVkZQ
MzIsIHJ0IDw8IDEsIHNuLCAwKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdm1vdl9hcm0z
Ml9yKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92
X2FybTMyKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKHJ0IDw9IDE1KTsKICAgICAgICAgICAgIGVtaXRTaW5nbGVQcmVjaXNp
b25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVk1PVl9BUk0zMiwgcnQgPDwgMSwgc24sIDAp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X2Y2NF9zMzJfcihpbnQgZGQsIGludCBz
bSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF9mNjRfczMyKGludCBkZCwg
aW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KCEoc20gJiAweDEpKTsgLy8gc20gbXVzdCBiZSBkaXZpc2libGUgYnkgMgogICAgICAgICAgICAg
ZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX0Y2NF9T
MzIsIGRkLCAwLCAoc20gPj4gMSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X3Mz
Ml9mNjRfcihpbnQgc2QsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
dmN2dF9zMzJfZjY0KGludCBzZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKCEoc2QgJiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2li
bGUgYnkgMgogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBWQ1ZUX1MzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjRfcihpbnQgc2QsIGludCBkbSwgQ29uZGl0aW9uIGNj
ID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF91MzJfZjY0KGludCBzZCwgaW50IGRtLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCEoc2QgJiAweDEpKTsg
Ly8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNp
c2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX1UzMl9GNjQsIChzZCA+PiAxKSwg
MCwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X2Y2NF9mMzJfcihpbnQgZGQs
IGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF9mNjRfZjMyKGlu
dCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVj
aXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GNjRfRjMyLCBkZCwgMCwgc20p
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X2YzMl9mNjRfcihpbnQgZGQsIGludCBz
bSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF9mMzJfZjY0KGludCBkZCwg
aW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25J
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GMzJfRjY0LCBkZCwgMCwgc20pOwpAQCAt
NjI3LDcgKzYyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50KHRvQVJNV29yZChjYykgfCBWTVJTX0FQU1IpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBjbHpfcihpbnQgcmQsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
Y2x6KGludCByZCwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBDTFogfCBSRChyZCkgfCBSTShy
bSkpOwogICAgICAgICB9CkBAIC03NDIsNyArNzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHdoaWxlICghbV9idWZmZXIuaXNBbGlnbmVkKGFsaWdubWVudCkpCi0gICAgICAgICAg
ICAgICAgbW92X3IoQVJNUmVnaXN0ZXJzOjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7CisgICAgICAg
ICAgICAgICAgbW92KEFSTVJlZ2lzdGVyczo6cjAsIEFSTVJlZ2lzdGVyczo6cjApOwogCiAgICAg
ICAgICAgICByZXR1cm4gbGFiZWwoKTsKICAgICAgICAgfQpAQCAtNzUxLDcgKzc1MSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBlbnN1cmVTcGFjZShzaXplb2Yo
QVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7CiAgICAgICAgICAgICBtX2p1bXBzLmFwcGVuZCht
X2J1ZmZlci5jb2RlU2l6ZSgpIHwgKHVzZUNvbnN0YW50UG9vbCAmIDB4MSkpOwotICAgICAgICAg
ICAgbGRyX3VuX2ltbShyZCwgSW52YWxpZEJyYW5jaFRhcmdldCwgY2MpOworICAgICAgICAgICAg
bGRyVW5pcXVlSW1tZWRpYXRlKHJkLCBJbnZhbGlkQnJhbmNoVGFyZ2V0LCBjYyk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICAgICAgfQogCkBAIC03NjcsMTIgKzc2
NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gREZHIGFzc2VtYmx5IGhlbHBlcnMg
Zm9yIG1vdmluZyBkYXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICAgICAgdm9pZCB2
bW92KFJlZ2lzdGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQogICAg
ICAgICB7Ci0gICAgICAgICAgICB2bW92X2FybTY0X3IocmQxLCByZDIsIHJuKTsKKyAgICAgICAg
ICAgIHZtb3ZfYXJtNjQocmQxLCByZDIsIHJuKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
dm1vdihGUFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4xLCBSZWdpc3RlcklEIHJuMikKICAg
ICAgICAgewotICAgICAgICAgICAgdm1vdl92ZnA2NF9yKHJkLCBybjEsIHJuMik7CisgICAgICAg
ICAgICB2bW92X3ZmcDY0KHJkLCBybjEsIHJuMik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBQ
YXRjaGluZyBoZWxwZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCmluZGV4IGEyNTFhNDMuLjk4ZGMzZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwCkBAIC03NiwyMSArNzYsMjEgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0
aFVuYWxpZ25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXIKICAgICBvcDIg
PSBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSk7CiAKICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gMCAmJiBhZGRyZXNzLm9mZnNl
dCArIDB4MiA8PSAweGZmKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVy
czo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF91KEFS
TUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0
cmhfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCArIDB4Mikp
OworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5iYXNl
LCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyVXAoQVJNQXNzZW1ibGVyOjpMb2Fk
VWludDE2LCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYo
YWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwKEFSTUFzc2Vt
Ymxlcjo6TG9hZFVpbnQxNiwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJN
QXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0ICsgMHgyKSk7CiAgICAgfSBlbHNl
IGlmIChhZGRyZXNzLm9mZnNldCA8IDAgJiYgYWRkcmVzcy5vZmZzZXQgPj0gLTB4ZmYpIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5iYXNlLCBv
cDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX2QoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2
LCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoLWFkZHJl
c3Mub2Zmc2V0KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfZChBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AySGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuaGFsZkR0ckRvd24oQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0LCBBUk1S
ZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoLWFkZHJlc3Mub2Zmc2V0KSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQx
NiwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRP
cDJIYWxmKC1hZGRyZXNzLm9mZnNldCAtIDB4MikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmVJbW0oYWRkcmVzcy5vZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMw
LCBvcDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3VyKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNz
ZW1ibGVyOjpPcDJJbW1lZGlhdGUgfCAweDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3Vy
KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5iYXNl
LCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVy
czo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9wMik7CisgICAgICAgIG1fYXNzZW1ibGVyLmhhbGZE
dHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNl
LCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVy
czo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6T3AySW1tZWRpYXRlIHwgMHgy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6
UzApOwogICAgIH0KLSAgICBtX2Fzc2VtYmxlci5vcnJfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxl
ci5sc2woQVJNUmVnaXN0ZXJzOjpTMCwgMTYpKTsKKyAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwg
ZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTS5oCmluZGV4IDg1ZDBmZmIuLjVhY2NkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKQEAgLTg2LDEyICs4NiwxMiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgZGVzdCwgc3JjKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAogICAg
IHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgb3AxLCBvcDIpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKICAgICB2
b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKQEAgLTEwMywxMyAr
MTAzLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19yKGRlc3QsIGRl
c3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShp
bW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkMzIo
QWJzb2x1dGVBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciksIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBt
X2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6
UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1B
c3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEs
IDApOwogICAgICAgICBhZGQzMihBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsKICAgICB9CiAKQEAg
LTEyMSwzNSArMTIxLDM1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBz
cmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZHNfcihkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1
ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIHNy
YywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19yKGRlc3QsIGRlc3QsIHNyYyk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2
b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYml0QW5kcyhkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAgICAg
dm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lz
dGVyczo6UzAsIHRydWUpOwogICAgICAgICBpZiAodyAmIEFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0
ZWRJbW1lZGlhdGUpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iaWNzX3IoZGVzdCwgZGVzdCwg
dyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJpY3MoZGVzdCwgZGVzdCwgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVk
SW1tZWRpYXRlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kc19y
KGRlc3QsIGRlc3QsIHcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kcyhkZXN0LCBk
ZXN0LCB3KTsKICAgICB9CiAKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1Xb3JkIHcgPSBt
X2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAsIHRydWUpOwog
ICAgICAgICBpZiAodyAmIEFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iaWNzX3IoZGVzdCwgc3JjLCB3ICYgfkFSTUFzc2VtYmxlcjo6
T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhkZXN0
LCBzcmMsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBzcmMsIHcpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kcyhkZXN0LCBzcmMsIHcpOwogICAgIH0KIAogICAg
IHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTYwLDE5ICsxNjAsMTkgQEAgcHVibGljOgogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmQoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQs
IHcpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc2xf
cihzcmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0
LCBtX2Fzc2VtYmxlci5sc2xfcihzcmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAg
ICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc2woZGVzdCwg
aW1tLm1fdmFsdWUgJiAweDFmKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9h
c3NlbWJsZXIubHNsKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAogICAgIHZv
aWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxl
ci5sc2woc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92
cyhkZXN0LCBtX2Fzc2VtYmxlci5sc2woc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKICAgICB9
CiAKICAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0
ZXJJRCBkZXN0KQpAQCAtMTg4LDcgKzE4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBv
cDIgPSB0bXA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIu
bXVsc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVscyhkZXN0LCBv
cDEsIG9wMik7CiAgICAgfQogCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG11bDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBtb3ZlKGltbSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm11bHNfcihkZXN0LCBzcmMsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxl
ci5tdWxzKGRlc3QsIHNyYywgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgfQogCiAgICAgdm9pZCBu
ZWczMihSZWdpc3RlcklEIHNyY0Rlc3QpCkBAIC0yMDksMjIgKzIwOSwyMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fz
c2VtYmxlci5vcnJzKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm9ycnNfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBkZXN0LCBt
X2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9
CiAKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBzcmMs
IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAg
ICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5t
X3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIub3Jyc19yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIub3JycyhkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAgICAgdm9pZCByc2hpZnQzMihSZWdp
c3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yMzUsOSArMjM1LDkgQEAg
cHVibGljOgogICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hp
ZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdyA9IEFS
TUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3Io
QVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOworICAgICAgICBtX2Fzc2VtYmxlci5i
aXRBbmQoQVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5hc3JfcihzcmMsIEFSTVJlZ2lzdGVyczo6
UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5hc3Jfcihz
cmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAgICB2b2lkIHJzaGlmdDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwg
bV9hc3NlbWJsZXIuYXNyKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIuYXNyKHNyYywgaW1tLm1fdmFsdWUgJiAweDFm
KSk7CiAgICAgfQogCiAgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwg
UmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjU4LDI5ICsyNTgsMjkgQEAgcHVibGljOgogICAgIHZvaWQg
dXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAs
IHNoaWZ0QW1vdW50LCB3KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKEFSTVJlZ2lzdGVy
czo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVz
dCwgbV9hc3NlbWJsZXIubHNyX3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyX3Ioc3JjLCBBUk1SZWdpc3RlcnM6
OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1f
YXNzZW1ibGVyLmxzcihkZXN0LCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc3IoZGVzdCwgaW1tLm1fdmFsdWUgJiAweDFm
KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIubHNyKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyKHNyYywgaW1t
Lm1fdmFsdWUgJiAweDFmKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3Vic19yKGRl
c3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgZGVzdCwgc3Jj
KTsKICAgICB9CiAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnNfcihkZXN0LCBkZXN0LCBtX2Fz
c2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3VicyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFs
dWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKQEAgLTI5OCw3ICsyOTgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJzX3IoZGVzdCwgc3JjLCBt
X2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92
YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgeG9yMzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTMxNCw3ICszMTQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
dm5zX3IoZGVzdCwgZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm5zKGRlc3QsIGRl
c3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5lb3JzX3IoZGVzdCwg
ZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7
CiAgICAgfQpAQCAtMzIyLDcgKzMyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHhvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm5z
X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm12bnMoZGVzdCwgc3JjKTsK
ICAgICAgICAgZWxzZSAgICAKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBz
cmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwog
ICAgIH0KQEAgLTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3VudExlYWRpbmda
ZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogI2lmIFdURl9B
Uk1fQVJDSF9BVF9MRUFTVCg1KQotICAgICAgICBtX2Fzc2VtYmxlci5jbHpfcihkZXN0LCBzcmMp
OworICAgICAgICBtX2Fzc2VtYmxlci5jbHooZGVzdCwgc3JjKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTShzcmMpOwogICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7CkBAIC0zOTYsMTUg
KzM5NiwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEFTU0VSVChhZGRyZXNzLm9mZnNldCA+PSAwICYmIGFkZHJl
c3Mub2Zmc2V0IDw9IDI1NSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxl
cjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCiAgICAgRGF0YUxhYmVsMzIgbG9hZDMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGRh
dGFMYWJlbCh0aGlzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3Rl
cnM6OlMwLCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKEFSTUFzc2VtYmxlcjo6TG9h
ZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAg
ICAgICBtX2Fzc2VtYmxlci5kdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICAgICAgcmV0dXJuIGRh
dGFMYWJlbDsKICAgICB9CiAKQEAgLTQxOCwxNyArNDE4LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
RGF0YUxhYmVsQ29tcGFjdCBkYXRhTGFiZWwodGhpcyk7CiAgICAgICAgIEFTU0VSVChpc0NvbXBh
Y3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChhZGRyZXNzLm9mZnNldCkpOwogICAgICAgICBpZiAo
YWRkcmVzcy5vZmZzZXQgPj0gMCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFz
c2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIs
IGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJfZChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3Qs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
ZHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5vZmZzZXQpOwogICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwogICAgIH0KIAogICAgIERh
dGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhp
cyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91cihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBz
cmMsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJl
c3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAg
ICAgfQogCkBAIC00NjYsMjUgKzQ2NiwyNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3JlMzIo
UmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4o
YWRkcmVzcykpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OlN0b3Jl
VWludDMyLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkPihhZGRyZXNzKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIHNyYywgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9p
ZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZD4oYWRkcmVzcykpOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1l
ZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
KSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVy
czo6UzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OlN0b3JlVWlu
dDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpT
MSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBwb3AoUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucG9wX3IoZGVzdCk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnBvcChkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIHB1c2goUmVnaXN0ZXJJ
RCBzcmMpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5wdXNoX3Ioc3JjKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIucHVzaChzcmMpOwogICAgIH0KIAogICAgIHZvaWQgcHVzaChBZGRyZXNzIGFk
ZHJlc3MpCkBAIC01MDcsNyArNTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZShSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNyYyAhPSBkZXN0
KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdihkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgbW92ZShUcnVz
dGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNTE3LDkgKzUxNyw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc3dhcChSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMikKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6UzAsIHJlZzEpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihyZWcxLCByZWcyKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubW92X3IocmVnMiwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dihBUk1SZWdpc3RlcnM6OlMwLCByZWcxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KHJlZzEs
IHJlZzIpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YocmVnMiwgQVJNUmVnaXN0ZXJzOjpTMCk7
CiAgICAgfQogCiAgICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQpAQCAtNTQ5LDcgKzU0OSw3IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJh
bmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQsIGludCB1c2VDb25zdGFudFBvb2wgPSAwKQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuY21wX3IobGVmdCwgcmlnaHQpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXAobGVmdCwg
cmlnaHQpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9u
KGNvbmQpLCB1c2VDb25zdGFudFBvb2wpKTsKICAgICB9CiAKQEAgLTU1Nyw5ICs1NTcsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBBUk1Xb3JkIHRtcCA9IChyaWdodC5tX3ZhbHVlID09IDB4
ODAwMDAwMDApID8gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlIDogbV9hc3NlbWJsZXIu
Z2V0T3AyKC1yaWdodC5tX3ZhbHVlKTsKICAgICAgICAgaWYgKHRtcCAhPSBBUk1Bc3NlbWJsZXI6
OkludmFsaWRJbW1lZGlhdGUpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW5fcihsZWZ0LCB0
bXApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21uKGxlZnQsIHRtcCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKGxlZnQsIG1fYXNzZW1ibGVyLmdldElt
bShyaWdodC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIEFSTVJlZ2lz
dGVyczo6UzApKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRp
dGlvbihjb25kKSwgdXNlQ29uc3RhbnRQb29sKSk7CiAgICAgfQogCkBAIC02MDksNyArNjA5LDcg
QEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQogICAgIHsKICAgICAgICAgQVNTRVJUKChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
dHN0X3IocmVnLCBtYXNrKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgbWFzayk7CiAg
ICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsK
ICAgICB9CiAKQEAgLTYxOCw5ICs2MTgsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAgICAgICAgIEFSTVdvcmQgdyA9IG1f
YXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAsIHRydWUpOwog
ICAgICAgICBpZiAodyAmIEFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iaWNzX3IoQVJNUmVnaXN0ZXJzOjpTMCwgcmVnLCB3ICYgfkFS
TUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmljcyhBUk1SZWdpc3RlcnM6OlMwLCByZWcsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZl
cnRlZEltbWVkaWF0ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRz
dF9yKHJlZywgdyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3QocmVnLCB3KTsKICAgICAg
ICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAg
IH0KIApAQCAtNzA1LDggKzcwNSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBvcDIgPSB0
bXA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVsbF9y
KEFSTVJlZ2lzdGVyczo6UzEsIGRlc3QsIG9wMSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Y21wX3IoQVJNUmVnaXN0ZXJzOjpTMSwgbV9hc3NlbWJsZXIuYXNyKGRlc3QsIDMxKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm11bGwoQVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCwgb3AxLCBvcDIpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5jbXAoQVJNUmVnaXN0ZXJzOjpTMSwgbV9hc3NlbWJsZXIuYXNy
KGRlc3QsIDMxKSk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTc2Myw3ICs3NjMsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJzKGRlc3QsIG9wMSwgb3AyKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KIApAQCAtODA5LDE2ICs4MDks
MTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEp
LCBBUk1Db25kaXRpb24oY29uZCkpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXAobGVmdCwgcmln
aHQpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBh
cmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5j
bXBfcihsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgQVJNUmVnaXN0ZXJz
OjpTMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgQVJNUmVnaXN0
ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKICAgICB9CiAKICAgICB2b2lk
IGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTgzMCwxMSArODMwLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcs
IFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAo
bWFzay5tX3ZhbHVlID09IC0xKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoMCwgcmVn
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcCgwLCByZWcpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci50c3RfcihyZWcsIG1fYXNzZW1ibGVyLmdldEltbShtYXNr
Lm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3Io
ZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29u
ZCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgbV9hc3NlbWJsZXIuZ2V0SW1t
KG1hc2subV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNv
bmQpKTsKICAgICB9CiAKICAgICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtODUx
LDMxICs4NTEsMzEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkX3IoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywgbV9h
c3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQog
CiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVz
cykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpT
MSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpT
MSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUlt
bWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMxLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJl
c3MubV9wdHIpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2Fk
VWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKICAgICAgICAg
YWRkMzIoaW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3Vu
X2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3Mu
bV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpTdG9yZVVp
bnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJl
dF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0
ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91
bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
Lm1fcHRyKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMxLCByZWludGVycHJl
dF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3Rl
cnM6OlMxLCAwKTsKICAgICAgICAgc3ViMzIoaW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9j
YXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3Uo
QVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJz
OjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdp
c3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVn
aXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBsb2Fk
MzIoY29uc3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1i
bGVyOjpMb2FkVWludDMyLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0
X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1B
c3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0K
IAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFk
ZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKQEAgLTg5MywxMCArODkzLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbGF0aXZlVGFibGVKdW1wKFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzY2FsZSA+PSAwICYmIHNjYWxlIDw9IDMxKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpwYywgQVJNUmVnaXN0ZXJzOjpw
YywgbV9hc3NlbWJsZXIubHNsKGluZGV4LCBzY2FsZSkpOworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQoQVJNUmVnaXN0ZXJzOjpwYywgQVJNUmVnaXN0ZXJzOjpwYywgbV9hc3NlbWJsZXIubHNsKGlu
ZGV4LCBzY2FsZSkpOwogCiAgICAgICAgIC8vIE5PUCB0aGUgZGVmYXVsdCBwcmVmZXRjaGluZwot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6
OnIwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KEFSTVJlZ2lzdGVyczo6cjAsIEFSTVJlZ2lz
dGVyczo6cjApOwogICAgIH0KIAogICAgIENhbGwgY2FsbCgpCkBAIC05MTksNyArOTE5LDcgQEAg
cHVibGljOgogICAgIERhdGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5p
dGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBEYXRhTGFiZWxQdHIg
ZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKGRlc3QsIHJl
aW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oaW5pdGlhbFZhbHVlLm1fdmFsdWUpKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKGRlc3QsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJN
V29yZD4oaW5pdGlhbFZhbHVlLm1fdmFsdWUpKTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsK
ICAgICB9CiAKQEAgLTk4NSw3ICs5ODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRG91Ymxl
KGNvbnN0IHZvaWQqIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIEFS
TVJlZ2lzdGVyczo6UzApOwotICAgICAgICBtX2Fzc2VtYmxlci5mZHRyX3UoQVJNQXNzZW1ibGVy
OjpMb2FkRG91YmxlLCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZG91YmxlRHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBBUk1SZWdp
c3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklE
IHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCkBAIC0xMDEyLDE3ICsxMDEyLDE3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci52bW92X2Y2NF9yKGRlc3QsIHNyYyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci52bW92Rmxv
YXQ2NChkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmFk
ZF9mNjRfcihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52YWRkRmxvYXQ2
NChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0
ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjRfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZhZGRGbG9hdDY0KGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKICAgICB2b2lk
IGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMDM5LDEyICsx
MDM5LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmRpdl9mNjRf
cihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52ZGl2RmxvYXQ2NChkZXN0
LCBkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBv
cDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIudmRpdl9mNjRfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNzZW1i
bGVyLnZkaXZGbG9hdDY0KGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKICAgICB2b2lkIGRpdkRv
dWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMDU2LDEyICsxMDU2LDEy
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjRfcihkZXN0
LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52c3ViRmxvYXQ2NChkZXN0LCBkZXN0
LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQ
UmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudnN1Yl9mNjRfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNzZW1ibGVyLnZz
dWJGbG9hdDY0KGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKICAgICB2b2lkIHN1YkRvdWJsZShB
ZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZtdWxfZjY0X3IoZGVzdCwgZGVzdCwg
c3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm11bEZsb2F0NjQoZGVzdCwgZGVzdCwgc3JjKTsK
ICAgICB9CiAKICAgICB2b2lkIG11bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCkBAIC0xMDgzLDI4ICsxMDgzLDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbXVsRG91Ymxl
KEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjRfcihkZXN0LCBvcDEsIG9wMik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnZtdWxGbG9hdDY0KGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAK
ICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52c3FydF9mNjRfcihkZXN0LCBzcmMpOworICAg
ICAgICBtX2Fzc2VtYmxlci52c3FydEZsb2F0NjQoZGVzdCwgc3JjKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBhYnNEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci52YWJzX2Y2NF9yKGRlc3QsIHNyYyk7CisgICAgICAg
IG1fYXNzZW1ibGVyLnZhYnNGbG9hdDY0KGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBu
ZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci52bmVnX2Y2NF9yKGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnZuZWdGbG9hdDY0KGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0
SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci52bW92X3ZmcDMyX3IoZGVzdCA8PCAxLCBzcmMpOwotICAgICAg
ICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9zMzJfcihkZXN0LCBkZXN0IDw8IDEpOworICAgICAgICBt
X2Fzc2VtYmxlci52bW92X3ZmcDMyKGRlc3QgPDwgMSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudmN2dF9mNjRfczMyKGRlc3QsIGRlc3QgPDwgMSk7CiAgICAgfQogCiAgICAgdm9pZCBjb252
ZXJ0SW50MzJUb0RvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMTIy
LDIwICsxMTIyLDIwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29udmVydEZsb2F0VG9Eb3VibGUo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnZjdnRfZjY0X2YzMl9yKGRzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2
dF9mNjRfZjMyKGRzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnREb3VibGVUb0Zs
b2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjRfcihkc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnZjdnRfZjMyX2Y2NChkc3QsIHNyYyk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGUo
RG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmln
aHQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y21wX2Y2NF9yKGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgbV9hc3NlbWJsZXIudmNtcEZsb2F0NjQobGVmdCwgcmlnaHQpOwogICAgICAgICBt
X2Fzc2VtYmxlci52bXJzX2Fwc3IoKTsKICAgICAgICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRp
b25CaXRTcGVjaWFsKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpWUyk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXAoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNz
ZW1ibGVyOjpWUyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChzdGF0aWNf
Y2FzdDxBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25NYXNr
KSkpOwogICAgIH0KIApAQCAtMTE0OCwxMiArMTE0OCwxMiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICB0cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0KTsKIAotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoMSkpOwotICAgICAgICBtX2Fzc2VtYmxlci5iaWNfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1S
ZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fz
c2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpTMCwgZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmljKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CiAKICAgICAgICAgQVJN
V29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIoMHg4MDAwMDAwMCk7CiAgICAgICAgIEFTU0VS
VCh3ICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzAsIHcpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXAo
QVJNUmVnaXN0ZXJzOjpTMCwgdyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVR
IDogQVJNQXNzZW1ibGVyOjpORSkpOwogICAgIH0KIApAQCAtMTE2MSwyNCArMTE2MSwyNCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICB0cnVuY2F0ZURvdWJsZVRvVWludDMyKHNyYywgZGVzdCk7
CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgZGVzdCwgQVJN
QXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmljX3IoQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRl
KDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGRlc3QsIEFS
TUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpYyhBUk1S
ZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MSkpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcChBUk1SZWdp
c3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwogICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVk
ID8gQVJNQXNzZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKICAgICB9CiAKICAgICAv
LyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRl
Z2VyIHJhbmdlLgogICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMy
X2Y2NF9yKEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnZtb3ZfYXJtMzJfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIudmN2dF9zMzJfZjY0KEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzIoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7
CiAgICAgfQogCiAgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfdTMy
X2Y2NF9yKEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnZtb3ZfYXJtMzJfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIudmN2dF91MzJfZjY0KEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzIoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7
CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2Vz
IHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtMTE4NywxMSArMTE4NywxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KICAgICB2b2lkIGJyYW5jaENv
bnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVt
cExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCkKICAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NF9yKEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzJfcihkZXN0LCBBUk1SZWdpc3RlcnM6OlNE
MCA8PCAxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0KEFSTVJlZ2lzdGVyczo6
U0QwIDw8IDEsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfYXJtMzIoZGVzdCwgQVJN
UmVnaXN0ZXJzOjpTRDAgPDwgMSk7CiAKICAgICAgICAgLy8gQ29udmVydCB0aGUgaW50ZWdlciBy
ZXN1bHQgYmFjayB0byBmbG9hdCAmIGNvbXBhcmUgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIC0gaWYg
bm90IGVxdWFsIG9yIHVub3JkZXJlZCAoTmFOKSB0aGVuIGp1bXAuCi0gICAgICAgIG1fYXNzZW1i
bGVyLnZjdnRfZjY0X3MzMl9yKEFSTVJlZ2lzdGVyczo6U0QwLCBBUk1SZWdpc3RlcnM6OlNEMCA8
PCAxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRfczMyKEFSTVJlZ2lzdGVyczo6U0Qw
LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChi
cmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgc3JjLCBBUk1SZWdpc3RlcnM6
OlNEMCkpOwogCiAgICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2
ZSBiZWVuIC0wLjAsIGFuZCAwLjAgZXF1YWxzIHRvIC0wLjAKQEAgLTEyMDAsMTQgKzEyMDAsMTQg
QEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCBy
ZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92
X3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92KEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgwKSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFSTVJlZ2lzdGVyczo6UzAs
IHNjcmF0Y2gpOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCBy
ZWcsIHNjcmF0Y2gpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQ
UmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRl
KDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFSTVJl
Z2lzdGVyczo6UzAsIHNjcmF0Y2gpOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJs
ZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157738</attachid>
            <date>2012-08-10 08:33:06 -0700</date>
            <delta_ts>2012-08-14 03:29:46 -0700</delta_ts>
            <desc>Final patch</desc>
            <filename>0003-renaming-all-functions-third-version.patch</filename>
            <type>text/plain</type>
            <size>67363</size>
            <attacher name="Gabor Ballabas">gaborb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM4MjViNmIuLjExMWEyMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxMi0wOC0xMCAgR2Fib3IgQmFsbGFi
YXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJlbmFtZSBmdW5jdGlvbnMg
aW4gdGhlIEFSTSBwb3J0IG9mIERGRy1KSVQgZm9yIGJldHRlciBjb2RlIHJlYWRhYmlsaXR5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgZnVu
Y3Rpb25zIGluIHRoZSBBUk0gcG9ydCBvZiBERkctSklUIGZvciBiZXR0ZXIgY29kZQorICAgICAg
ICByZWFkYWJpbGl0eSwgYW5kIGZvciBmb2xsb3dpbmcgdGhlIFdlYktpdCBjb2Rpbmcgc3R5bGUg
d2hlcmV2ZXIgaXQgaXMKKyAgICAgICAgcG9zc2libGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpnZW5JbnQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmdldEltbSk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6bW92ZUltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29t
cGxleEltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyMzIpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkYXRhVHJhbnNmZXJGbG9hdCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YmFz
ZUluZGV4VHJhbnNmZXJGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpdEFuZCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6Yml0QW5kcyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW9yKToK
KyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjplb3JzKToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjpzdWIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnN1YnMpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJzYik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cnNicyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjphZGRzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjphZGMpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmFkY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnNiYyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6c2Jjcyk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cnNjKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpy
c2NzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp0c3QpOgorICAgICAgICAoSlNDOjpB
Uk1Bc3NlbWJsZXI6OnRlcSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Y21wKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpjbW4pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om9ycik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6b3Jycyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bW92KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z3
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z0KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjptb3ZzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiaWMpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om12bik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bXZucyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bXVsKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxz
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxsKToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjp2bW92RmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmFk
ZEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZkaXZGbG9hdDY0KToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3ViRmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6dm11bEZsb2F0NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZj
bXBGbG9hdDY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3FydEZsb2F0NjQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZhYnNGbG9hdDY0KToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjp2bmVnRmxvYXQ2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
bGRySW1tZWRpYXRlKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsZHJVbmlxdWVJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmR0clVwKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpkdHJVcFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkdHJEb3duKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJEb3duUmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmhhbGZEdHJVcCk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6aGFsZkR0clVwUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk1B
c3NlbWJsZXI6OmhhbGZEdHJEb3duKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpoYWxm
RHRyRG93blJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkb3VibGVEdHJV
cCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZG91YmxlRHRyRG93bik6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cHVzaCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cG9wKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpwb2tlKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjpwZWVrKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3Zm
cDY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X2FybTY0KToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3ZmcDMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjp2bW92X2FybTMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2Y3Z0X2Y2NF9z
MzIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRfczMyX2Y2NCk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6dmN2dF91MzJfZjY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjp2Y3Z0X2Y2NF9mMzIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRf
ZjMyX2Y2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Y2x6KToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpsc2xSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxl
cjo6bHNyUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmFzclJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjphbGlnbik6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6bG9hZEJyYW5jaFRhcmdldCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxl
cjo6dm1vdik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29y
ZHMpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6YW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bHNoaWZ0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bXVsMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpyc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp1cnNo
aWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3ViMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6Y291bnRMZWFkaW5nWmVyb3MzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpjb252ZXJ0aWJsZUxvYWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6bG9hZDMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTMyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnBvcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpwdXNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmUp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3dhcCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2gzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpicmFuY2hUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6
bXVsbDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFN1YjMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNvbXBhcmUzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0ZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6bG9hZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJlbGF0
aXZlVGFibGVKdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmVXaXRo
UGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZERvdWJsZSk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjptb3ZlRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjpkaXZEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6
c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om11bERvdWJsZSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzcXJ0RG91YmxlKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFic0RvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjpuZWdhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6Y29udmVydEludDMyVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6Y29udmVydEZsb2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6Y29udmVydERvdWJsZVRvRmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YnJhbmNoRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJy
YW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk06OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjp0cnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKwogMjAxMi0wOC0w
OSAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4KIAogICAgICAgICBbUU5YXSBJbXBsZW1lbnQgZ2V0
Q1BVVGltZSgpIGZvciBPUyhRTlgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5jcHAKaW5kZXggNTMzNjQwZS4uOTY1NTU1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApAQCAtMTg3LDEx
ICsxODcsMTEgQEAgaW50IEFSTUFzc2VtYmxlcjo6Z2VuSW50KGludCByZWcsIEFSTVdvcmQgaW1t
LCBib29sIHBvc2l0aXZlKQogICAgIH0KIAogICAgIGlmIChwb3NpdGl2ZSkgewotICAgICAgICBt
b3ZfcihyZWcsIGltbTEpOwotICAgICAgICBvcnJfcihyZWcsIHJlZywgaW1tMik7CisgICAgICAg
IG1vdihyZWcsIGltbTEpOworICAgICAgICBvcnIocmVnLCByZWcsIGltbTIpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG12bl9yKHJlZywgaW1tMSk7Ci0gICAgICAgIGJpY19yKHJlZywgcmVnLCBp
bW0yKTsKKyAgICAgICAgbXZuKHJlZywgaW1tMSk7CisgICAgICAgIGJpYyhyZWcsIHJlZywgaW1t
Mik7CiAgICAgfQogCiAgICAgcmV0dXJuIDE7CkBAIC0yMTAsNyArMjEwLDcgQEAgQVJNV29yZCBB
Uk1Bc3NlbWJsZXI6OmdldEltbShBUk1Xb3JkIGltbSwgaW50IHRtcFJlZywgYm9vbCBpbnZlcnQp
CiAgICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7CiAgICAgICAgIGlmIChpbnZlcnQp
CiAgICAgICAgICAgICByZXR1cm4gdG1wIHwgT3AySW52ZXJ0ZWRJbW1lZGlhdGU7Ci0gICAgICAg
IG12bl9yKHRtcFJlZywgdG1wKTsKKyAgICAgICAgbXZuKHRtcFJlZywgdG1wKTsKICAgICAgICAg
cmV0dXJuIHRtcFJlZzsKICAgICB9CiAKQEAgLTIyNCwxMyArMjI0LDEzIEBAIHZvaWQgQVJNQXNz
ZW1ibGVyOjptb3ZlSW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCkKICAgICAvLyBEbyBpdCBieSAx
IGluc3RydWN0aW9uCiAgICAgdG1wID0gZ2V0T3AyKGltbSk7CiAgICAgaWYgKHRtcCAhPSBJbnZh
bGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG1vdl9yKGRlc3QsIHRtcCk7CisgICAgICAgIG1vdihk
ZXN0LCB0bXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgdG1wID0gZ2V0T3AyKH5p
bW0pOwogICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewotICAgICAgICBtdm5fcihk
ZXN0LCB0bXApOworICAgICAgICBtdm4oZGVzdCwgdG1wKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjQyLDExICsyNDIsMTEgQEAgQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNv
bXBsZXhJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KQogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFT
VCg3KQogICAgIEFSTVdvcmQgdG1wID0gZ2V0SW1tMTZPcDIoaW1tKTsKICAgICBpZiAodG1wICE9
IEludmFsaWRJbW1lZGlhdGUpIHsKLSAgICAgICAgbW92d19yKGRlc3QsIHRtcCk7CisgICAgICAg
IG1vdncoZGVzdCwgdG1wKTsKICAgICAgICAgcmV0dXJuIGRlc3Q7CiAgICAgfQotICAgIG1vdndf
cihkZXN0LCBnZXRJbW0xNk9wMihpbW0gJiAweGZmZmYpKTsKLSAgICBtb3Z0X3IoZGVzdCwgZ2V0
SW1tMTZPcDIoaW1tID4+IDE2KSk7CisgICAgbW92dyhkZXN0LCBnZXRJbW0xNk9wMihpbW0gJiAw
eGZmZmYpKTsKKyAgICBtb3Z0KGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOwogICAgIHJl
dHVybiBkZXN0OwogI2Vsc2UKICAgICAvLyBEbyBpdCBieSAyIGluc3RydWN0aW9uCkBAIC0yNTUs
NyArMjU1LDcgQEAgQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0oQVJNV29y
ZCBpbW0sIGludCBkZXN0KQogICAgIGlmIChnZW5JbnQoZGVzdCwgfmltbSwgZmFsc2UpKQogICAg
ICAgICByZXR1cm4gZGVzdDsKIAotICAgIGxkcl9pbW0oZGVzdCwgaW1tKTsKKyAgICBsZHJJbW1l
ZGlhdGUoZGVzdCwgaW1tKTsKICAgICByZXR1cm4gZGVzdDsKICNlbmRpZgogfQpAQCAtMjY2LDIz
ICsyNjYsMjMgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjMyKERhdGFUcmFuc2Zl
clR5cGVBIHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmMKIHsKICAgICBpZiAob2Zmc2V0ID49
IDApIHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmZikKLSAgICAgICAgICAgIGR0cl91KHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQpOworICAgICAgICAgICAgZHRyVXAodHJh
bnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgICAgIGVsc2UgaWYgKG9mZnNl
dCA8PSAweGZmZmZmKSB7Ci0gICAgICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNl
LCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7Ci0gICAgICAgICAg
ICBkdHJfdSh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCAm
IDB4ZmZmKSk7CisgICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1t
ZWRpYXRlIHwgKG9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOworICAgICAgICAgICAgZHRyVXAo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lz
dGVyczo6UzApOwotICAgICAgICAgICAgZHRyX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNl
LCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgIGR0clVwUmVnaXN0ZXIodHJhbnNmZXJU
eXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKG9mZnNldCA+PSAtMHhmZmYpCi0gICAgICAgICAgICBkdHJfZCh0
cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgLW9mZnNldCk7CisgICAgICAgICAgICBkdHJEb3du
KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCAtb2Zmc2V0KTsKICAgICAgICAgZWxzZSBpZiAo
b2Zmc2V0ID49IC0weGZmZmZmKSB7Ci0gICAgICAgICAgICBzdWJfcihBUk1SZWdpc3RlcnM6OlMw
LCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAg
ICAgICAgICAgZHRyX2QodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsICgt
b2Zmc2V0ICYgMHhmZmYpKTsKKyAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNl
LCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOworICAgICAgICAg
ICAgZHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZz
ZXQgJiAweGZmZikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZz
ZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyX3VyKHRyYW5zZmVyVHlwZSwg
c3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgIGR0clVwUmVnaXN0
ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAg
ICB9CiAgICAgfQogfQpAQCAtMjkzLDExICsyOTMsMTEgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmJh
c2VJbmRleFRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBSZWdpc3Rl
ckkKICAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwogCiAgICAgaWYgKCFvZmZz
ZXQpIHsKLSAgICAgICAgZHRyX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvcDIpOwor
ICAgICAgICBkdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvcDIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFz
ZSwgb3AyKTsKKyAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgb3AyKTsKICAgICBkYXRh
VHJhbnNmZXIzMih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMSwgb2Zmc2V0
KTsKIH0KIApAQCAtMzA1LDIzICszMDUsMjMgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFu
c2ZlcjE2KERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmMKIHsK
ICAgICBpZiAob2Zmc2V0ID49IDApIHsKICAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmKQotICAg
ICAgICAgICAgZHRyaF91KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKG9m
ZnNldCkpOworICAgICAgICAgICAgaGFsZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNl
LCBnZXRPcDJIYWxmKG9mZnNldCkpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZm
KSB7Ci0gICAgICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlh
dGUgfCAob2Zmc2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cmhfdSh0cmFu
c2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAw
eGZmKSk7CisgICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRp
YXRlIHwgKG9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7CisgICAgICAgICAgICBoYWxmRHRyVXAo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdldE9wMkhhbGYob2Zmc2V0
ICYgMHhmZikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbW92ZUltbShvZmZzZXQs
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyaF91cih0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgICAgICBoYWxmRHRyVXBSZWdp
c3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmKQotICAgICAg
ICAgICAgZHRyaF9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZz
ZXQpKTsKKyAgICAgICAgICAgIGhhbGZEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNl
LCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsKICAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZm
ZmYpIHsKLSAgICAgICAgICAgIHN1Yl9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVk
aWF0ZSB8ICgtb2Zmc2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cmhfZCh0
cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0
ICYgMHhmZikpOworICAgICAgICAgICAgc3ViKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMklt
bWVkaWF0ZSB8ICgtb2Zmc2V0ID4+IDgpIHwgKDEyIDw8IDgpKTsKKyAgICAgICAgICAgIGhhbGZE
dHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxm
KC1vZmZzZXQgJiAweGZmKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1t
KG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICBkdHJoX3VyKHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgIGhhbGZE
dHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMw
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTMyOSwxMSArMzI5LDExIEBAIHZvaWQgQVJNQXNz
ZW1ibGVyOjpkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIFJl
Z2lzdGVySUQgc3JjCiB2b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihEYXRh
VHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpCiB7CiAg
ICAgaWYgKCFzY2FsZSAmJiAhb2Zmc2V0KSB7Ci0gICAgICAgIGR0cmhfdXIodHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIGluZGV4KTsKKyAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNm
ZXJUeXBlLCBzcmNEc3QsIGJhc2UsIGluZGV4KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAg
ICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwogICAgIGRh
dGFUcmFuc2ZlcjE2KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZz
ZXQpOwogfQogCkBAIC0zNDIsMzYgKzM0MiwzNiBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRy
YW5zZmVyRmxvYXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHRyYW5zZmVyVHlwZSwgRlBSZWdpcwog
ICAgIC8vIFZGUCBjYW5ub3QgZGlyZWN0bHkgYWNjZXNzIG1lbW9yeSB0aGF0IGlzIG5vdCBmb3Vy
LWJ5dGUtYWxpZ25lZAogICAgIGlmICghKG9mZnNldCAmIDB4MykpIHsKICAgICAgICAgaWYgKG9m
ZnNldCA8PSAweDNmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgZmR0cl91KHRyYW5z
ZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CisgICAgICAgICAgICBkb3VibGVE
dHJVcCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBv
ZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwg
T3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAg
ZmR0cl91KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+
IDIpICYgMHhmZik7CisgICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3Ay
SW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOworICAgICAgICAgICAgZG91
YmxlRHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQg
Pj4gMikgJiAweGZmKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBv
ZmZzZXQgPSAtb2Zmc2V0OwogCiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmYgJiYgb2Zmc2V0
ID49IDApIHsKLSAgICAgICAgICAgIGZkdHJfZCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwg
b2Zmc2V0ID4+IDIpOworICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAg
ICAgICAgc3ViX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNl
dCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZmR0cl9kKHRyYW5zZmVyVHlwZSwg
c3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CisgICAgICAg
ICAgICBzdWIoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+
PiAxMCkgfCAoMTEgPDwgOCkpOworICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7CiAg
ICAgfQogCiAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZF9y
KEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOwotICAgIGZkdHJfdSh0
cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgYWRkKEFSTVJl
Z2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UpOworICAgIGRvdWJsZUR0clVwKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKIH0KIAogdm9pZCBBUk1B
c3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHRy
YW5zZmVyVHlwZSwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KQogewotICAgIGFkZF9yKEFSTVJl
Z2lzdGVyczo6UzEsIGJhc2UsIGxzbChpbmRleCwgc2NhbGUpKTsKKyAgICBhZGQoQVJNUmVnaXN0
ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwogICAgIGRhdGFUcmFuc2ZlckZsb2F0
KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAppbmRleCBh
YzkxOGYzLi5kZDRhZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmgKQEAgLTI2OCwzNTUgKzI2OCwzNTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc20gPj4gMSkgfCAoKHNtICYgMHgxKSA8
PCA1KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFuZF9yKGludCByZCwgaW50IHJuLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYml0QW5kKGludCBy
ZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQU5ELCByZCwgcm4sIG9w
Mik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFuZHNfcihpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGJpdEFuZHMoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBTkQgfCBTZXRDb25kaXRp
b25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVvcl9y
KGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAg
IHZvaWQgZW9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwg
RU9SLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVvcnNfcihpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lk
IGVvcnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBFT1Ig
fCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIHN1Yl9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgc3ViKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgU1VCLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IHN1YnNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIHN1YnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBTVUIgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIHJzYl9yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgcnNiKGludCByZCwgaW50IHJuLCBBUk1Xb3Jk
IG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0
cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNCLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJzYnNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIHJzYnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0
aW9uKHRvQVJNV29yZChjYykgfCBSU0IgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9w
Mik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkZF9yKGludCByZCwgaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYWRkKGludCByZCwgaW50
IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURELCByZCwgcm4sIG9wMik7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkZHNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGFkZHMoaW50IHJkLCBpbnQgcm4s
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREQgfCBTZXRDb25kaXRpb25hbENvZGVz
LCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkY19yKGludCByZCwg
aW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYWRj
KGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDLCByZCwg
cm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFkY3NfcihpbnQgcmQsIGludCBy
biwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGFkY3MoaW50
IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewog
ICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREMgfCBTZXRDb25k
aXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNi
Y19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHZvaWQgc2JjKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgU0JDLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNiY3Nfcihp
bnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2
b2lkIHNiY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBT
QkMgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIHJzY19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCisgICAgICAgIHZvaWQgcnNjKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0
b0FSTVdvcmQoY2MpIHwgUlNDLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHJzY3NfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIHJzY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBSU0MgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHRzdF9yKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIHRzdChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBUU1QgfCBTZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgdGVxX3IoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCisgICAgICAgIHZvaWQgdGVxKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IFRFUSB8IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBjbXBfcihpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgdm9pZCBjbXAoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgQ01QIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGNtbl9yKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQorICAgICAgICB2b2lkIGNtbihpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBDTU4gfCBTZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgb3JyX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBvcnIoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQg
b3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBPUlIsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgb3Jyc19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCisgICAgICAgIHZvaWQgb3JycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IE9SUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3Ay
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbW92X3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgbW92KGludCByZCwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IE1PViwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7CiAgICAg
ICAgIH0KIAogI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgICAgICB2b2lkIG1vdndf
cihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBt
b3Z3KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQoKG9wMiB8IDB4ZjBmZmYpID09IDB4ZjBmZmYpOwogICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNT1ZXIHwgUkQocmQpIHwgb3AyKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbW92dF9yKGludCByZCwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG1vdnQoaW50IHJkLCBBUk1Xb3JkIG9wMiwg
Q29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgob3AyIHwg
MHhmMGZmZikgPT0gMHhmMGZmZik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1X
b3JkKGNjKSB8IE1PVlQgfCBSRChyZCkgfCBvcDIpOwogICAgICAgICB9CiAjZW5kaWYKIAotICAg
ICAgICB2b2lkIG1vdnNfcihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCBtb3ZzKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IE1PViB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBiaWNfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGJpYyhpbnQgcmQsIGludCBybiwg
QVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBl
bWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQywgcmQsIHJuLCBvcDIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBiaWNzX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBiaWNzKGludCByZCwgaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQklDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQs
IHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBtdm5fcihpbnQgcmQsIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtdm4oaW50IHJkLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgTVZOLCByZCwgQVJNUmVnaXN0ZXJzOjpyMCwgb3Ay
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbXZuc19yKGludCByZCwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG12bnMoaW50IHJkLCBBUk1Xb3JkIG9w
MiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgTVZOIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIEFSTVJl
Z2lzdGVyczo6cjAsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG11bF9yKGludCBy
ZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG11bChp
bnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBSTihyZCkgfCBS
UyhybikgfCBSTShybSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBtdWxzX3IoaW50IHJk
LCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgbXVscyhp
bnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBTZXRDb25kaXRp
b25hbENvZGVzIHwgUk4ocmQpIHwgUlMocm4pIHwgUk0ocm0pKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgbXVsbF9yKGludCByZGhpLCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENvbmRp
dGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG11bGwoaW50IHJkaGksIGludCByZGxvLCBpbnQg
cm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
YnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgTVVMTCB8IFJOKHJkaGkpIHwgUkQocmRsbykg
fCBSUyhybikgfCBSTShybSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2bW92X2Y2NF9y
KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92Rmxv
YXQ2NChpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVk1P
Vl9GNjQsIGRkLCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZhZGRfZjY0X3Io
aW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
dmFkZEZsb2F0NjQoaW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgVkFERF9GNjQsIGRkLCBkbiwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCB2ZGl2X2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIHZkaXZGbG9hdDY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRp
dGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9u
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZESVZfRjY0LCBkZCwgZG4sIGRtKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgdnN1Yl9mNjRfcihpbnQgZGQsIGludCBkbiwgaW50IGRtLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2c3ViRmxvYXQ2NChpbnQgZGQsIGludCBk
biwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1p
dERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWU1VCX0Y2NCwgZGQs
IGRuLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZtdWxfZjY0X3IoaW50IGRkLCBp
bnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdm11bEZsb2F0
NjQoaW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgVk1VTF9GNjQsIGRkLCBkbiwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y21w
X2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2
Y21wRmxvYXQ2NChpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgVkNNUF9GNjQsIGRkLCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZzcXJ0
X2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2
c3FydEZsb2F0NjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7
CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IFZTUVJUX0Y2NCwgZGQsIDAsIGRtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdmFi
c19mNjRfcihpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
dmFic0Zsb2F0NjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7
CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IFZBQlNfRjY0LCBkZCwgMCwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2bmVn
X2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2
bmVnRmxvYXQ2NChpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgVk5FR19GNjQsIGRkLCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGxkcl9p
bW0oaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
bGRySW1tZWRpYXRlKGludCByZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAg
ICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnRXaXRoQ29uc3RhbnRJbnQodG9BUk1X
b3JkKGNjKSB8IExvYWRVaW50MzIgfCBEYXRhVHJhbnNmZXJVcCB8IFJOKEFSTVJlZ2lzdGVyczo6
cGMpIHwgUkQocmQpLCBpbW0sIHRydWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBsZHJf
dW5faW1tKGludCByZCwgQVJNV29yZCBpbW0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2
b2lkIGxkclVuaXF1ZUltbWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50
SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1S
ZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
ZHRyX3UoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0clVwKERhdGFUcmFu
c2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCwgcmQsIHJiLCBvcDIp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJfdXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJh
bnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAg
ICAgICAgdm9pZCBkdHJVcFJlZ2lzdGVyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwg
aW50IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwg
RGF0YVRyYW5zZmVyVXAgfCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJkLCByYiwgcm0pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJfZChEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5
cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHZvaWQgZHRyRG93bihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwg
aW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwg
cmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kcihEYXRhVHJhbnNmZXJU
eXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9
IEFMKQorICAgICAgICB2b2lkIGR0ckRvd25SZWdpc3RlcihEYXRhVHJhbnNmZXJUeXBlQSB0cmFu
c2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAg
ICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5z
ZmVyVHlwZSB8IE9wMklzUmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGR0cmhfdShEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGlu
dCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZv
aWQgaGFsZkR0clVwKERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQg
cmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAg
ICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJh
bnNmZXJVcCwgcmQsIHJiLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJoX3Vy
KERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgaGFsZkR0clVwUmVnaXN0ZXIoRGF0YVRy
YW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCwgcmQsIHJuLCBybSk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cmhfZChEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2Zl
clR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisg
ICAgICAgIHZvaWQgaGFsZkR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBp
bnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7
CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlw
ZSwgcmQsIHJiLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkdHJoX2RyKERhdGFU
cmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0
aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgaGFsZkR0ckRvd25SZWdpc3RlcihEYXRhVHJhbnNm
ZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IHRyYW5zZmVyVHlwZSwgcmQsIHJuLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIGZkdHJfdShEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFS
TVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBkb3VibGVEdHJVcChE
YXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAw
eGZmICYmIHJkIDw9IDE1KTsKICAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIs
IHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KICAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dCh0b0FSTVdvcmQoY2MpIHwgRGF0YVRyYW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJO
KHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZkdHJfZChEYXRhVHJhbnNm
ZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgdm9pZCBkb3VibGVEdHJEb3duKERhdGFUcmFuc2ZlclR5cGVGbG9h
dCB0eXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQob3AyIDw9IDB4ZmYgJiYgcmQgPD0gMTUpOwog
ICAgICAgICAgICAgLyogT25seSBkMC1kMTUgYW5kIHMwLCBzMiwgczQgLi4uIHMzMCBhcmUgc3Vw
cG9ydGVkLiAqLwogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCB0
eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHB1c2hfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBwdXNo
KGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoQVJNV29yZChyZWcpIDw9IDB4Zik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9B
Uk1Xb3JkKGNjKSB8IFN0b3JlVWludDMyIHwgRGF0YVRyYW5zZmVyV3JpdGVCYWNrIHwgUk4oQVJN
UmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwgMHg0KTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgcG9wX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgcG9wKGlu
dCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
QVJNV29yZChyZWcpIDw9IDB4Zik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1X
b3JkKGNjKSB8IChMb2FkVWludDMyIF4gRGF0YVRyYW5zZmVyUG9zdFVwZGF0ZSkgfCBEYXRhVHJh
bnNmZXJVcCB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7CiAgICAgICAg
IH0KIAotICAgICAgICBpbmxpbmUgdm9pZCBwb2tlX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIGlubGluZSB2b2lkIHBva2UoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGR0cl9kKFN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6
OnNwLCAwLCByZWcsIGNjKTsKKyAgICAgICAgICAgIGR0ckRvd24oU3RvcmVVaW50MzIsIEFSTVJl
Z2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOwogICAgICAgICB9CiAKLSAgICAgICAgaW5saW5lIHZv
aWQgcGVla19yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICBpbmxpbmUgdm9p
ZCBwZWVrKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBkdHJfdShMb2FkVWludDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsKKyAgICAg
ICAgICAgIGR0clVwKExvYWRVaW50MzIsIHJlZywgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgY2MpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2bW92X3ZmcDY0X3IoaW50IHNtLCBpbnQgcnQsIGlu
dCBydDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHZtb3ZfdmZwNjQoaW50IHNt
LCBpbnQgcnQsIGludCBydDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQocnQgIT0gcnQyKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FS
TVdvcmQoY2MpIHwgVk1PVl9WRlA2NCB8IFJOKHJ0MikgfCBSRChydCkgfCAoc20gJiAweGYpIHwg
KChzbSAmIDB4MTApIDw8ICg1IC0gNCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdm1v
dl9hcm02NF9yKGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAg
ICAgICAgdm9pZCB2bW92X2FybTY0KGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNT1ZfQVJNNjQgfCBSTihy
dDIpIHwgUkQocnQpIHwgKHNtICYgMHhmKSB8ICgoc20gJiAweDEwKSA8PCAoNSAtIDQpKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIHZtb3ZfdmZwMzJfcihpbnQgc24sIGludCBydCwgQ29u
ZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdm1vdl92ZnAzMihpbnQgc24sIGludCBydCwg
Q29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChydCA8PSAx
NSk7CiAgICAgICAgICAgICBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IFZNT1ZfVkZQMzIsIHJ0IDw8IDEsIHNuLCAwKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgdm1vdl9hcm0zMl9yKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBBTCkKKyAg
ICAgICAgdm9pZCB2bW92X2FybTMyKGludCBydCwgaW50IHNuLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJ0IDw9IDE1KTsKICAgICAgICAgICAgIGVt
aXRTaW5nbGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVk1PVl9BUk0zMiwg
cnQgPDwgMSwgc24sIDApOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X2Y2NF9zMzJf
cihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF9m
NjRfczMyKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKCEoc20gJiAweDEpKTsgLy8gc20gbXVzdCBiZSBkaXZpc2libGUgYnkg
MgogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCBWQ1ZUX0Y2NF9TMzIsIGRkLCAwLCAoc20gPj4gMSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCB2Y3Z0X3MzMl9mNjRfcihpbnQgc2QsIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgdmN2dF9zMzJfZjY0KGludCBzZCwgaW50IGRtLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCEoc2QgJiAweDEpKTsgLy8gc2Qg
bXVzdCBiZSBkaXZpc2libGUgYnkgMgogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbklu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX1MzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0p
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjRfcihpbnQgc2QsIGludCBk
bSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF91MzJfZjY0KGludCBzZCwg
aW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KCEoc2QgJiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgogICAgICAgICAgICAg
ZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX1UzMl9G
NjQsIChzZCA+PiAxKSwgMCwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X2Y2
NF9mMzJfcihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
dmN2dF9mNjRfZjMyKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKICAgICAgICAgICAg
IGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GNjRf
RjMyLCBkZCwgMCwgc20pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2Y3Z0X2YzMl9mNjRf
cihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmN2dF9m
MzJfZjY0KGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKICAgICAgICAgICAgIGVtaXRE
b3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GMzJfRjY0LCBk
ZCwgMCwgc20pOwpAQCAtNjI3LDcgKzYyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBWTVJTX0FQU1IpOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBjbHpfcihpbnQgcmQsIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgY2x6KGludCByZCwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBDTFog
fCBSRChyZCkgfCBSTShybSkpOwogICAgICAgICB9CkBAIC02NzQsMjEgKzY3NCwyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZWcgfCAodmFsdWUgPDwgNykgfCAweDQw
OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgbHNsX3IoaW50IHJlZywgaW50
IHNoaWZ0UmVnKQorICAgICAgICBzdGF0aWMgQVJNV29yZCBsc2xSZWdpc3RlcihpbnQgcmVnLCBp
bnQgc2hpZnRSZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVn
aXN0ZXJzOjpwYyk7CiAgICAgICAgICAgICBBU1NFUlQoc2hpZnRSZWcgPD0gQVJNUmVnaXN0ZXJz
OjpwYyk7CiAgICAgICAgICAgICByZXR1cm4gcmVnIHwgKHNoaWZ0UmVnIDw8IDgpIHwgMHgxMDsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzcl9yKGludCByZWcsIGludCBz
aGlmdFJlZykKKyAgICAgICAgc3RhdGljIEFSTVdvcmQgbHNyUmVnaXN0ZXIoaW50IHJlZywgaW50
IHNoaWZ0UmVnKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lz
dGVyczo6cGMpOwogICAgICAgICAgICAgQVNTRVJUKHNoaWZ0UmVnIDw9IEFSTVJlZ2lzdGVyczo6
cGMpOwogICAgICAgICAgICAgcmV0dXJuIHJlZyB8IChzaGlmdFJlZyA8PCA4KSB8IDB4MzA7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQVJNV29yZCBhc3JfcihpbnQgcmVnLCBpbnQgc2hp
ZnRSZWcpCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGFzclJlZ2lzdGVyKGludCByZWcsIGludCBz
aGlmdFJlZykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3Rl
cnM6OnBjKTsKICAgICAgICAgICAgIEFTU0VSVChzaGlmdFJlZyA8PSBBUk1SZWdpc3RlcnM6OnBj
KTsKQEAgLTc0Miw3ICs3NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXNzZW1ibGVy
TGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUg
KCFtX2J1ZmZlci5pc0FsaWduZWQoYWxpZ25tZW50KSkKLSAgICAgICAgICAgICAgICBtb3ZfcihB
Uk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKKyAgICAgICAgICAgICAgICBtb3Yo
QVJNUmVnaXN0ZXJzOjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7CiAKICAgICAgICAgICAgIHJldHVy
biBsYWJlbCgpOwogICAgICAgICB9CkBAIC03NTEsNyArNzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIGVuc3VyZVNwYWNlKHNpemVvZihBUk1Xb3JkKSwgc2l6
ZW9mKEFSTVdvcmQpKTsKICAgICAgICAgICAgIG1fanVtcHMuYXBwZW5kKG1fYnVmZmVyLmNvZGVT
aXplKCkgfCAodXNlQ29uc3RhbnRQb29sICYgMHgxKSk7Ci0gICAgICAgICAgICBsZHJfdW5faW1t
KHJkLCBJbnZhbGlkQnJhbmNoVGFyZ2V0LCBjYyk7CisgICAgICAgICAgICBsZHJVbmlxdWVJbW1l
ZGlhdGUocmQsIEludmFsaWRCcmFuY2hUYXJnZXQsIGNjKTsKICAgICAgICAgICAgIHJldHVybiBt
X2J1ZmZlci5sYWJlbCgpOwogICAgICAgICB9CiAKQEAgLTc2NywxMiArNzY3LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAvLyBERkcgYXNzZW1ibHkgaGVscGVycyBmb3IgbW92aW5nIGRh
dGEgYmV0d2VlbiBmcCBhbmQgcmVnaXN0ZXJzLgogICAgICAgICB2b2lkIHZtb3YoUmVnaXN0ZXJJ
RCByZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHZtb3ZfYXJtNjRfcihyZDEsIHJkMiwgcm4pOworICAgICAgICAgICAgdm1vdl9hcm02
NChyZDEsIHJkMiwgcm4pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCB2bW92KEZQUmVnaXN0
ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQogICAgICAgICB7Ci0gICAg
ICAgICAgICB2bW92X3ZmcDY0X3IocmQsIHJuMSwgcm4yKTsKKyAgICAgICAgICAgIHZtb3ZfdmZw
NjQocmQsIHJuMSwgcm4yKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFBhdGNoaW5nIGhlbHBl
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHAKaW5kZXggYTI1MWE0My4uOThkYzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKQEAgLTc2LDIx
ICs3NiwyMSBAQCB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoVW5hbGlnbmVkSGFs
ZldvcmRzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcgogICAgIG9wMiA9IG1fYXNzZW1ibGVy
LmxzbChhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpKTsKIAog
ICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwICYmIGFkZHJlc3Mub2Zmc2V0ICsgMHgyIDw9IDB4
ZmYpIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVz
cy5iYXNlLCBvcDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX3UoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDE2LCBkZXN0LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhh
bGYoYWRkcmVzcy5vZmZzZXQpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF91KEFSTUFzc2Vt
Ymxlcjo6TG9hZFVpbnQxNiwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJN
QXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0ICsgMHgyKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3Qs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNl
dCkpOworICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWlu
dDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkhhbGYoYWRkcmVzcy5vZmZzZXQgKyAweDIpKTsKICAgICB9IGVsc2UgaWYgKGFkZHJlc3Mu
b2Zmc2V0IDwgMCAmJiBhZGRyZXNzLm9mZnNldCA+PSAtMHhmZikgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmR0cmhfZChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZigtYWRkcmVzcy5vZmZzZXQpKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9kKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxm
KC1hZGRyZXNzLm9mZnNldCAtIDB4MikpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVn
aXN0ZXJzOjpTMCwgYWRkcmVzcy5iYXNlLCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci5oYWxm
RHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAs
IEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZigtYWRkcmVzcy5vZmZzZXQpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuaGFsZkR0ckRvd24oQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdpc3Rl
cnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoLWFkZHJl
c3Mub2Zmc2V0IC0gMHgyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92
ZUltbShhZGRyZXNzLm9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9wMik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmR0cmhfdXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGRf
cihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6Ok9wMklt
bWVkaWF0ZSB8IDB4Mik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfdXIoQVJNQXNzZW1ibGVy
OjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVy
czo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVn
aXN0ZXJzOjpTMCwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwUmVnaXN0ZXIo
QVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVy
czo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpPcDJJbW1lZGlhdGUgfCAweDIpOworICAgICAgICBt
X2Fzc2VtYmxlci5oYWxmRHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFS
TVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgfQot
ICAgIG1fYXNzZW1ibGVyLm9ycl9yKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmxzbChBUk1SZWdp
c3RlcnM6OlMwLCAxNikpOworICAgIG1fYXNzZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBtX2Fzc2Vt
Ymxlci5sc2woQVJNUmVnaXN0ZXJzOjpTMCwgMTYpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXgg
ODVkMGZmYi4uNzcyYjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApAQCAtODYsMTIgKzg2LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHNfcihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fz
c2VtYmxlci5hZGRzKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQzMihS
ZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZHMoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQgYWRkMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQpAQCAtMTAzLDEzICsxMDMsMTMgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJs
ZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBB
Uk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQzMihBYnNvbHV0ZUFkZHJl
c3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoc3JjLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0
cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0
ZXJzOjpTMSwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9h
ZFVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CiAgICAgICAg
IGFkZDMyKEFSTVJlZ2lzdGVyczo6UzEsIGRlc3QpOwogICAgIH0KIApAQCAtMTIxLDM1ICsxMjEs
MzUgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRk
c19yKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3Rl
cnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgc3JjLCBtX2Fzc2VtYmxl
ci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAgICB2
b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYml0QW5kcyhkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgYW5kMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5iaXRBbmRzKGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKICAgICB2b2lkIGFuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVdvcmQg
dyA9IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCwgdHJ1
ZSk7CiAgICAgICAgIGlmICh3ICYgQVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSkK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3NfcihkZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2Vt
Ymxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmlj
cyhkZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgZGVzdCwg
dyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHcpOwogICAg
IH0KIAogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdyA9IG1fYXNzZW1ibGVyLmdl
dEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCwgdHJ1ZSk7CiAgICAgICAgIGlmICh3
ICYgQVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJpY3NfcihkZXN0LCBzcmMsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZElt
bWVkaWF0ZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iaWNzKGRlc3QsIHNyYywgdyAmIH5B
Uk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kc19yKGRlc3QsIHNyYywgdyk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iaXRBbmRzKGRlc3QsIHNyYywgdyk7CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQz
MihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNjAsMTkgKzE2
MCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29y
ZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDB4MWYpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRfcihBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJpdEFuZChBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzbF9yKHNyYywgQVJNUmVn
aXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVy
LmxzbFJlZ2lzdGVyKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQg
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzbChkZXN0LCBpbW0ubV92
YWx1ZSAmIDB4MWYpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxl
ci5sc2woZGVzdCwgaW1tLm1fdmFsdWUgJiAweDFmKSk7CiAgICAgfQogCiAgICAgdm9pZCBsc2hp
ZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzbChz
cmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3Qs
IG1fYXNzZW1ibGVyLmxzbChzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAogICAg
IHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRl
c3QpCkBAIC0xODgsNyArMTg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG9wMiA9IHRt
cDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxzX3Io
ZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci5tdWxzKGRlc3QsIG9wMSwgb3Ay
KTsKICAgICB9CiAKICAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1vdmUoaW1tLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXVsc19y
KGRlc3QsIHNyYywgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bHMo
ZGVzdCwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICB9CiAKICAgICB2b2lkIG5lZzMyKFJl
Z2lzdGVySUQgc3JjRGVzdCkKQEAgLTIwOSwyMiArMjA5LDIyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIub3Jyc19yKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9ycnMoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIub3Jy
c19yKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0
ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIGRlc3QsIG1fYXNzZW1i
bGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAg
IHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIub3Jyc19yKGRlc3QsIHNyYywgbV9hc3Nl
bWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9ycnMoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUs
IEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5vcnJzX3IoZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci5vcnJz
KGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKICAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQg
c2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTIzNSw5ICsyMzUsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3Vu
dCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDB4MWYpOwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1SZWdp
c3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZChB
Uk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmFzcl9yKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzclJlZ2lzdGVyKHNy
YywgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0LCBt
X2Fzc2VtYmxlci5hc3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5hc3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYp
KTsKICAgICB9CiAKICAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBS
ZWdpc3RlcklEIGRlc3QpCkBAIC0yNTgsMjkgKzI1OCwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kX3IoQVJNUmVnaXN0ZXJzOjpTMCwg
c2hpZnRBbW91bnQsIHcpOworICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmQoQVJNUmVnaXN0ZXJz
OjpTMCwgc2hpZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnNfcihkZXN0
LCBtX2Fzc2VtYmxlci5sc3JfcihzcmMsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc3JSZWdpc3RlcihzcmMsIEFSTVJlZ2lz
dGVyczo6UzApKTsKICAgICB9CiAKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVz
dCwgbV9hc3NlbWJsZXIubHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOworICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzcihkZXN0LCBpbW0ubV92YWx1ZSAm
IDB4MWYpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4
MWYpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc3Ioc3Jj
LCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKICAgICB9CiAKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJz
X3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBkZXN0
LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3Vic19yKGRlc3QsIGRlc3Qs
IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0u
bV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnNfcihkZXN0LCBz
cmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJzKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGlt
bS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCB4b3IzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm12bnNfcihkZXN0LCBkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm12bnMoZGVz
dCwgZGVzdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihk
ZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6
UzApKTsKICAgICB9CkBAIC0zMjIsNyArMzIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgeG9yMzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm12bnNfcihkZXN0LCBzcmMpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubXZucyhkZXN0LCBz
cmMpOwogICAgICAgICBlbHNlICAgIAogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9yc19yKGRl
c3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMw
KSk7CiAgICAgfQpAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvdW50TGVh
ZGluZ1plcm9zMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAjaWYg
V1RGX0FSTV9BUkNIX0FUX0xFQVNUKDUpCi0gICAgICAgIG1fYXNzZW1ibGVyLmNsel9yKGRlc3Qs
IHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNseihkZXN0LCBzcmMpOwogI2Vsc2UKICAgICAg
ICAgVU5VU0VEX1BBUkFNKHNyYyk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShkZXN0KTsKQEAgLTM5
NiwxNSArMzk2LDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKICAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYg
YWRkcmVzcy5vZmZzZXQgPD0gMjU1KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNz
ZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICBEYXRhTGFiZWwzMiBsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgRGF0YUxhYmVs
MzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJl
Z2lzdGVyczo6UzAsIDApOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1ibGVy
OjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgMCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWlu
dDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICByZXR1
cm4gZGF0YUxhYmVsOwogICAgIH0KIApAQCAtNDE4LDE3ICs0MTgsMTcgQEAgcHVibGljOgogICAg
ICAgICBEYXRhTGFiZWxDb21wYWN0IGRhdGFMYWJlbCh0aGlzKTsKICAgICAgICAgQVNTRVJUKGlz
Q29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KSk7CiAgICAgICAg
IGlmIChhZGRyZXNzLm9mZnNldCA+PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3Uo
QVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zm
c2V0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmR0cl9kKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5kdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLm9mZnNldCk7CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCiAg
ICAgRGF0YUxhYmVsMzIgc3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBz
cmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGRhdGFMYWJl
bCh0aGlzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMw
LCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3VyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBt
X2Fzc2VtYmxlci5kdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywg
YWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJl
bDsKICAgICB9CiAKQEAgLTQ2NiwyNSArNDY2LDI1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3Rv
cmUzMihSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIHNyYywgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1i
bGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAg
ICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnBy
ZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1
ZUltbWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFk
ZHJlc3MpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92YWx1ZSwgQVJNUmVn
aXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3Rv
cmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3Rl
cnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lkIHBvcChSZWdp
c3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5wb3BfcihkZXN0KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIucG9wKGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgcHVzaChSZWdp
c3RlcklEIHNyYykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2hfcihzcmMpOworICAg
ICAgICBtX2Fzc2VtYmxlci5wdXNoKHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBwdXNoKEFkZHJl
c3MgYWRkcmVzcykKQEAgLTUwNyw3ICs1MDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc3JjICE9
IGRlc3QpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBzcmMpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBtb3Zl
KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC01MTcsOSArNTE3LDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcy
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJzOjpTMCwgcmVn
MSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZzEsIHJlZzIpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZfcihyZWcyLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92KEFSTVJlZ2lzdGVyczo6UzAsIHJlZzEpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Yo
cmVnMSwgcmVnMik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihyZWcyLCBBUk1SZWdpc3RlcnM6
OlMwKTsKICAgICB9CiAKICAgICB2b2lkIHNpZ25FeHRlbmQzMlRvUHRyKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCkBAIC01NDksNyArNTQ5LDcgQEAgcHVibGljOgogCiAgICAgSnVt
cCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5jbXBfcihsZWZ0LCByaWdodCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcChs
ZWZ0LCByaWdodCk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25k
aXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwogICAgIH0KIApAQCAtNTU3LDkgKzU1Nyw5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdG1wID0gKHJpZ2h0Lm1fdmFsdWUg
PT0gMHg4MDAwMDAwMCkgPyBBUk1Bc3NlbWJsZXI6OkludmFsaWRJbW1lZGlhdGUgOiBtX2Fzc2Vt
Ymxlci5nZXRPcDIoLXJpZ2h0Lm1fdmFsdWUpOwogICAgICAgICBpZiAodG1wICE9IEFSTUFzc2Vt
Ymxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbl9yKGxl
ZnQsIHRtcCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW4obGVmdCwgdG1wKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIu
Z2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgQVJN
UmVnaXN0ZXJzOjpTMCkpOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJN
Q29uZGl0aW9uKGNvbmQpLCB1c2VDb25zdGFudFBvb2wpKTsKICAgICB9CiAKQEAgLTYwOSw3ICs2
MDksNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCiAgICAgewogICAgICAgICBBU1NF
UlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci50c3RfcihyZWcsIG1hc2spOworICAgICAgICBtX2Fzc2VtYmxlci50c3QocmVnLCBtYXNr
KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25k
KSkpOwogICAgIH0KIApAQCAtNjE4LDkgKzYxOCw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgQVJNV29yZCB3
ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKG1hc2subV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCwgdHJ1
ZSk7CiAgICAgICAgIGlmICh3ICYgQVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSkK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3NfcihBUk1SZWdpc3RlcnM6OlMwLCByZWcsIHcg
JiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iaWNzKEFSTVJlZ2lzdGVyczo6UzAsIHJlZywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9w
MkludmVydGVkSW1tZWRpYXRlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudHN0X3IocmVnLCB3KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHcpOwog
ICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7
CiAgICAgfQogCkBAIC03MDUsOCArNzA1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG9w
MiA9IHRtcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5t
dWxsX3IoQVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCwgb3AxLCBvcDIpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXBfcihBUk1SZWdpc3RlcnM6OlMxLCBtX2Fzc2VtYmxlci5hc3IoZGVzdCwgMzEpKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIubXVsbChBUk1SZWdpc3RlcnM6OlMxLCBkZXN0LCBvcDEsIG9w
Mik7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcChBUk1SZWdpc3RlcnM6OlMxLCBtX2Fzc2VtYmxl
ci5hc3IoZGVzdCwgMzEpKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJ
RCBkZXN0KQpAQCAtNzYzLDcgKzc2Myw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN1YjMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykg
fHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgb3AxLCBvcDIpOwogICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCkBAIC04MDksMTYg
KzgwOSwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgcmlnaHQpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkp
OwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0
LCByaWdodCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQg
Y29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmNtcF9yKGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShyaWdodC5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxl
cjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY21wKGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShyaWdodC5tX3ZhbHVlLCBBUk1S
ZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNz
ZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwogICAgIH0KIAogICAg
IHZvaWQgY29tcGFyZTgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtODMwLDExICs4MzAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IHJlZywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcigw
LCByZWcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKDAsIHJlZyk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdF9yKHJlZywgbV9hc3NlbWJsZXIuZ2V0SW1t
KG1hc2subV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZfcihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlv
bihjb25kKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci50c3QocmVnLCBtX2Fzc2VtYmxlci5n
ZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRp
b24oY29uZCkpOwogICAgIH0KIAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCkBA
IC04NTEsMzEgKzg1MSwzMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5hZGRfcihkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1
ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVzdCwgc3Jj
LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAg
ICB9CiAKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3Rl
cnM6OlMxLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV9wdHIpKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3Rl
cnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyVW5p
cXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4o
YWRkcmVzcy5tX3B0cikpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6
OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwogICAg
ICAgICBhZGQzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRk
cmVzcy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OlN0
b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOworICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1S
ZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMxLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFk
ZHJlc3MubV9wdHIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOworICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJl
Z2lzdGVyczo6UzEsIDApOwogICAgICAgICBzdWIzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJw
cmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5k
dHJfdShBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdp
c3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFS
TVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikp
OworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBB
Uk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKICAgICB9CiAKICAgICB2b2lk
IGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0
X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1B
c3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRl
cnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVw
KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29s
dXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAtODkzLDEwICs4OTMsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0gMzEp
OwotICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OnBjLCBBUk1SZWdpc3Rl
cnM6OnBjLCBtX2Fzc2VtYmxlci5sc2woaW5kZXgsIHNjYWxlKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZChBUk1SZWdpc3RlcnM6OnBjLCBBUk1SZWdpc3RlcnM6OnBjLCBtX2Fzc2VtYmxlci5s
c2woaW5kZXgsIHNjYWxlKSk7CiAKICAgICAgICAgLy8gTk9QIHRoZSBkZWZhdWx0IHByZWZldGNo
aW5nCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6cjAsIEFSTVJlZ2lz
dGVyczo6cjApOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpyMCwgQVJN
UmVnaXN0ZXJzOjpyMCk7CiAgICAgfQogCiAgICAgQ2FsbCBjYWxsKCkKQEAgLTkxOSw3ICs5MTks
NyBAQCBwdWJsaWM6CiAgICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0
ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIERhdGFMYWJl
bFB0ciBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oZGVz
dCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihpbml0aWFsVmFsdWUubV92YWx1ZSkpOworICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoZGVzdCwgcmVpbnRlcnByZXRfY2Fz
dDxBUk1Xb3JkPihpbml0aWFsVmFsdWUubV92YWx1ZSkpOwogICAgICAgICByZXR1cm4gZGF0YUxh
YmVsOwogICAgIH0KIApAQCAtOTg1LDcgKzk4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRE
b3VibGUoY29uc3Qgdm9pZCogYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3Mp
KSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZkdHJfdShBUk1Bc3Nl
bWJsZXI6OkxvYWREb3VibGUsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBt
X2Fzc2VtYmxlci5kb3VibGVEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWREb3VibGUsIGRlc3QsIEFS
TVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKQEAgLTEwMTIsMTcgKzEwMTIsMTcgQEAgcHVi
bGljOgogICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnZtb3ZfZjY0X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZt
b3ZGbG9hdDY0KGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci52YWRkX2Y2NF9yKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZhZGRG
bG9hdDY0KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGREb3VibGUoRlBS
ZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci52YWRkX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudmFkZEZsb2F0NjQoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAg
IHZvaWQgYWRkRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTEwMzks
MTIgKzEwMzksMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52ZGl2
X2Y2NF9yKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZkaXZGbG9hdDY0
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3Rl
cklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci52ZGl2X2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIudmRpdkZsb2F0NjQoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQg
ZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTEwNTYsMTIgKzEw
NTYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52c3ViX2Y2NF9y
KGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZzdWJGbG9hdDY0KGRlc3Qs
IGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9w
MSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci52c3ViX2Y2NF9yKGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudnN1YkZsb2F0NjQoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQgc3ViRG91
YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTEwNzIsNyArMTA3Miw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjRfcihkZXN0LCBk
ZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bXVsRmxvYXQ2NChkZXN0LCBkZXN0LCBz
cmMpOwogICAgIH0KIAogICAgIHZvaWQgbXVsRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKQEAgLTEwODMsMjggKzEwODMsMjggQEAgcHVibGljOgogCiAgICAgdm9pZCBtdWxE
b3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52bXVsX2Y2NF9yKGRlc3QsIG9wMSwgb3Ay
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm11bEZsb2F0NjQoZGVzdCwgb3AxLCBvcDIpOwogICAg
IH0KIAogICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzcXJ0X2Y2NF9yKGRlc3QsIHNyYyk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnZzcXJ0RmxvYXQ2NChkZXN0LCBzcmMpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhYnNfZjY0X3IoZGVzdCwgc3JjKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudmFic0Zsb2F0NjQoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2
b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZuZWdfZjY0X3IoZGVzdCwgc3JjKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIudm5lZ0Zsb2F0NjQoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGNv
bnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZtb3ZfdmZwMzJfcihkZXN0IDw8IDEsIHNyYyk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMl9yKGRlc3QsIGRlc3QgPDwgMSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3ZfdmZwMzIoZGVzdCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fz
c2VtYmxlci52Y3Z0X2Y2NF9zMzIoZGVzdCwgZGVzdCA8PCAxKTsKICAgICB9CiAKICAgICB2b2lk
IGNvbnZlcnRJbnQzMlRvRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAg
LTExMjIsMjAgKzExMjIsMjAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb252ZXJ0RmxvYXRUb0Rv
dWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIudmN2dF9mNjRfZjMyX3IoZHN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxl
ci52Y3Z0X2Y2NF9mMzIoZHN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydERvdWJs
ZVRvRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnZjdnRfZjMyX2Y2NF9yKGRzdCwgc3JjKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIudmN2dF9mMzJfZjY0KGRzdCwgc3JjKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERv
dWJsZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJ
RCByaWdodCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjbXBfZjY0X3IobGVmdCwgcmln
aHQpOworICAgICAgICBtX2Fzc2VtYmxlci52Y21wRmxvYXQ2NChsZWZ0LCByaWdodCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnZtcnNfYXBzcigpOwogICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNv
bmRpdGlvbkJpdFNwZWNpYWwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihBUk1SZWdp
c3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OlZTKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBB
Uk1Bc3NlbWJsZXI6OlZTKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKHN0
YXRpY19jYXN0PEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kICYgfkRvdWJsZUNvbmRpdGlv
bk1hc2spKSk7CiAgICAgfQogCkBAIC0xMTQ4LDEyICsxMTQ4LDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwogCi0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgxKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpY19yKEFSTVJlZ2lzdGVyczo6UzAs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWMoQVJNUmVnaXN0ZXJzOjpTMCwg
QVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKIAogICAgICAg
ICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsKICAgICAgICAg
QVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJzOjpTMCwgdyk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmNtcChBUk1SZWdpc3RlcnM6OlMwLCB3KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuam1wKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEFSTUFzc2VtYmxl
cjo6RVEgOiBBUk1Bc3NlbWJsZXI6Ok5FKSk7CiAgICAgfQogCkBAIC0xMTYxLDI0ICsxMTYxLDI0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHRydW5jYXRlRG91YmxlVG9VaW50MzIoc3JjLCBk
ZXN0KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBkZXN0
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOwotICAgICAgICBtX2Fzc2VtYmxlci5iaWNf
cihBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpTMCwgZGVz
dCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmlj
KEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgxKSk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wX3IoQVJNUmVnaXN0ZXJzOjpTMCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wKEFS
TVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAgICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVG
YWlsZWQgPyBBUk1Bc3NlbWJsZXI6OkVRIDogQVJNQXNzZW1ibGVyOjpORSkpOwogICAgIH0KIAog
ICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhl
IGludGVnZXIgcmFuZ2UuCiAgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2
dF9zMzJfZjY0X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOworICAgICAg
ICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwgc3JjKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8
PCAxKTsKICAgICB9CiAKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2
dF91MzJfZjY0X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOworICAgICAg
ICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9mNjQoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwgc3JjKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBBUk1SZWdpc3RlcnM6OlNEMCA8
PCAxKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBw
bGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCkBAIC0xMTg3LDExICsxMTg3LDExIEBAIHB1Ymxp
YzoKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgogICAgIHZvaWQgYnJh
bmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQgZnBUZW1wKQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudmN2dF9zMzJfZjY0X3IoQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSwg
c3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMl9yKGRlc3QsIEFSTVJlZ2lzdGVy
czo6U0QwIDw8IDEpOworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoQVJNUmVnaXN0
ZXJzOjpTRDAgPDwgMSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0
LCBBUk1SZWdpc3RlcnM6OlNEMCA8PCAxKTsKIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbnRl
Z2VyIHJlc3VsdCBiYWNrIHRvIGZsb2F0ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUg
LSBpZiBub3QgZXF1YWwgb3IgdW5vcmRlcmVkIChOYU4pIHRoZW4ganVtcC4KLSAgICAgICAgbV9h
c3NlbWJsZXIudmN2dF9mNjRfczMyX3IoQVJNUmVnaXN0ZXJzOjpTRDAsIEFSTVJlZ2lzdGVyczo6
U0QwIDw8IDEpOworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9zMzIoQVJNUmVnaXN0ZXJz
OjpTRDAsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBw
ZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBzcmMsIEFSTVJlZ2lz
dGVyczo6U0QwKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdo
dCBoYXZlIGJlZW4gLTAuMCwgYW5kIDAuMCBlcXVhbHMgdG8gLTAuMApAQCAtMTIwMCwxNCArMTIw
MCwxNCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3Rl
cklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDApKTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0ZXJz
OjpTMCwgc2NyYXRjaCk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1
YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JO
YU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpTMCwgQVJN
QXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUo
QVJNUmVnaXN0ZXJzOjpTMCwgc2NyYXRjaCk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUo
RG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="167688"
          type_id="1"
          status="-"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="167689"
          type_id="3"
          status="-"
          setter="zherczeg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158278</attachid>
            <date>2012-08-14 03:29:46 -0700</date>
            <delta_ts>2012-08-14 04:28:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0003-renaming-all-functions-final.patch</filename>
            <type>text/plain</type>
            <size>67281</size>
            <attacher name="Gabor Ballabas">gaborb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcxODgxMDguLjVjZDFiNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxMi0wOC0xNCAgR2Fib3IgQmFsbGFi
YXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJlbmFtZSBmdW5jdGlvbnMg
aW4gdGhlIEFSTSBwb3J0IG9mIERGRy1KSVQgZm9yIGJldHRlciBjb2RlIHJlYWRhYmlsaXR5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgZnVu
Y3Rpb25zIGluIHRoZSBBUk0gcG9ydCBvZiBERkctSklUIGZvciBiZXR0ZXIgY29kZQorICAgICAg
ICByZWFkYWJpbGl0eSwgYW5kIGZvciBmb2xsb3dpbmcgdGhlIFdlYktpdCBjb2Rpbmcgc3R5bGUK
KyAgICAgICAgd2hlcmV2ZXIgaXQgaXMgcG9zc2libGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpnZW5JbnQpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmdldEltbSk6CisgICAgICAgIChKU0M6OkFSTUFz
c2VtYmxlcjo6bW92ZUltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29t
cGxleEltbSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJhc2VJbmRleFRyYW5zZmVyMzIpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjE2KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjpkYXRhVHJhbnNmZXJGbG9hdCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YmFz
ZUluZGV4VHJhbnNmZXJGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpdEFuZCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6Yml0QW5kcyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6ZW9yKToK
KyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjplb3JzKToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjpzdWIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnN1YnMpOgorICAgICAg
ICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnJzYik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
cnNicyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6YWRkKToKKyAgICAgICAgKEpTQzo6
QVJNQXNzZW1ibGVyOjphZGRzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjphZGMpOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmFkY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnNiYyk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6c2Jjcyk6CisgICAgICAg
IChKU0M6OkFSTUFzc2VtYmxlcjo6cnNjKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpy
c2NzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp0c3QpOgorICAgICAgICAoSlNDOjpB
Uk1Bc3NlbWJsZXI6OnRlcSk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6Y21wKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpjbW4pOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om9ycik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6b3Jycyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bW92KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z3
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptb3Z0KToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjptb3ZzKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpiaWMpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmJpY3MpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJs
ZXI6Om12bik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bXZucyk6CisgICAgICAgIChK
U0M6OkFSTUFzc2VtYmxlcjo6bXVsKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxz
KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjptdWxsKToKKyAgICAgICAgKEpTQzo6QVJN
QXNzZW1ibGVyOjp2bW92X2Y2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmFkZF9m
NjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZkaXZfZjY0KToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjp2c3ViX2Y2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6
dm11bF9mNjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjbXBfZjY0KToKKyAgICAg
ICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2c3FydF9mNjQpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnZhYnNfZjY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bmVnX2Y2NCk6
CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bGRySW1tZWRpYXRlKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpsZHJVbmlxdWVJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpBUk1B
c3NlbWJsZXI6OmR0clVwKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJVcFJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpkdHJEb3duKToKKyAgICAgICAgKEpT
Qzo6QVJNQXNzZW1ibGVyOjpkdHJEb3duUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OmhhbGZEdHJVcCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6aGFsZkR0clVw
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmhhbGZEdHJEb3duKToKKyAg
ICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpoYWxmRHRyRG93blJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjpkb3VibGVEdHJVcCk6CisgICAgICAgIChKU0M6OkFSTUFzc2Vt
Ymxlcjo6ZG91YmxlRHRyRG93bik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cHVzaCk6
CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6cG9wKToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjpwb2tlKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpwZWVrKToKKyAgICAg
ICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3ZmcDY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNz
ZW1ibGVyOjp2bW92X2FybTY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X3Zm
cDMyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2bW92X2FybTMyKToKKyAgICAgICAg
KEpTQzo6QVJNQXNzZW1ibGVyOjp2Y3Z0X2Y2NF9zMzIpOgorICAgICAgICAoSlNDOjpBUk1Bc3Nl
bWJsZXI6OnZjdnRfczMyX2Y2NCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dmN2dF91
MzJfZjY0KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjp2Y3Z0X2Y2NF9mMzIpOgorICAg
ICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OnZjdnRfZjMyX2Y2NCk6CisgICAgICAgIChKU0M6OkFS
TUFzc2VtYmxlcjo6Y2x6KToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpsc2xSZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bHNyUmVnaXN0ZXIpOgorICAgICAgICAo
SlNDOjpBUk1Bc3NlbWJsZXI6OmFzclJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1i
bGVyOjphbGlnbik6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6bG9hZEJyYW5jaFRhcmdl
dCk6CisgICAgICAgIChKU0M6OkFSTUFzc2VtYmxlcjo6dm1vdik6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk06OmxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YWRk
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YW5kMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bHNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6b3Iz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpyc2hpZnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6
eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y291bnRMZWFkaW5nWmVy
b3MzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb252ZXJ0aWJsZUxvYWRQ
dHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aEFkZHJlc3NP
ZmZzZXRQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRo
Q29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjpzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OnBvcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwdXNoKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTo6c3dhcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2gz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hUZXN0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bXVsbDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk06OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk06OmNvbXBhcmUzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0ZXN0
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJlbGF0aXZlVGFibGVKdW1wKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06Om1vdmVXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTo6bG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjptb3ZlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZERv
dWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpkaXZEb3VibGUpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06Om11bERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpzcXJ0RG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFi
c0RvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpuZWdhdGVEb3VibGUp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29udmVydEludDMyVG9Eb3VibGUp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29udmVydEZsb2F0VG9Eb3VibGUp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29udmVydERvdWJsZVRvRmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRv
VWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRydW5jYXRlRG91Ymxl
VG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0cnVuY2F0ZURvdWJs
ZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaENvbnZl
cnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5j
aERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNo
RG91YmxlWmVyb09yTmFOKToKKwogMjAxMi0wOC0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEy
NTQ0NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNz
ZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVy
LmNwcAppbmRleCA1MzM2NDBlLi45NjU1NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCBpbnQg
QVJNQXNzZW1ibGVyOjpnZW5JbnQoaW50IHJlZywgQVJNV29yZCBpbW0sIGJvb2wgcG9zaXRpdmUp
CiAgICAgfQogCiAgICAgaWYgKHBvc2l0aXZlKSB7Ci0gICAgICAgIG1vdl9yKHJlZywgaW1tMSk7
Ci0gICAgICAgIG9ycl9yKHJlZywgcmVnLCBpbW0yKTsKKyAgICAgICAgbW92KHJlZywgaW1tMSk7
CisgICAgICAgIG9ycihyZWcsIHJlZywgaW1tMik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbXZu
X3IocmVnLCBpbW0xKTsKLSAgICAgICAgYmljX3IocmVnLCByZWcsIGltbTIpOworICAgICAgICBt
dm4ocmVnLCBpbW0xKTsKKyAgICAgICAgYmljKHJlZywgcmVnLCBpbW0yKTsKICAgICB9CiAKICAg
ICByZXR1cm4gMTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBBUk1Xb3JkIEFSTUFzc2VtYmxlcjo6Z2V0
SW1tKEFSTVdvcmQgaW1tLCBpbnQgdG1wUmVnLCBib29sIGludmVydCkKICAgICBpZiAodG1wICE9
IEludmFsaWRJbW1lZGlhdGUpIHsKICAgICAgICAgaWYgKGludmVydCkKICAgICAgICAgICAgIHJl
dHVybiB0bXAgfCBPcDJJbnZlcnRlZEltbWVkaWF0ZTsKLSAgICAgICAgbXZuX3IodG1wUmVnLCB0
bXApOworICAgICAgICBtdm4odG1wUmVnLCB0bXApOwogICAgICAgICByZXR1cm4gdG1wUmVnOwog
ICAgIH0KIApAQCAtMjI0LDEzICsyMjQsMTMgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6Om1vdmVJbW0o
QVJNV29yZCBpbW0sIGludCBkZXN0KQogICAgIC8vIERvIGl0IGJ5IDEgaW5zdHJ1Y3Rpb24KICAg
ICB0bXAgPSBnZXRPcDIoaW1tKTsKICAgICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUpIHsK
LSAgICAgICAgbW92X3IoZGVzdCwgdG1wKTsKKyAgICAgICAgbW92KGRlc3QsIHRtcCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICB0bXAgPSBnZXRPcDIofmltbSk7CiAgICAgaWYgKHRt
cCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG12bl9yKGRlc3QsIHRtcCk7CisgICAg
ICAgIG12bihkZXN0LCB0bXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNDIsMTEg
KzI0MiwxMSBAQCBBUk1Xb3JkIEFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29tcGxleEltbShBUk1Xb3Jk
IGltbSwgaW50IGRlc3QpCiAjaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCiAgICAgQVJNV29y
ZCB0bXAgPSBnZXRJbW0xNk9wMihpbW0pOwogICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0
ZSkgewotICAgICAgICBtb3Z3X3IoZGVzdCwgdG1wKTsKKyAgICAgICAgbW92dyhkZXN0LCB0bXAp
OwogICAgICAgICByZXR1cm4gZGVzdDsKICAgICB9Ci0gICAgbW92d19yKGRlc3QsIGdldEltbTE2
T3AyKGltbSAmIDB4ZmZmZikpOwotICAgIG1vdnRfcihkZXN0LCBnZXRJbW0xNk9wMihpbW0gPj4g
MTYpKTsKKyAgICBtb3Z3KGRlc3QsIGdldEltbTE2T3AyKGltbSAmIDB4ZmZmZikpOworICAgIG1v
dnQoZGVzdCwgZ2V0SW1tMTZPcDIoaW1tID4+IDE2KSk7CiAgICAgcmV0dXJuIGRlc3Q7CiAjZWxz
ZQogICAgIC8vIERvIGl0IGJ5IDIgaW5zdHJ1Y3Rpb24KQEAgLTI1NSw3ICsyNTUsNyBAQCBBUk1X
b3JkIEFSTUFzc2VtYmxlcjo6ZW5jb2RlQ29tcGxleEltbShBUk1Xb3JkIGltbSwgaW50IGRlc3Qp
CiAgICAgaWYgKGdlbkludChkZXN0LCB+aW1tLCBmYWxzZSkpCiAgICAgICAgIHJldHVybiBkZXN0
OwogCi0gICAgbGRyX2ltbShkZXN0LCBpbW0pOworICAgIGxkckltbWVkaWF0ZShkZXN0LCBpbW0p
OwogICAgIHJldHVybiBkZXN0OwogI2VuZGlmCiB9CkBAIC0yNjYsMjMgKzI2NiwyMyBAQCB2b2lk
IEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJU
eXBlLCBSZWdpc3RlcklEIHNyYwogewogICAgIGlmIChvZmZzZXQgPj0gMCkgewogICAgICAgICBp
ZiAob2Zmc2V0IDw9IDB4ZmZmKQotICAgICAgICAgICAgZHRyX3UodHJhbnNmZXJUeXBlLCBzcmNE
c3QsIGJhc2UsIG9mZnNldCk7CisgICAgICAgICAgICBkdHJVcCh0cmFuc2ZlclR5cGUsIHNyY0Rz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICAgICAgZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZmYpIHsK
LSAgICAgICAgICAgIGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8
IChvZmZzZXQgPj4gMTIpIHwgKDEwIDw8IDgpKTsKLSAgICAgICAgICAgIGR0cl91KHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ICYgMHhmZmYpKTsKKyAgICAg
ICAgICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0
ID4+IDEyKSB8ICgxMCA8PCA4KSk7CisgICAgICAgICAgICBkdHJVcCh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCAmIDB4ZmZmKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAg
ICAgICAgICBkdHJfdXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6
UzApOworICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFz
ZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0cl9kKHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBiYXNlLCAtb2Zmc2V0KTsKKyAgICAgICAgICAgIGR0ckRvd24odHJhbnNmZXJUeXBlLCBz
cmNEc3QsIGJhc2UsIC1vZmZzZXQpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQgPj0gLTB4ZmZm
ZmYpIHsKLSAgICAgICAgICAgIHN1Yl9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVk
aWF0ZSB8ICgtb2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7Ci0gICAgICAgICAgICBkdHJfZCh0
cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikp
OworICAgICAgICAgICAgc3ViKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8
ICgtb2Zmc2V0ID4+IDEyKSB8ICgxMCA8PCA4KSk7CisgICAgICAgICAgICBkdHJEb3duKHRyYW5z
ZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAoLW9mZnNldCAmIDB4ZmZmKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJz
OjpTMCk7Ci0gICAgICAgICAgICBkdHJfdXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFS
TVJlZ2lzdGVyczo6UzApOworICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUs
IHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBA
IC0yOTMsMTEgKzI5MywxMSBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNmZXIz
MihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySQogICAgIEFSTVdvcmQg
b3AyID0gbHNsKGluZGV4LCBzY2FsZSk7CiAKICAgICBpZiAoIW9mZnNldCkgewotICAgICAgICBk
dHJfdXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9wMik7CisgICAgICAgIGR0clVwUmVn
aXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9wMik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMxLCBiYXNlLCBvcDIpOworICAgIGFk
ZChBUk1SZWdpc3RlcnM6OlMxLCBiYXNlLCBvcDIpOwogICAgIGRhdGFUcmFuc2ZlcjMyKHRyYW5z
ZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwogfQogCkBAIC0zMDUs
MjMgKzMwNSwyMyBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5z
ZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyYwogewogICAgIGlmIChvZmZzZXQg
Pj0gMCkgewogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4ZmYpCi0gICAgICAgICAgICBkdHJoX3Uo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIGdldE9wMkhhbGYob2Zmc2V0KSk7CisgICAgICAg
ICAgICBoYWxmRHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIGdldE9wMkhhbGYob2Zm
c2V0KSk7CiAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmYpIHsKLSAgICAgICAgICAg
IGFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4g
OCkgfCAoMTIgPDwgOCkpOwotICAgICAgICAgICAgZHRyaF91KHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxmKG9mZnNldCAmIDB4ZmYpKTsKKyAgICAgICAg
ICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+
IDgpIHwgKDEyIDw8IDgpKTsKKyAgICAgICAgICAgIGhhbGZEdHJVcCh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZihvZmZzZXQgJiAweGZmKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtb3ZlSW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpT
MCk7Ci0gICAgICAgICAgICBkdHJoX3VyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1S
ZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlw
ZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChvZmZzZXQgPj0gLTB4ZmYpCi0gICAgICAgICAgICBkdHJoX2QodHJh
bnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIGdldE9wMkhhbGYoLW9mZnNldCkpOworICAgICAgICAg
ICAgaGFsZkR0ckRvd24odHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIGdldE9wMkhhbGYoLW9m
ZnNldCkpOwogICAgICAgICBlbHNlIGlmIChvZmZzZXQgPj0gLTB4ZmZmZikgewotICAgICAgICAg
ICAgc3ViX3IoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKC1vZmZzZXQg
Pj4gOCkgfCAoMTIgPDwgOCkpOwotICAgICAgICAgICAgZHRyaF9kKHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBnZXRPcDJIYWxmKC1vZmZzZXQgJiAweGZmKSk7CisgICAg
ICAgICAgICBzdWIoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKC1vZmZz
ZXQgPj4gOCkgfCAoMTIgPDwgOCkpOworICAgICAgICAgICAgaGFsZkR0ckRvd24odHJhbnNmZXJU
eXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdldE9wMkhhbGYoLW9mZnNldCAmIDB4ZmYp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1vdmVJbW0ob2Zmc2V0LCBBUk1SZWdp
c3RlcnM6OlMwKTsKLSAgICAgICAgICAgIGR0cmhfdXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJh
c2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJh
bnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtMzI5LDExICszMjksMTEgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFu
c2ZlcjE2KERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmMKIHZv
aWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjE2KERhdGFUcmFuc2ZlclR5cGVCIHRy
YW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKIHsKICAgICBpZiAoIXNjYWxlICYm
ICFvZmZzZXQpIHsKLSAgICAgICAgZHRyaF91cih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwg
aW5kZXgpOworICAgICAgICBoYWxmRHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
YmFzZSwgaW5kZXgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYWRkX3IoQVJNUmVn
aXN0ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOworICAgIGFkZChBUk1SZWdpc3Rl
cnM6OlMxLCBiYXNlLCBsc2woaW5kZXgsIHNjYWxlKSk7CiAgICAgZGF0YVRyYW5zZmVyMTYodHJh
bnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNldCk7CiB9CiAKQEAgLTM0
MiwzNiArMzQyLDM2IEBAIHZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXJGbG9hdChEYXRh
VHJhbnNmZXJUeXBlRmxvYXQgdHJhbnNmZXJUeXBlLCBGUFJlZ2lzCiAgICAgLy8gVkZQIGNhbm5v
dCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMgbm90IGZvdXItYnl0ZS1hbGlnbmVkCiAg
ICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewogICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYm
IG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBmZHRyX3UodHJhbnNmZXJUeXBlLCBzcmNEc3Qs
IGJhc2UsIG9mZnNldCA+PiAyKTsKKyAgICAgICAgICAgIGRvdWJsZUR0clVwKHRyYW5zZmVyVHlw
ZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+PSAwKSB7Ci0g
ICAgICAgICAgICBhZGRfcihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAo
b2Zmc2V0ID4+IDEwKSB8ICgxMSA8PCA4KSk7Ci0gICAgICAgICAgICBmZHRyX3UodHJhbnNmZXJU
eXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgPj4gMikgJiAweGZmKTsKKyAg
ICAgICAgICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zm
c2V0ID4+IDEwKSB8ICgxMSA8PCA4KSk7CisgICAgICAgICAgICBkb3VibGVEdHJVcCh0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7
CiAKICAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAg
ICAgICAgZmR0cl9kKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7Cisg
ICAgICAgICAgICBkb3VibGVEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZz
ZXQgPj4gMik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9m
ZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBzdWJfcihBUk1S
ZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+IDEwKSB8ICgxMSA8
PCA4KSk7Ci0gICAgICAgICAgICBmZHRyX2QodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lz
dGVyczo6UzAsIChvZmZzZXQgPj4gMikgJiAweGZmKTsKKyAgICAgICAgICAgIHN1YihBUk1SZWdp
c3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAob2Zmc2V0ID4+IDEwKSB8ICgxMSA8PCA4
KSk7CisgICAgICAgICAgICBkb3VibGVEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1S
ZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKICAgICB9CiAKICAgICBtb3Zl
SW1tKG9mZnNldCwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSk7Ci0gICAgZmR0cl91KHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgQVJN
UmVnaXN0ZXJzOjpTMCwgYmFzZSk7CisgICAgZG91YmxlRHRyVXAodHJhbnNmZXJUeXBlLCBzcmNE
c3QsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogfQogCiB2b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUlu
ZGV4VHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHJhbnNmZXJUeXBlLCBGUFJl
Z2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSwgaW50MzJfdCBvZmZzZXQpCiB7Ci0gICAgYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMSwgYmFz
ZSwgbHNsKGluZGV4LCBzY2FsZSkpOworICAgIGFkZChBUk1SZWdpc3RlcnM6OlMxLCBiYXNlLCBs
c2woaW5kZXgsIHNjYWxlKSk7CiAgICAgZGF0YVRyYW5zZmVyRmxvYXQodHJhbnNmZXJUeXBlLCBz
cmNEc3QsIEFSTVJlZ2lzdGVyczo6UzEsIG9mZnNldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCmluZGV4IGFjOTE4ZjMuLjM4ZDBjNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaApA
QCAtMjY4LDM1NSArMjY4LDM1NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IChzbSA+PiAxKSB8ICgoc20gJiAweDEpIDw8IDUpKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgYW5kX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBiaXRBbmQoaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBTkQsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgYW5kc19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYml0QW5kcyhpbnQgcmQsIGludCBybiwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFORCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBy
biwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZW9yX3IoaW50IHJkLCBpbnQgcm4s
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBlb3IoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBFT1IsIHJkLCBybiwgb3Ay
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZW9yc19yKGludCByZCwgaW50IHJuLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZW9ycyhpbnQgcmQsIGlu
dCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEVPUiB8IFNldENvbmRpdGlvbmFs
Q29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc3ViX3IoaW50
IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9p
ZCBzdWIoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIs
IHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc3Vic19yKGludCByZCwg
aW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgc3Vi
cyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNVQiB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgcnNiX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCByc2IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBSU0IsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcnNi
c19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHZvaWQgcnNicyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IFJTQiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgYWRkX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBhZGQoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0
aW9uKHRvQVJNV29yZChjYykgfCBBREQsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgYWRkc19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCisgICAgICAgIHZvaWQgYWRkcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IEFERCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgYWRjX3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQg
b3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBhZGMoaW50IHJkLCBpbnQgcm4s
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREMsIHJkLCBybiwgb3AyKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgYWRjc19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgYWRjcyhpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFEQyB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJk
LCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2JjX3IoaW50IHJkLCBpbnQg
cm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBzYmMoaW50
IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewog
ICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTQkMsIHJkLCBybiwg
b3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2Jjc19yKGludCByZCwgaW50IHJuLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgc2JjcyhpbnQgcmQs
IGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAg
ICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQyB8IFNldENvbmRpdGlv
bmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcnNjX3Io
aW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAg
dm9pZCByc2MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBS
U0MsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcnNjc19yKGludCBy
ZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
cnNjcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAg
ICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQyB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgdHN0X3IoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIHZvaWQgdHN0KGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAg
ICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRTVCB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCB0ZXFfcihpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCB0ZXEoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVEVRIHwg
U2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIGNtcF9yKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIGNtcChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAg
ICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTVAgfCBT
ZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgY21uX3IoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAg
IHZvaWQgY21uKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IENNTiB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBvcnJfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQor
ICAgICAgICB2b2lkIG9ycihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IE9SUiwgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBvcnJz
X3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCBvcnJzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgT1JSIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBtb3ZfcihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKKyAgICAgICAgdm9pZCBtb3YoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgTU9WLCByZCwgQVJNUmVnaXN0ZXJzOjpyMCwgb3AyKTsKICAgICAgICAgfQogCiAjaWYgV1RG
X0FSTV9BUkNIX0FUX0xFQVNUKDcpCi0gICAgICAgIHZvaWQgbW92d19yKGludCByZCwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG1vdncoaW50IHJkLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VCgob3AyIHwgMHhmMGZmZikgPT0gMHhmMGZmZik7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnQodG9BUk1Xb3JkKGNjKSB8IE1PVlcgfCBSRChyZCkgfCBvcDIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBtb3Z0X3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
CisgICAgICAgIHZvaWQgbW92dChpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKChvcDIgfCAweGYwZmZmKSA9PSAweGYw
ZmZmKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgTU9WVCB8
IFJEKHJkKSB8IG9wMik7CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIHZvaWQgbW92c19y
KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIG1v
dnMoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgTU9WIHwgU2V0Q29uZGl0
aW9uYWxDb2RlcywgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGJpY19yKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCisgICAgICAgIHZvaWQgYmljKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0
b0FSTVdvcmQoY2MpIHwgQklDLCByZCwgcm4sIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIGJpY3NfcihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIGJpY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBCSUMgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIG12bl9yKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIG12bihpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBNVk4sIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBtdm5zX3IoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgbXZucyhpbnQgcmQsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2Mg
PSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCBNVk4gfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgQVJNUmVnaXN0ZXJzOjpyMCwgb3Ay
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbXVsX3IoaW50IHJkLCBpbnQgcm4sIGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgbXVsKGludCByZCwgaW50IHJuLCBp
bnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTCB8IFJOKHJkKSB8IFJTKHJuKSB8IFJNKHJtKSk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIG11bHNfcihpbnQgcmQsIGludCBybiwgaW50IHJt
LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBtdWxzKGludCByZCwgaW50IHJuLCBp
bnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTCB8IFNldENvbmRpdGlvbmFsQ29kZXMgfCBSTihy
ZCkgfCBSUyhybikgfCBSTShybSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBtdWxsX3Io
aW50IHJkaGksIGludCByZGxvLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCisg
ICAgICAgIHZvaWQgbXVsbChpbnQgcmRoaSwgaW50IHJkbG8sIGludCBybiwgaW50IHJtLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRv
QVJNV29yZChjYykgfCBNVUxMIHwgUk4ocmRoaSkgfCBSRChyZGxvKSB8IFJTKHJuKSB8IFJNKHJt
KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZtb3ZfZjY0X3IoaW50IGRkLCBpbnQgZG0s
IENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIHZtb3ZfZjY0KGludCBkZCwgaW50IGRt
LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVBy
ZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTU9WX0Y2NCwgZGQsIDAsIGRtKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdmFkZF9mNjRfcihpbnQgZGQsIGludCBkbiwgaW50
IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2YWRkX2Y2NChpbnQgZGQsIGlu
dCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAg
ZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUREX0Y2NCwg
ZGQsIGRuLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZkaXZfZjY0X3IoaW50IGRk
LCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdmRpdl9m
NjQoaW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgVkRJVl9GNjQsIGRkLCBkbiwgZG0pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB2c3Vi
X2Y2NF9yKGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAg
ICB2b2lkIHZzdWJfZjY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFM
KQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IFZTVUJfRjY0LCBkZCwgZG4sIGRtKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgdm11bF9mNjRfcihpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2Mg
PSBBTCkKKyAgICAgICAgdm9pZCB2bXVsX2Y2NChpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lv
bkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTVVMX0Y2NCwgZGQsIGRuLCBkbSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHZjbXBfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIHZjbXBfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRp
b24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbklu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ01QX0Y2NCwgZGQsIDAsIGRtKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgdnNxcnRfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQorICAgICAgICB2b2lkIHZzcXJ0X2Y2NChpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0
cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVlNRUlRfRjY0LCBkZCwgMCwgZG0pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCB2YWJzX2Y2NF9yKGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2Mg
PSBBTCkKKyAgICAgICAgdm9pZCB2YWJzX2Y2NChpbnQgZGQsIGludCBkbSwgQ29uZGl0aW9uIGNj
ID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgVkFCU19GNjQsIGRkLCAwLCBkbSk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHZuZWdfZjY0X3IoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFM
KQorICAgICAgICB2b2lkIHZuZWdfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBB
TCkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBWTkVHX0Y2NCwgZGQsIDAsIGRtKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgbGRyX2ltbShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCBsZHJJbW1lZGlhdGUoaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludFdpdGhDb25z
dGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQzMiB8IERhdGFUcmFuc2ZlclVwIHwgUk4o
QVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSwgdHJ1ZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICB2b2lkIGxkcl91bl9pbW0oaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9uIGNjID0g
QUwpCisgICAgICAgIHZvaWQgbGRyVW5pcXVlSW1tZWRpYXRlKGludCByZCwgQVJNV29yZCBpbW0s
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnRXaXRoQ29uc3RhbnRJbnQodG9BUk1Xb3JkKGNjKSB8IExvYWRVaW50MzIgfCBEYXRhVHJhbnNm
ZXJVcCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQocmQpLCBpbW0pOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBkdHJfdShEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCBy
ZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQg
ZHRyVXAoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVw
LCByZCwgcmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl91cihEYXRhVHJh
bnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBpbnQgcm0sIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIGR0clVwUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEg
dHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkK
ICAgICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0
cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCB8IE9wMklzUmVnaXN0ZXJBcmd1bWVudCwgcmQs
IHJiLCBybSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGR0cl9kKERhdGFUcmFuc2ZlclR5
cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKKyAgICAgICAgdm9pZCBkdHJEb3duKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVy
VHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKICAg
ICAgICAgewogICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFu
c2ZlclR5cGUsIHJkLCByYiwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyX2Ry
KERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBybSwg
Q29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgZHRyRG93blJlZ2lzdGVyKERhdGFUcmFu
c2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIGludCBybSwgQ29uZGl0aW9u
IGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgT3AySXNSZWdpc3RlckFyZ3VtZW50LCByZCwgcmIsIHJt
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyaF91KERhdGFUcmFuc2ZlclR5cGVCIHRy
YW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKKyAgICAgICAgdm9pZCBoYWxmRHRyVXAoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBl
LCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVy
VHlwZSB8IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGR0cmhfdXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBoYWxmRHRyVXBS
ZWdpc3RlcihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJuLCBp
bnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWl0SW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwLCBy
ZCwgcm4sIHJtKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZHRyaF9kKERhdGFUcmFuc2Zl
clR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBoYWxmRHRyRG93bihEYXRhVHJhbnNmZXJUeXBlQiB0
cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgdHJhbnNmZXJUeXBlLCByZCwgcmIsIG9wMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGR0cmhfZHIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwg
aW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBoYWxmRHRyRG93blJlZ2lz
dGVyKERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwgcm4sIHJtKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgZmR0cl91KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lk
IGRvdWJsZUR0clVwKERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBpbnQgcmQsIGludCByYiwg
QVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQob3AyIDw9IDB4ZmYgJiYgcmQgPD0gMTUpOwogICAgICAgICAgICAgLyogT25seSBkMC1k
MTUgYW5kIHMwLCBzMiwgczQgLi4uIHMzMCBhcmUgc3VwcG9ydGVkLiAqLwogICAgICAgICAgICAg
bV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBEYXRhVHJhbnNmZXJVcCB8IHR5cGUgfCAo
cmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZmR0
cl9kKERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0eXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQorICAgICAgICB2b2lkIGRvdWJsZUR0ckRvd24oRGF0YVRy
YW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZiAm
JiByZCA8PSAxNSk7CiAgICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAu
Li4gczMwIGFyZSBzdXBwb3J0ZWQuICovCiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9B
Uk1Xb3JkKGNjKSB8IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgcHVzaF9yKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQorICAg
ICAgICB2b2lkIHB1c2goaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChBUk1Xb3JkKHJlZykgPD0gMHhmKTsKICAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgU3RvcmVVaW50MzIgfCBEYXRhVHJhbnNmZXJXcml0
ZUJhY2sgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBwb3BfcihpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCBwb3AoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChBUk1Xb3JkKHJlZykgPD0gMHhmKTsKICAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEludCh0b0FSTVdvcmQoY2MpIHwgKExvYWRVaW50MzIgXiBEYXRhVHJhbnNmZXJQb3N0VXBk
YXRlKSB8IERhdGFUcmFuc2ZlclVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpzcCkgfCBSRChyZWcpIHwg
MHg0KTsKICAgICAgICAgfQogCi0gICAgICAgIGlubGluZSB2b2lkIHBva2VfcihpbnQgcmVnLCBD
b25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgaW5saW5lIHZvaWQgcG9rZShpbnQgcmVnLCBDb25k
aXRpb24gY2MgPSBBTCkKICAgICAgICAgewotICAgICAgICAgICAgZHRyX2QoU3RvcmVVaW50MzIs
IEFSTVJlZ2lzdGVyczo6c3AsIDAsIHJlZywgY2MpOworICAgICAgICAgICAgZHRyRG93bihTdG9y
ZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgcmVnLCBjYyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpbmxpbmUgdm9pZCBwZWVrX3IoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCisgICAg
ICAgIGlubGluZSB2b2lkIHBlZWsoaW50IHJlZywgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGR0cl91KExvYWRVaW50MzIsIHJlZywgQVJNUmVnaXN0ZXJzOjpzcCwg
MCwgY2MpOworICAgICAgICAgICAgZHRyVXAoTG9hZFVpbnQzMiwgcmVnLCBBUk1SZWdpc3RlcnM6
OnNwLCAwLCBjYyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZtb3ZfdmZwNjRfcihpbnQg
c20sIGludCBydCwgaW50IHJ0MiwgQ29uZGl0aW9uIGNjID0gQUwpCisgICAgICAgIHZvaWQgdm1v
dl92ZnA2NChpbnQgc20sIGludCBydCwgaW50IHJ0MiwgQ29uZGl0aW9uIGNjID0gQUwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChydCAhPSBydDIpOwogICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8
IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCB2bW92X2FybTY0X3IoaW50IHJ0LCBpbnQgcnQyLCBpbnQgc20sIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIHZtb3ZfYXJtNjQoaW50IHJ0LCBpbnQgcnQyLCBpbnQg
c20sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocnQg
IT0gcnQyKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVk1P
Vl9BUk02NCB8IFJOKHJ0MikgfCBSRChydCkgfCAoc20gJiAweGYpIHwgKChzbSAmIDB4MTApIDw8
ICg1IC0gNCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgdm1vdl92ZnAzMl9yKGludCBz
biwgaW50IHJ0LCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2bW92X3ZmcDMyKGlu
dCBzbiwgaW50IHJ0LCBDb25kaXRpb24gY2MgPSBBTCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKHJ0IDw9IDE1KTsKICAgICAgICAgICAgIGVtaXRTaW5nbGVQcmVjaXNpb25JbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgVk1PVl9WRlAzMiwgcnQgPDwgMSwgc24sIDApOwogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCB2bW92X2FybTMyX3IoaW50IHJ0LCBpbnQgc24sIENvbmRpdGlv
biBjYyA9IEFMKQorICAgICAgICB2b2lkIHZtb3ZfYXJtMzIoaW50IHJ0LCBpbnQgc24sIENvbmRp
dGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwog
ICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykg
fCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwgMCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IHZjdnRfZjY0X3MzMl9yKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCB2Y3Z0X2Y2NF9zMzIoaW50IGRkLCBpbnQgc20sIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIShzbSAmIDB4MSkpOyAvLyBzbSBtdXN0IGJl
IGRpdmlzaWJsZSBieSAyCiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfRjY0X1MzMiwgZGQsIDAsIChzbSA+PiAxKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHZjdnRfczMyX2Y2NF9yKGludCBzZCwgaW50IGRtLCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2Y3Z0X3MzMl9mNjQoaW50IHNkLCBpbnQgZG0s
IENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIShzZCAm
IDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyCiAgICAgICAgICAgICBlbWl0RG91
YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfUzMyX0Y2NCwgKHNk
ID4+IDEpLCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHZjdnRfdTMyX2Y2NF9y
KGludCBzZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCB2Y3Z0X3Uz
Ml9mNjQoaW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAy
CiAgICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IFZDVlRfVTMyX0Y2NCwgKHNkID4+IDEpLCAwLCBkbSk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIHZjdnRfZjY0X2YzMl9yKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkK
KyAgICAgICAgdm9pZCB2Y3Z0X2Y2NF9mMzIoaW50IGRkLCBpbnQgc20sIENvbmRpdGlvbiBjYyA9
IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZGQgPD0gMTUgJiYgc20gPD0gMTUp
OwogICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCBWQ1ZUX0Y2NF9GMzIsIGRkLCAwLCBzbSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IHZjdnRfZjMyX2Y2NF9yKGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKKyAgICAg
ICAgdm9pZCB2Y3Z0X2YzMl9mNjQoaW50IGRkLCBpbnQgc20sIENvbmRpdGlvbiBjYyA9IEFMKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZGQgPD0gMTUgJiYgc20gPD0gMTUpOwogICAg
ICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBW
Q1ZUX0YzMl9GNjQsIGRkLCAwLCBzbSk7CkBAIC02MjcsNyArNjI3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNUlNfQVBT
Uik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGNsel9yKGludCByZCwgaW50IHJtLCBDb25k
aXRpb24gY2MgPSBBTCkKKyAgICAgICAgdm9pZCBjbHooaW50IHJkLCBpbnQgcm0sIENvbmRpdGlv
biBjYyA9IEFMKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1X
b3JkKGNjKSB8IENMWiB8IFJEKHJkKSB8IFJNKHJtKSk7CiAgICAgICAgIH0KQEAgLTY3NCwyMSAr
Njc0LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlZyB8ICh2YWx1
ZSA8PCA3KSB8IDB4NDA7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgQVJNV29yZCBsc2xf
cihpbnQgcmVnLCBpbnQgc2hpZnRSZWcpCisgICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbFJlZ2lz
dGVyKGludCByZWcsIGludCBzaGlmdFJlZykKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIEFTU0VSVChzaGlmdFJlZyA8
PSBBUk1SZWdpc3RlcnM6OnBjKTsKICAgICAgICAgICAgIHJldHVybiByZWcgfCAoc2hpZnRSZWcg
PDwgOCkgfCAweDEwOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgbHNyX3Io
aW50IHJlZywgaW50IHNoaWZ0UmVnKQorICAgICAgICBzdGF0aWMgQVJNV29yZCBsc3JSZWdpc3Rl
cihpbnQgcmVnLCBpbnQgc2hpZnRSZWcpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChy
ZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgICAgICBBU1NFUlQoc2hpZnRSZWcgPD0g
QVJNUmVnaXN0ZXJzOjpwYyk7CiAgICAgICAgICAgICByZXR1cm4gcmVnIHwgKHNoaWZ0UmVnIDw8
IDgpIHwgMHgzMDsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGFzcl9yKGlu
dCByZWcsIGludCBzaGlmdFJlZykKKyAgICAgICAgc3RhdGljIEFSTVdvcmQgYXNyUmVnaXN0ZXIo
aW50IHJlZywgaW50IHNoaWZ0UmVnKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVn
IDw9IEFSTVJlZ2lzdGVyczo6cGMpOwogICAgICAgICAgICAgQVNTRVJUKHNoaWZ0UmVnIDw9IEFS
TVJlZ2lzdGVyczo6cGMpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQogICAgICAgICB7CiAgICAg
ICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQotICAgICAgICAg
ICAgICAgIG1vdl9yKEFSTVJlZ2lzdGVyczo6cjAsIEFSTVJlZ2lzdGVyczo6cjApOworICAgICAg
ICAgICAgICAgIG1vdihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKIAogICAg
ICAgICAgICAgcmV0dXJuIGxhYmVsKCk7CiAgICAgICAgIH0KQEAgLTc1MSw3ICs3NTEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgZW5zdXJlU3BhY2Uoc2l6ZW9m
KEFSTVdvcmQpLCBzaXplb2YoQVJNV29yZCkpOwogICAgICAgICAgICAgbV9qdW1wcy5hcHBlbmQo
bV9idWZmZXIuY29kZVNpemUoKSB8ICh1c2VDb25zdGFudFBvb2wgJiAweDEpKTsKLSAgICAgICAg
ICAgIGxkcl91bl9pbW0ocmQsIEludmFsaWRCcmFuY2hUYXJnZXQsIGNjKTsKKyAgICAgICAgICAg
IGxkclVuaXF1ZUltbWVkaWF0ZShyZCwgSW52YWxpZEJyYW5jaFRhcmdldCwgY2MpOwogICAgICAg
ICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgICAgIH0KIApAQCAtNzY3LDEyICs3
NjcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIERGRyBhc3NlbWJseSBoZWxwZXJz
IGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgICAgIHZvaWQg
dm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKICAg
ICAgICAgewotICAgICAgICAgICAgdm1vdl9hcm02NF9yKHJkMSwgcmQyLCBybik7CisgICAgICAg
ICAgICB2bW92X2FybTY0KHJkMSwgcmQyLCBybik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lk
IHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0ZXJJRCBybjIpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHZtb3ZfdmZwNjRfcihyZCwgcm4xLCBybjIpOworICAgICAg
ICAgICAgdm1vdl92ZnA2NChyZCwgcm4xLCBybjIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
UGF0Y2hpbmcgaGVscGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAppbmRleCBhMjUxYTQzLi45OGRjM2U5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
LmNwcApAQCAtNzYsMjEgKzc2LDIxIEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMldp
dGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVyCiAgICAgb3Ay
ID0gbV9hc3NlbWJsZXIubHNsKGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVz
cy5zY2FsZSkpOwogCiAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYgYWRkcmVzcy5vZmZz
ZXQgKyAweDIgPD0gMHhmZikgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRfcihBUk1SZWdpc3Rl
cnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cmhfdShB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5k
dHJoX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdp
c3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkhhbGYoYWRkcmVzcy5vZmZzZXQgKyAweDIp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFz
ZSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwKEFSTUFzc2VtYmxlcjo6TG9h
ZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxm
KGFkZHJlc3Mub2Zmc2V0KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcChBUk1Bc3Nl
bWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFS
TUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCArIDB4MikpOwogICAgIH0gZWxz
ZSBpZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYmIGFkZHJlc3Mub2Zmc2V0ID49IC0weGZmKSB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwg
b3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF9kKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQx
NiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKC1hZGRy
ZXNzLm9mZnNldCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJoX2QoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJs
ZXI6OmdldE9wMkhhbGYoLWFkZHJlc3Mub2Zmc2V0IC0gMHgyKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7CisgICAgICAgIG1f
YXNzZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKC1hZGRyZXNzLm9mZnNldCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50
MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AySGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZlSW1tKGFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpT
MCwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF91cihBUk1Bc3NlbWJsZXI6OkxvYWRV
aW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFz
c2VtYmxlcjo6T3AySW1tZWRpYXRlIHwgMHgyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyaF91
cihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFz
ZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3Rl
cnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci5oYWxm
RHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3MuYmFz
ZSwgQVJNUmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3Rl
cnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6Ok9wMkltbWVkaWF0ZSB8IDB4
Mik7CisgICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6
TG9hZFVpbnQxNiwgQVJNUmVnaXN0ZXJzOjpTMCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6
OlMwKTsKICAgICB9Ci0gICAgbV9hc3NlbWJsZXIub3JyX3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJs
ZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7CisgICAgbV9hc3NlbWJsZXIub3JyKGRlc3Qs
IGRlc3QsIG1fYXNzZW1ibGVyLmxzbChBUk1SZWdpc3RlcnM6OlMwLCAxNikpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaAppbmRleCA4NWQwZmZiLi4wZGY3OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCkBAIC04NiwxMiArODYsMTIg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19yKGRlc3QsIGRlc3QsIHNyYyk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAg
ICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkc19yKGRlc3QsIG9wMSwgb3AyKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAgICAg
dm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCkBAIC0xMDMsMTMg
KzEwMywxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZHNfcihkZXN0LCBk
ZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0o
aW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAgICB2b2lkIGFkZDMy
KEFic29sdXRlQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZHRyX3UoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3RlcnM6
OlMxLCBBUk1SZWdpc3RlcnM6OlMxLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJN
QXNzZW1ibGVyOjpMb2FkVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBBUk1SZWdpc3RlcnM6OlMx
LCAwKTsKICAgICAgICAgYWRkMzIoQVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCk7CiAgICAgfQogCkBA
IC0xMjEsMzUgKzEyMSwzNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQg
c3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5hZGRzX3IoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFs
dWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBz
cmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwog
ICAgIH0KIAogICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBkZXN0LCBzcmMpOworICAg
ICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAg
dm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZHNfcihkZXN0LCBvcDEsIG9wMik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAg
IHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwLCB0cnVlKTsKICAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVy
dGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKGRlc3QsIGRlc3Qs
IHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5iaWNzKGRlc3QsIGRlc3QsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRl
ZEltbWVkaWF0ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZHNf
cihkZXN0LCBkZXN0LCB3KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwg
ZGVzdCwgdyk7CiAgICAgfQogCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0g
bV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwLCB0cnVlKTsK
ICAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKGRlc3QsIHNyYywgdyAmIH5BUk1Bc3NlbWJsZXI6
Ok9wMkludmVydGVkSW1tZWRpYXRlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoZGVz
dCwgc3JjLCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRzX3IoZGVzdCwgc3JjLCB3KTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgc3JjLCB3KTsKICAgICB9CiAKICAg
ICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTE2MCwxOSArMTYwLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3KTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50
LCB3KTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIubHNs
X3Ioc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVz
dCwgbV9hc3NlbWJsZXIubHNsUmVnaXN0ZXIoc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAg
fQogCiAgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIubHNs
KGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRl
c3QsIG1fYXNzZW1ibGVyLmxzbChkZXN0LCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKICAgICB9CiAK
ICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9h
c3NlbWJsZXIubHNsKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7
CiAgICAgfQogCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgb3AyID0gdG1wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm11bHNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bHMo
ZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
dWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbW92ZShpbW0sIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBtX2Fz
c2VtYmxlci5tdWxzX3IoZGVzdCwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubXVscyhkZXN0LCBzcmMsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgIH0KIAogICAg
IHZvaWQgbmVnMzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQpAQCAtMjA5LDIyICsyMDksMjIgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzX3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQg
b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5vcnJzX3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3Zh
bHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwg
ZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7
CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzX3IoZGVz
dCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldElt
bShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9ycnMoZGVzdCwgb3AxLCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQgcnNoaWZ0
MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjM1LDkgKzIz
NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1Xb3Jk
IHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmFuZF9yKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYml0QW5kKEFSTVJlZ2lzdGVyczo6UzAsIHNoaWZ0QW1vdW50LCB3KTsKIAotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZzX3IoZGVzdCwgbV9hc3NlbWJsZXIuYXNyX3Ioc3JjLCBBUk1SZWdp
c3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIu
YXNyUmVnaXN0ZXIoc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBy
c2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yNDcsNyArMjQ3
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5t
X3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAogICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQg
c2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI1OCwyOSArMjU4LDI5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFt
b3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNz
ZW1ibGVyOjpnZXRPcDJCeXRlKDB4MWYpOwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRfcihBUk1S
ZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJpdEFu
ZChBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAgICAgICAgbV9hc3NlbWJs
ZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzcl9yKHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzclJlZ2lzdGVy
KHNyYywgQVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgdXJzaGlmdDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdnNfcihkZXN0LCBtX2Fzc2VtYmxlci5sc3IoZGVzdCwgaW1tLm1fdmFsdWUgJiAweDFm
KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3Qs
IGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KICAgICAKICAgICB2b2lkIHVyc2hpZnQzMihS
ZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92c19yKGRlc3QsIG1fYXNzZW1ibGVyLmxzcihzcmMsIGlt
bS5tX3ZhbHVlICYgMHgxZikpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNz
ZW1ibGVyLmxzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwogICAgIH0KIAogICAgIHZvaWQg
c3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnN1YnNfcihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJzKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJz
X3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3Rl
cnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgZGVzdCwgbV9hc3NlbWJs
ZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAg
dm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCkBAIC0yOTgsNyAr
Mjk4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3Vic19yKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgc3JjLCBtX2Fzc2Vt
Ymxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKICAgICB9CiAKICAg
ICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0zMTQsNyAr
MzE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubXZuc19yKGRlc3QsIGRlc3QpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubXZucyhkZXN0LCBkZXN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZW9yc19yKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwg
QVJNUmVnaXN0ZXJzOjpTMCkpOwogICAgIH0KQEAgLTMyMiw3ICszMjIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubXZuc19yKGRlc3QsIHNyYyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5tdm5zKGRlc3QsIHNyYyk7CiAgICAgICAgIGVsc2UgICAgCiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5lb3JzX3IoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKICAgICB9CkBAIC0zMzAsNyArMzMwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY291bnRMZWFkaW5nWmVyb3MzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNSkKLSAgICAgICAgbV9hc3NlbWJs
ZXIuY2x6X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY2x6KGRlc3QsIHNyYyk7
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc3JjKTsKICAgICAgICAgVU5VU0VEX1BBUkFN
KGRlc3QpOwpAQCAtMzk2LDE1ICszOTYsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ29u
dmVydGlibGVMb2FkTGFiZWwgcmVzdWx0KHRoaXMpOwogICAgICAgICBBU1NFUlQoYWRkcmVzcy5v
ZmZzZXQgPj0gMCAmJiBhZGRyZXNzLm9mZnNldCA8PSAyNTUpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5vZmZzZXQpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIERhdGFMYWJlbDMyIGxvYWQzMldpdGhBZGRyZXNz
T2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxk
cl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91
cihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0
ZXJzOjpTMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdp
c3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXBSZWdpc3RlcihBUk1Bc3Nl
bWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7
CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCkBAIC00MTgsMTcgKzQxOCwxNyBA
QCBwdWJsaWM6CiAgICAgICAgIERhdGFMYWJlbENvbXBhY3QgZGF0YUxhYmVsKHRoaXMpOwogICAg
ICAgICBBU1NFUlQoaXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQoYWRkcmVzcy5vZmZz
ZXQpKTsKICAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IDApCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyX2QoQVJNQXNzZW1ibGVy
OjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmR0ckRvd24oQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJl
bDsKICAgICB9CiAKICAgICBEYXRhTGFiZWwzMiBzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRj
aChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxh
YmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFS
TVJlZ2lzdGVyczo6UzAsIDApOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdXIoQVJNQXNzZW1i
bGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpTdG9y
ZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwogICAgICAgICBy
ZXR1cm4gZGF0YUxhYmVsOwogICAgIH0KIApAQCAtNDY2LDI1ICs0NjYsMjUgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVy
cHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3Uo
QVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIHJl
aW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOworICAgICAgICBtX2Fzc2VtYmxlci5k
dHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDAp
OwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyX3VuX2ltbShBUk1SZWdpc3RlcnM6
OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZD4oYWRkcmVzcykpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGltbS5t
X3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyX3UoQVJN
QXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpT
MCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAg
IHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBv
cF9yKGRlc3QpOworICAgICAgICBtX2Fzc2VtYmxlci5wb3AoZGVzdCk7CiAgICAgfQogCiAgICAg
dm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucHVz
aF9yKHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjKTsKICAgICB9CiAKICAgICB2
b2lkIHB1c2goQWRkcmVzcyBhZGRyZXNzKQpAQCAtNTA3LDcgKzUwNyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1vdmUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3Qs
IHNyYyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgc3JjKTsKICAgICB9CiAK
ICAgICB2b2lkIG1vdmUoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTUx
Nyw5ICs1MTcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBS
ZWdpc3RlcklEIHJlZzIpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfcihBUk1SZWdp
c3RlcnM6OlMwLCByZWcxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IocmVnMSwgcmVnMik7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKHJlZzIsIEFSTVJlZ2lzdGVyczo6UzApOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpTMCwgcmVnMSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdihyZWcxLCByZWcyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KHJlZzIs
IEFSTVJlZ2lzdGVyczo6UzApOwogICAgIH0KIAogICAgIHZvaWQgc2lnbkV4dGVuZDMyVG9QdHIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTU0OSw3ICs1NDksNyBAQCBwdWJs
aWM6CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY21wKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSwgdXNlQ29uc3RhbnRQb29sKSk7CiAgICAgfQogCkBA
IC01NTcsOSArNTU3LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVJNV29yZCB0bXAgPSAo
cmlnaHQubV92YWx1ZSA9PSAweDgwMDAwMDAwKSA/IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVk
aWF0ZSA6IG1fYXNzZW1ibGVyLmdldE9wMigtcmlnaHQubV92YWx1ZSk7CiAgICAgICAgIGlmICh0
bXAgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21uX3IobGVmdCwgdG1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihsZWZ0
LCB0bXApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihsZWZ0
LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShyaWdo
dC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNz
ZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwogICAgIH0K
IApAQCAtNjA5LDcgKzYwOSw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnRzdF9yKHJlZywgbWFzayk7CisgICAgICAgIG1fYXNzZW1ibGVy
LnRzdChyZWcsIG1hc2spOwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJN
Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCkBAIC02MTgsOSArNjE4LDkgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogICAg
ICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1SZWdp
c3RlcnM6OlMwLCB0cnVlKTsKICAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVy
dGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljc19yKEFSTVJlZ2lzdGVy
czo6UzAsIHJlZywgdyAmIH5BUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoQVJNUmVnaXN0ZXJzOjpTMCwgcmVnLCB3ICYgfkFS
TUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci50c3RfcihyZWcsIHcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
dHN0KHJlZywgdyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25k
aXRpb24oY29uZCkpKTsKICAgICB9CiAKQEAgLTcwNSw4ICs3MDUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgb3AyID0gdG1wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm11bGxfcihBUk1SZWdpc3RlcnM6OlMxLCBkZXN0LCBvcDEsIG9wMik7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzEsIG1fYXNzZW1ibGVyLmFz
cihkZXN0LCAzMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5tdWxsKEFSTVJlZ2lzdGVyczo6UzEs
IGRlc3QsIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wKEFSTVJlZ2lzdGVyczo6
UzEsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNo
TXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBz
cmMyLCBSZWdpc3RlcklEIGRlc3QpCkBAIC03NjMsNyArNzYzLDcgQEAgcHVibGljOgogICAgIEp1
bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25k
ID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3Vic19yKGRlc3QsIG9wMSwg
b3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBvcDEsIG9wMik7CiAgICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKICAgICB9
CiAKQEAgLTgwOSwxNiArODA5LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tcGFyZTMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihsZWZ0
LCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6
Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuY21wKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFS
TUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuY21wX3IobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1f
dmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoZGVz
dCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92
X3IoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkp
OworICAgICAgICBtX2Fzc2VtYmxlci5jbXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0
Lm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92KGRl
c3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7
CiAgICAgfQogCiAgICAgdm9pZCBjb21wYXJlOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCkBAIC04MzAs
MTEgKzgzMCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcF9yKDAsIHJlZyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoMCwgcmVn
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIudHN0X3IocmVnLCBtX2Fz
c2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgx
KSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcs
IG1fYXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lz
dGVySUQgZGVzdCkKQEAgLTg1MSwzMSArODUxLDMxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRk
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0
SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZChkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0
ZXJzOjpTMCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJfdW5f
aW1tKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5t
X3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShBUk1Bc3NlbWJsZXI6OkxvYWRVaW50
MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fz
c2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMSwgcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVw
KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJz
OjpTMSwgMCk7CiAgICAgICAgIGFkZDMyKGltbSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2Fz
dDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0cl91KEFS
TUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6
UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0
ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lz
dGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIo
VHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJfdW5faW1tKEFSTVJlZ2lzdGVyczo6UzEsIHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZD4oYWRkcmVzcy5tX3B0cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJfdShB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6
UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0
ZXJzOjpTMSwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0
ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CiAgICAgICAgIHN1YjMyKGltbSwgQVJNUmVn
aXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJz
OjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fcHRyKSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVy
czo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlx
dWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihh
ZGRyZXNzLm1fcHRyKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzAsIDApOwogICAg
IH0KIAogICAgIHZvaWQgbG9hZDMyKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkcl91bl9pbW0oQVJNUmVnaXN0ZXJzOjpT
MCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpT
MCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3Rl
cnM6OlMwLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBBUk1SZWdpc3Rl
cnM6OlMwLCAwKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC04OTMs
MTAgKzg5MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3Rl
cklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBBU1NFUlQoc2NhbGUgPj0gMCAm
JiBzY2FsZSA8PSAzMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6
cGMsIEFSTVJlZ2lzdGVyczo6cGMsIG1fYXNzZW1ibGVyLmxzbChpbmRleCwgc2NhbGUpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6cGMsIEFSTVJlZ2lzdGVyczo6cGMs
IG1fYXNzZW1ibGVyLmxzbChpbmRleCwgc2NhbGUpKTsKIAogICAgICAgICAvLyBOT1AgdGhlIGRl
ZmF1bHQgcHJlZmV0Y2hpbmcKLSAgICAgICAgbV9hc3NlbWJsZXIubW92X3IoQVJNUmVnaXN0ZXJz
OjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihBUk1SZWdp
c3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKICAgICB9CiAKICAgICBDYWxsIGNhbGwoKQpA
QCAtOTE5LDcgKzkxOSw3IEBAIHB1YmxpYzoKICAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRj
aChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsUHRyIGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bGRyX3VuX2ltbShkZXN0LCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5t
X3ZhbHVlKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCBy
ZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5tX3ZhbHVlKSk7CiAgICAgICAg
IHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQogCkBAIC05ODUsNyArOTg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9hZERvdWJsZShjb25zdCB2b2lkKiBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJN
V29yZD4oYWRkcmVzcykpLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZmR0cl91KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZUR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZERv
dWJsZSwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9y
ZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQpAQCAtMTAxMiwxNyAr
MTAxMiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9mNjRfcihkZXN0LCBzcmMpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIudm1vdl9mNjQoZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGFkZERv
dWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIudmFkZF9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGFkZERv
dWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0X3IoZGVzdCwgb3AxLCBvcDIp
OworICAgICAgICBtX2Fzc2VtYmxlci52YWRkX2Y2NChkZXN0LCBvcDEsIG9wMik7CiAgICAgfQog
CiAgICAgdm9pZCBhZGREb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAt
MTAzOSwxMiArMTAzOSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnZkaXZfZjY0X3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmRpdl9m
NjQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lz
dGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBt
X2Fzc2VtYmxlci52ZGl2X2Y2NChkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAgICAgdm9pZCBk
aXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTA1NiwxMiArMTA1
NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0X3Io
ZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjQoZGVzdCwgZGVz
dCwgc3JjKTsKICAgICB9CiAKICAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBG
UFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnZzdWJfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgICAgICBtX2Fzc2VtYmxlci52
c3ViX2Y2NChkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAgICAgdm9pZCBzdWJEb3VibGUoQWRk
cmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52bXVsX2Y2NF9yKGRlc3QsIGRlc3QsIHNy
Yyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtdWxfZjY0KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWxEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTA4MywyOCArMTA4MywyOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG11bERvdWJsZShGUFJl
Z2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZtdWxfZjY0X3IoZGVzdCwgb3AxLCBvcDIpOworICAgICAg
ICBtX2Fzc2VtYmxlci52bXVsX2Y2NChkZXN0LCBvcDEsIG9wMik7CiAgICAgfQogCiAgICAgdm9p
ZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIudnNxcnRfZjY0X3IoZGVzdCwgc3JjKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIudnNxcnRfZjY0KGRlc3QsIHNyYyk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWJz
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIudmFic19mNjRfcihkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxl
ci52YWJzX2Y2NChkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgbmVnYXRlRG91YmxlKEZQ
UmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudm5lZ19mNjRfcihkZXN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bmVnX2Y2
NChkZXN0LCBzcmMpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIudm1vdl92ZnAzMl9yKGRlc3QgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2
dF9mNjRfczMyX3IoZGVzdCwgZGVzdCA8PCAxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl92
ZnAzMihkZXN0IDw8IDEsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMihk
ZXN0LCBkZXN0IDw8IDEpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUo
QWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTEyMiwyMCArMTEyMiwyMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9m
MzJfcihkc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X2YzMihkc3QsIHNy
Yyk7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0RG91YmxlVG9GbG9hdChGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9m
MzJfZjY0X3IoZHN0LCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjQoZHN0
LCBzcmMpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBj
b25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIudmNtcF9mNjRfcihsZWZ0LCByaWdodCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnZjbXBfZjY0KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgbV9hc3NlbWJsZXIudm1yc19hcHNy
KCk7CiAgICAgICAgIGlmIChjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcF9yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6
UzAsIEFSTUFzc2VtYmxlcjo6VlMpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKEFSTVJl
Z2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6VlMpOwogICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoc3RhdGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpD
b25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uTWFzaykpKTsKICAgICB9CiAKQEAgLTEx
NDgsMTIgKzExNDgsMTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdHJ1bmNhdGVEb3VibGVU
b0ludDMyKHNyYywgZGVzdCk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX3IoQVJNUmVnaXN0
ZXJzOjpTMCwgZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYmljX3IoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNz
ZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lz
dGVyczo6UzAsIGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmJpYyhBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3Nl
bWJsZXI6OmdldE9wMkJ5dGUoMSkpOwogCiAgICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxl
cjo6Z2V0T3AyKDB4ODAwMDAwMDApOwogICAgICAgICBBU1NFUlQodyAhPSBBUk1Bc3NlbWJsZXI6
OkludmFsaWRJbW1lZGlhdGUpOwotICAgICAgICBtX2Fzc2VtYmxlci5jbXBfcihBUk1SZWdpc3Rl
cnM6OlMwLCB3KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wKEFSTVJlZ2lzdGVyczo6UzAsIHcp
OwogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFu
Y2hJZlRydW5jYXRlRmFpbGVkID8gQVJNQXNzZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUp
KTsKICAgICB9CiAKQEAgLTExNjEsMjQgKzExNjEsMjQgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihzcmMsIGRlc3QpOwogCi0gICAgICAgIG1fYXNzZW1i
bGVyLmFkZF9yKEFSTVJlZ2lzdGVyczo6UzAsIGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0
ZSgxKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpY19yKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5
dGUoMSkpOworICAgICAgICBtX2Fzc2VtYmxlci5iaWMoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKIAotICAgICAgICBtX2Fz
c2VtYmxlci5jbXBfcihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MCkpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXAoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDApKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1w
KGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEFSTUFzc2VtYmxlcjo6RVEg
OiBBUk1Bc3NlbWJsZXI6Ok5FKSk7CiAgICAgfQogCiAgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5l
ZCBpZiB0aGUgdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KICAgICB2b2lk
IHRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjRfcihBUk1SZWdpc3RlcnM6
OlNEMCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVzdCwg
QVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2
NChBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92
X2FybTMyKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOwogICAgIH0KIAogICAgIHZvaWQg
dHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9mNjRfcihBUk1SZWdpc3RlcnM6
OlNEMCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyX3IoZGVzdCwg
QVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfdTMyX2Y2
NChBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci52bW92
X2FybTMyKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOwogICAgIH0KIAogICAgIC8vIENv
bnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0
Jy4KQEAgLTExODcsMTEgKzExODcsMTEgQEAgcHVibGljOgogICAgIC8vIChzcGVjaWZpY2FsbHks
IGluIHRoaXMgY2FzZSwgMCkuCiAgICAgdm9pZCBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IEZQUmVnaXN0ZXJJRCBmcFRlbXApCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3Mz
Ml9mNjRfcihBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxl
ci52bW92X2FybTMyX3IoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZjdnRfczMyX2Y2NChBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOworICAg
ICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEp
OwogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJhY2sgdG8gZmxvYXQg
JiBjb21wYXJlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVhbCBvciB1bm9yZGVy
ZWQgKE5hTikgdGhlbiBqdW1wLgotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Y2NF9zMzJfcihB
Uk1SZWdpc3RlcnM6OlNEMCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnZjdnRfZjY0X3MzMihBUk1SZWdpc3RlcnM6OlNEMCwgQVJNUmVnaXN0ZXJzOjpTRDAg
PDwgMSk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoRG91YmxlKERvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQsIHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApKTsKIAogICAgICAgICAv
LyBJZiB0aGUgcmVzdWx0IGlzIHplcm8sIGl0IG1pZ2h0IGhhdmUgYmVlbiAtMC4wLCBhbmQgMC4w
IGVxdWFscyB0byAtMC4wCkBAIC0xMjAwLDE0ICsxMjAwLDE0IEBAIHB1YmxpYzoKIAogICAgIEp1
bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2Ny
YXRjaCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJlZ2lzdGVyczo6UzAs
IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwogICAgICAgICBj
b252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMwLCBzY3JhdGNoKTsKICAgICAgICAg
cmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3JhdGNoKTsKICAgICB9
CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJl
Z2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdl9yKEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdihBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkp
OwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMwLCBzY3JhdGNo
KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCBy
ZWcsIHNjcmF0Y2gpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>