<?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>19484</bug_id>
          
          <creation_ts>2008-06-11 09:32:13 -0700</creation_ts>
          <short_desc>More instructions needs to use temporary registers</short_desc>
          <delta_ts>2012-09-11 18:45:10 -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>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82963</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-11 09:32:13 -0700</bug_when>
    <thetext>The code

var a = 1;
print(a + ++a);

prints 4 instead of 3, because we are not moving &apos;a&apos; to a temporary registers. I fixed this for assignment nodes, but a similar thing needs to be done for a lot more nodes. I&apos;ll try to fix this for binary operations today and hope that it doesn&apos;t cause too much of a performance regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83286</commentid>
    <comment_count>1</comment_count>
      <attachid>21692</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-13 21:32:36 -0700</bug_when>
    <thetext>Created attachment 21692
Patch towards a fix

Here is the first step towards a solution. It makes codegen of expressions that might need a temporary for the LHS smarter when the RHS is a constant. It&apos;s not that big of a deal now, but it will matter more when we do this for more opcodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83287</commentid>
    <comment_count>2</comment_count>
      <attachid>21692</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-06-13 21:34:45 -0700</bug_when>
    <thetext>Comment on attachment 21692
Patch towards a fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83288</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-13 21:42:10 -0700</bug_when>
    <thetext>Landed in r34528.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83299</commentid>
    <comment_count>4</comment_count>
      <attachid>21695</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-14 00:16:39 -0700</bug_when>
    <thetext>Created attachment 21695
Fix for AddNode and SubNode

Here is a fix for the AddNode and SubNode case. It only adds one instruction in SunSpider, for the line

dnaInput = dnaInput + dnaInput + dnaInput;

in global code in regexp-dna.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83301</commentid>
    <comment_count>5</comment_count>
      <attachid>21695</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-06-14 00:38:50 -0700</bug_when>
    <thetext>Comment on attachment 21695
Fix for AddNode and SubNode

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83306</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-14 00:54:28 -0700</bug_when>
    <thetext>Landed in r34535.

I plan to do the multiplication nodes next, and finally the bit operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83309</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-06-14 01:05:37 -0700</bug_when>
    <thetext>Alas, you&apos;ll also need to deal unto the relational operators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83348</commentid>
    <comment_count>8</comment_count>
      <attachid>21705</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-14 22:16:03 -0700</bug_when>
    <thetext>Created attachment 21705
Patch to improve codegen

This patch makes codegen not use a temporary for the LHS if the RHS is a local variable. This improves code generation on SunSpider in a few places. It was a small regression on my machine, but Maciej says it is fine on his.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83349</commentid>
    <comment_count>9</comment_count>
      <attachid>21705</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-06-14 22:18:55 -0700</bug_when>
    <thetext>Comment on attachment 21705
Patch to improve codegen

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83353</commentid>
    <comment_count>10</comment_count>
      <attachid>21706</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-15 01:06:13 -0700</bug_when>
    <thetext>Created attachment 21706
Patch for binary operations

Here is a fix for binary operations. I will add tests soon, similar to the other cases I have already landed, but I wanted to put this up for review first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83354</commentid>
    <comment_count>11</comment_count>
      <attachid>21706</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-06-15 01:30:14 -0700</bug_when>
    <thetext>Comment on attachment 21706
Patch for binary operations

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83357</commentid>
    <comment_count>12</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-15 02:33:32 -0700</bug_when>
    <thetext>Landed in r34562. There are still cases with FunctionCallResolveNode and ForInNode to fix, but I don&apos;t know of any others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84310</commentid>
    <comment_count>13</comment_count>
      <attachid>21692</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-24 14:38:50 -0700</bug_when>
    <thetext>Comment on attachment 21692
Patch towards a fix

Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84311</commentid>
    <comment_count>14</comment_count>
      <attachid>21695</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-24 14:39:00 -0700</bug_when>
    <thetext>Comment on attachment 21695
Fix for AddNode and SubNode

Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84312</commentid>
    <comment_count>15</comment_count>
      <attachid>21705</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-24 14:39:12 -0700</bug_when>
    <thetext>Comment on attachment 21705
Patch to improve codegen

Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84313</commentid>
    <comment_count>16</comment_count>
      <attachid>21706</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-24 14:39:24 -0700</bug_when>
    <thetext>Comment on attachment 21706
Patch for binary operations

Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237188</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-11 17:43:48 -0700</bug_when>
    <thetext>Is this bug still actionable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717808</commentid>
    <comment_count>18</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-11 18:45:10 -0700</bug_when>
    <thetext>All examples given now work, looks like all bugs being tracked here are fixed.  Works for me, if I&apos;ve missed anything please reopen.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21692</attachid>
            <date>2008-06-13 21:32:36 -0700</date>
            <delta_ts>2010-06-10 15:44:13 -0700</delta_ts>
            <desc>Patch towards a fix</desc>
            <filename>tempconstant.diff</filename>
            <type>text/plain</type>
            <size>9085</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0NTI3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDgtMDYt
MTMgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxpbWluYXRlIHRoZSB1c2Ug
b2YgdGVtcG9yYXJpZXMgdG8gc3RvcmUgdGhlIGxlZnQgaGFuZCBzaWRlIG9mIGFuCisgICAgICAg
IGV4cHJlc3Npb24gd2hlbiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIGEgY29uc3RhbnQuIFRoaXMg
c2xpZ2h0bHkKKyAgICAgICAgaW1wcm92ZXMgdGhlIGdlbmVyYXRlZCBieXRlY29kZSBmb3IgYSBm
ZXcgU3VuU3BpZGVyIHRlc3RzLCBidXQgaXQgaXMKKyAgICAgICAgbW9zdGx5IGluIHByZXBhcmF0
aW9uIGZvciBmaXhpbmc6CisKKyAgICAgICAgQnVnIDE5NDg0OiBNb3JlIGluc3RydWN0aW9ucyBu
ZWVkcyB0byB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycworICAgICAgICA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDg0PgorCisgICAgICAgICogVk0vQ29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoS0pTOjpDb2RlR2VuZXJhdG9yOjpsZWZ0SGFuZFNpZGVOZWVkc0Nv
cHkpOgorICAgICAgICAoS0pTOjpDb2RlR2VuZXJhdG9yOjplbWl0Tm9kZUZvckxlZnRIYW5kU2lk
ZSk6CisgICAgICAgICoga2pzL25vZGVzLmNwcDoKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vz
c29yTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6
OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6QXNzaWduRG90Tm9kZTo6ZW1pdENvZGUpOgorICAg
ICAgICAoS0pTOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpB
c3NpZ25CcmFja2V0Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpSZWFkTW9kaWZ5QnJh
Y2tldE5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKiBranMvbm9kZXMuaDoKKyAgICAgICAgKEtK
Uzo6RXhwcmVzc2lvbk5vZGU6Oik6CisgICAgICAgIChLSlM6OkZhbHNlTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6VHJ1ZU5vZGU6Oik6CisgICAgICAgIChLSlM6Ok51bWJlck5vZGU6Oik6CisgICAg
ICAgIChLSlM6OlN0cmluZ05vZGU6Oik6CisKIDIwMDgtMDYtMTMgIE1hY2llaiBTdGFjaG93aWFr
ICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBW
TS9Db2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5oCShyZXZp
c2lvbiAzNDUyNykKKysrIFZNL0NvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTcx
LDE0ICsxNzEsMTQgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgICAgICByZXR1cm4gZW1pdE5v
ZGUoMCwgbik7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhh
bmRTaWRlTmVlZHNDb3B5KGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgQUxXQVlT
X0lOTElORSBib29sIGxlZnRIYW5kU2lkZU5lZWRzQ29weShib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMsIGJvb2wgcmlnaHRJc0NvbnN0YW50KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bV9jb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4gfHwgcmlnaHRIYXNBc3NpZ25tZW50czsKKyAgICAgICAgICAgIHJldHVybiAobV9jb2Rl
VHlwZSAhPSBGdW5jdGlvbkNvZGUgfHwgbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4g
fHwgcmlnaHRIYXNBc3NpZ25tZW50cykgJiYgIXJpZ2h0SXNDb25zdGFudDsKICAgICAgICAgfQog
Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxSZWdpc3RlcklEPiBlbWl0Tm9kZUZv
ckxlZnRIYW5kU2lkZShFeHByZXNzaW9uTm9kZSogbiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8UmVnaXN0ZXJJRD4gZW1pdE5vZGVG
b3JMZWZ0SGFuZFNpZGUoRXhwcmVzc2lvbk5vZGUqIG4sIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgYm9vbCByaWdodElzQ29uc3RhbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChsZWZ0
SGFuZFNpZGVOZWVkc0NvcHkocmlnaHRIYXNBc3NpZ25tZW50cykpIHsKKyAgICAgICAgICAgIGlm
IChsZWZ0SGFuZFNpZGVOZWVkc0NvcHkocmlnaHRIYXNBc3NpZ25tZW50cywgcmlnaHRJc0NvbnN0
YW50KSkgewogICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0ID0gbmV3
VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICAgICAgZW1pdE5vZGUoZHN0LmdldCgpLCBuKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZHN0OwpJbmRleDoga2pzL25vZGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBranMvbm9kZXMuY3BwCShyZXZpc2lvbiAzNDUyNykKKysrIGtqcy9ub2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwOSw3ICs0MDksNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0Q29kZShDCiAKIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRD
b2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZS5nZXQoKSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNl
LmdldCgpLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBtX3N1YnNjcmlwdC5nZXQoKS0+aXND
b25zdGFudCgpKTsKICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX3N1YnNjcmlwdC5nZXQoKSk7CiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZh
bChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eSk7
CkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6
OmVtaXRDCiAgICAgICAgICAgICByZXR1cm4gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwsIHNyYzIsIG1fb3Bl
cmF0b3IpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoZ2VuZXJhdG9yLmxlZnRI
YW5kU2lkZU5lZWRzQ29weShtX3JpZ2h0SGFzQXNzaWdubWVudHMpICYmICFtX3JpZ2h0LmdldCgp
LT5pc051bWJlcigpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IubGVmdEhhbmRTaWRlTmVlZHND
b3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC5nZXQoKS0+aXNDb25zdGFudCgpKSkg
ewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShyZXN1bHQuZ2V0KCks
IGxvY2FsKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9yaWdodC5nZXQoKSk7CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBSZWdpc3RlcklEKiBBc3Np
Z25SZXNvbHZlTm9kZTo6ZW1pdENvZGUoCiAKIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVt
aXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKG1fYmFzZS5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2Uu
Z2V0KCksIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC5nZXQoKS0+aXNDb25zdGFudCgp
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZGVzdGluYXRpb25G
b3JBc3NpZ25SZXN1bHQoZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCByZXN1bHQpOwpAQCAtMTEyNiw3ICsxMTI2LDcg
QEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdENvZGUoQ29kZQogCiBSZWdpc3RlcklE
KiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKG1fYmFzZS5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3Jp
Z2h0LmdldCgpLT5pc0NvbnN0YW50KCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZ2lzdGVySUQqIGNoYW5nZSA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX3JpZ2h0LmdldCgpKTsKICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBl
bWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIGNoYW5nZSwgbV9vcGVyYXRvcik7
CkBAIC0xMTQ0LDggKzExNDQsOCBAQCBSZWdpc3RlcklEKiBBc3NpZ25FcnJvck5vZGU6OmVtaXRD
b2RlKENvCiAKIFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Q29kZShDb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UuZ2V0
KCksIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHMgfHwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKTsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JM
ZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQuZ2V0KCksIG1fcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFu
ZFNpZGUobV9iYXNlLmdldCgpLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmlnaHRI
YXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQuZ2V0KCktPmlzQ29uc3RhbnQoKSAmJiBtX3JpZ2h0
LmdldCgpLT5pc0NvbnN0YW50KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9
IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdC5nZXQoKSwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LmdldCgpLT5pc0NvbnN0YW50KCkpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlvbkZvckFzc2lnblJl
c3VsdChkc3QpOwogICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2
YWx1ZS5nZXQoKSwgbV9yaWdodC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChi
YXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgcmVzdWx0KTsKQEAgLTExNTQsOCArMTE1NCw4IEBA
IFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Q29kZSgKIAogUmVnaXN0ZXJJRCog
UmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UuZ2V0KCksIG1fc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMgfHwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJz
Y3JpcHQuZ2V0KCksIG1fcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLmdldCgp
LCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9z
dWJzY3JpcHQuZ2V0KCktPmlzQ29uc3RhbnQoKSAmJiBtX3JpZ2h0LmdldCgpLT5pc0NvbnN0YW50
KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdC5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRz
LCBtX3JpZ2h0LmdldCgpLT5pc0NvbnN0YW50KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICBSZWdpc3RlcklEKiBjaGFu
Z2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9yaWdodC5nZXQoKSk7CkluZGV4OiBranMvbm9kZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuaAkocmV2aXNpb24gMzQ1MjcpCisrKyBranMvbm9k
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFu
dCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNr
ZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC0yNTksNiArMjYwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFT
VF9DQUxMOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNl
ZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNQcmltYXJ5OyB9CiAgICAgfTsK
QEAgLTI3Miw2ICsyNzQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19G
QVNUX0NBTEw7CiAKKyAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJl
Y2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1ByaW1hcnk7IH0KICAgICB9
OwpAQCAtMzAxLDYgKzMwNCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIFBy
ZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHNpZ25iaXQobV9kb3VibGUpID8g
UHJlY1VuYXJ5IDogUHJlY1ByaW1hcnk7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1i
ZXIoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVh
bCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0K
ICAgICAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2Rv
dWJsZTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZG91YmxlIGQpIEtKU19GQVNU
X0NBTEwgeyBtX2RvdWJsZSA9IGQ7IH0KIApAQCAtMzMzLDYgKzMzNyw3IEBAIG5hbWVzcGFjZSBL
SlMgewogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKIAorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDb25zdGFudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjUHJpbWFyeTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21695</attachid>
            <date>2008-06-14 00:16:39 -0700</date>
            <delta_ts>2008-06-24 14:39:00 -0700</delta_ts>
            <desc>Fix for AddNode and SubNode</desc>
            <filename>addtemp.diff</filename>
            <type>text/plain</type>
            <size>8949</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM0NTM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDgtMDYtMTQgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE5NDg0OiBNb3JlIGluc3RydWN0aW9ucyBu
ZWVkcyB0byB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycworICAgICAgICA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDg0PgorCisgICAgICAgIE1ha2UgY29kZSBnZW5l
cmF0aW9uIGZvciBBZGROb2RlIGFuZCBTdWJOb2RlIHVzZSB0ZW1wb3JhcmllcyB3aGVuCisgICAg
ICAgIG5lY2Vzc2FyeS4KKworICAgICAgICAqIGtqcy9ncmFtbWFyLnk6CisgICAgICAgICoga2pz
L25vZGVzLmNwcDoKKyAgICAgICAgKEtKUzo6QWRkTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAo
S0pTOjpTdWJOb2RlOjplbWl0Q29kZSk6CisgICAgICAgICoga2pzL25vZGVzLmg6CisgICAgICAg
IChLSlM6OkFkZE5vZGU6Oik6CisgICAgICAgIChLSlM6OlN1Yk5vZGU6Oik6CisKIDIwMDgtMDYt
MTMgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2dyYW1tYXIueQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55CShyZXZpc2lvbiAzNDUy
OSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFsbG93QXV0b21hdGljU2VtaWNvbAogdXNp
bmcgbmFtZXNwYWNlIEtKUzsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyBBZGROb2Rl
KiBtYWtlQWRkTm9kZShFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CitzdGF0aWMg
QWRkTm9kZSogbWFrZUFkZE5vZGUoRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiBzdGF0aWMgTGVzc05vZGUqIG1ha2VMZXNzTm9kZShF
eHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CiBzdGF0aWMgRXhwcmVzc2lvbk5vZGUq
IG1ha2VBc3NpZ25Ob2RlKEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVu
dHMpOwogc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShFeHByZXNzaW9uTm9k
ZSogZXhwciwgT3BlcmF0b3IpOwpAQCAtNDc3LDE2ICs0NzcsMTYgQEAgTXVsdGlwbGljYXRpdmVF
eHByTm9CRjoKIAogQWRkaXRpdmVFeHByOgogICAgIE11bHRpcGxpY2F0aXZlRXhwcgotICB8IEFk
ZGl0aXZlRXhwciAnKycgTXVsdGlwbGljYXRpdmVFeHByIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVy
ZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlQWRkTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSks
ICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQotICB8IEFkZGl0aXZlRXhw
ciAnLScgTXVsdGlwbGljYXRpdmVFeHByIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhw
cmVzc2lvbk5vZGUqPihuZXcgU3ViTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVh
dHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IEFkZGl0aXZlRXhwciAnKycgTXVs
dGlwbGljYXRpdmVFeHByIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihtYWtlQWRkTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAm
IEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0K
KyAgfCBBZGRpdGl2ZUV4cHIgJy0nIE11bHRpcGxpY2F0aXZlRXhwciB7ICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFN1Yk5vZGUoJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5m
byB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIEFkZGl0aXZlRXhwck5vQkY6CiAgICAgTXVs
dGlwbGljYXRpdmVFeHByTm9CRgogICB8IEFkZGl0aXZlRXhwck5vQkYgJysnIE11bHRpcGxpY2F0
aXZlRXhwcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBj
cmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlQWRkTm9kZSgkMS5tX25v
ZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2Rl
RmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihtYWtlQWRkTm9kZSgkMS5tX25vZGUsICQzLm1f
bm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZv
IHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBBZGRpdGl2ZUV4cHJOb0JGICctJyBNdWx0aXBs
aWNhdGl2ZUV4cHIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQk
ID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFN1Yk5vZGUoJDEu
bV9ub2RlLCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRl
Tm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFN1Yk5vZGUoJDEubV9ub2RlLCAk
My5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJl
SW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIFNoaWZ0RXhwcjoKQEAgLTEwOTQsOSAr
MTA5NCw5IEBAIFNvdXJjZUVsZW1lbnQ6CiAgCiAlJQogCi1zdGF0aWMgQWRkTm9kZSogbWFrZUFk
ZE5vZGUoRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCkKK3N0YXRp
YyBBZGROb2RlKiBtYWtlQWRkTm9kZShFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBB
ZGROb2RlKGxlZnQsIHJpZ2h0KTsKKyAgICByZXR1cm4gbmV3IEFkZE5vZGUobGVmdCwgcmlnaHQs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCiBzdGF0aWMgTGVzc05vZGUqIG1ha2VMZXNzTm9k
ZShFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KQpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvbm9kZXMuY3BwCShyZXZpc2lvbiAzNDUyOSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyMywxNCArODIzLDE0IEBAIFJlZ2lzdGVySUQqIE1v
ZE5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmEKIAogUmVnaXN0ZXJJRCogQWRkTm9kZTo6ZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV90ZXJtMS5nZXQoKSk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0
SGFuZFNpZGUobV90ZXJtMS5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3Rlcm0yLmdl
dCgpLT5pc0NvbnN0YW50KCkpOwogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV90ZXJtMi5nZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QWRkKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIp
OwogfQogCiBSZWdpc3RlcklEKiBTdWJOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX3Rlcm0xLmdldCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3Rlcm0xLmdldCgp
LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fdGVybTIuZ2V0KCktPmlzQ29uc3RhbnQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3Rlcm0yLmdldCgpKTsK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRTdWIoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMik7CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvbm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMu
aAkocmV2aXNpb24gMzQ1MjkpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI1MCw5ICsxMjUwLDEwIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xh
c3MgQWRkTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBBZGROb2RlKEV4cHJlc3Npb25Ob2RlKiB0ZXJtMSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0yKSBL
SlNfRkFTVF9DQUxMCisgICAgICAgIEFkZE5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHBy
ZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBtX3Rlcm0xKHRlcm0xKQogICAgICAgICAgICAgLCBtX3Rlcm0yKHRl
cm0yKQorICAgICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTEyNjEsMjMgKzEyNjIsMjYgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29u
c3QgeyByZXR1cm4gUHJlY0FkZGl0aXZlOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEFk
ZE5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIEpTVHlw
ZSBleHBlY3RlZFJldHVybikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBBZGROb2RlKEV4cHJlc3Np
b25Ob2RlKiB0ZXJtMSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0yLCBKU1R5cGUgZXhwZWN0ZWRSZXR1
cm4sIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShleHBlY3RlZFJldHVybikKICAgICAgICAgICAgICwgbV90ZXJtMSh0
ZXJtMSkKICAgICAgICAgICAgICwgbV90ZXJtMih0ZXJtMikKKyAgICAgICAgICAgICwgbV9yaWdo
dEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAg
fQogCiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV90ZXJtMTsKICAgICAgICAgUmVm
UHRyPEV4cHJlc3Npb25Ob2RlPiBtX3Rlcm0yOworICAgICAgICBib29sIG1fcmlnaHRIYXNBc3Np
Z25tZW50czsKICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdWJOb2RlKEV4cHJlc3Npb25Ob2RlKiB0ZXJt
MSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0yKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFN1Yk5vZGUo
RXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShOdW1iZXJUeXBlKQogICAgICAgICAgICAgLCBtX3Rlcm0xKHRlcm0xKQogICAgICAgICAgICAg
LCBtX3Rlcm0yKHRlcm0yKQorICAgICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmln
aHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTEyODgsNiArMTI5
Miw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxFeHBy
ZXNzaW9uTm9kZT4gbV90ZXJtMTsKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX3Rl
cm0yOworICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCiAgICAg
Y2xhc3MgTGVmdFNoaWZ0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAzNDUzNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDA4LTA2LTE0ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hA
dXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzIGZvcjoKKworICAgICAgICBCdWcgMTk0ODQ6IE1vcmUgaW5zdHJ1Y3Rpb25z
IG5lZWRzIHRvIHVzZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzCisgICAgICAgIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0ODQ+CisKKyAgICAgICAgKiBmYXN0L2pzL2Nv
ZGVnZW4tdGVtcG9yYXJpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvcmVzb3Vy
Y2VzL2NvZGVnZW4tdGVtcG9yYXJpZXMuanM6CisKIDIwMDgtMDYtMTMgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY29kZWdlbi10ZW1wb3Jhcmllcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jb2RlZ2VuLXRlbXBvcmFyaWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMzQ1MjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2NvZGVn
ZW4tdGVtcG9yYXJpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miwx
MiBAQCBQQVNTIGJyYWNrZXRfdGVzdDMoKSBpcyAwCiBQQVNTIGJyYWNrZXRfdGVzdDQoKSBpcyAw
CiBQQVNTIGJyYWNrZXRfdGVzdDUoKSBpcyAxCiBQQVNTIGJyYWNrZXRfdGVzdDYoKSBpcyAxCitQ
QVNTIGFkZF90ZXN0MSgpIGlzIDMKK1BBU1MgYWRkX3Rlc3QyKCkgaXMgMworUEFTUyBhZGRfdGVz
dDMoKSBpcyAzCitQQVNTIHN1Yl90ZXN0MSgpIGlzIC0xCitQQVNTIHN1Yl90ZXN0MigpIGlzIC0x
CitQQVNTIHN1Yl90ZXN0MygpIGlzIC0xCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2Nv
ZGVnZW4tdGVtcG9yYXJpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvY29kZWdlbi10ZW1wb3Jhcmllcy5qcwkocmV2aXNpb24gMzQ1MjcpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9jb2RlZ2VuLXRlbXBvcmFyaWVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTAsNCArMzUwLDUyIEBAIGZ1bmN0aW9uIGJyYWNrZXRfdGVzdDYoKQogCiBz
aG91bGRCZSgiYnJhY2tldF90ZXN0NigpIiwgIjEiKTsKIAorZnVuY3Rpb24gYWRkX3Rlc3QxKCkK
K3sKKyAgICB2YXIgYSA9IDE7CisgICAgcmV0dXJuIGEgKyAoYSA9IDIpOworfQorCitzaG91bGRC
ZSgiYWRkX3Rlc3QxKCkiLCAiMyIpOworCitmdW5jdGlvbiBhZGRfdGVzdDIoKQoreworICAgIHZh
ciBhID0gMTsKKyAgICByZXR1cm4gYSArICsrYTsKK30KKworc2hvdWxkQmUoImFkZF90ZXN0Migp
IiwgIjMiKTsKKworZnVuY3Rpb24gYWRkX3Rlc3QzKCkKK3sKKyAgICB2YXIgYSA9IDE7CisgICAg
cmV0dXJuIGEgKyAoYSArPSAxKTsKK30KKworc2hvdWxkQmUoImFkZF90ZXN0MygpIiwgIjMiKTsK
KworZnVuY3Rpb24gc3ViX3Rlc3QxKCkKK3sKKyAgICB2YXIgYSA9IDE7CisgICAgcmV0dXJuIGEg
LSAoYSA9IDIpOworfQorCitzaG91bGRCZSgic3ViX3Rlc3QxKCkiLCAiLTEiKTsKKworZnVuY3Rp
b24gc3ViX3Rlc3QyKCkKK3sKKyAgICB2YXIgYSA9IDE7CisgICAgcmV0dXJuIGEgLSArK2E7Cit9
CisKK3Nob3VsZEJlKCJzdWJfdGVzdDIoKSIsICItMSIpOworCitmdW5jdGlvbiBzdWJfdGVzdDMo
KQoreworICAgIHZhciBhID0gMTsKKyAgICByZXR1cm4gYSAtIChhICs9IDEpOworfQorCitzaG91
bGRCZSgic3ViX3Rlc3QzKCkiLCAiLTEiKTsKKwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21705</attachid>
            <date>2008-06-14 22:16:03 -0700</date>
            <delta_ts>2008-06-24 14:39:12 -0700</delta_ts>
            <desc>Patch to improve codegen</desc>
            <filename>temps.diff</filename>
            <type>text/plain</type>
            <size>12281</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0NTU0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDgtMDYt
MTQgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBjb2RlIGdlbmVyYXRp
b24gbm90IHVzZSBhIHRlbXBvcmFyeSBmb3IgdGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuCisgICAg
ICAgIGV4cHJlc3Npb24gaWYgdGhlIHJpZ2h0LWhhbmQgc2lkZSBpcyBhIGxvY2FsIHZhcmlhYmxl
LgorCisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChLSlM6OkNvZGVH
ZW5lcmF0b3I6OmlzTG9jYWwpOgorICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEtKUzo6Q29kZUdlbmVyYXRvcjo6bGVmdEhhbmRTaWRlTmVlZHNDb3B5KToKKyAgICAgICAg
KEtKUzo6Q29kZUdlbmVyYXRvcjo6ZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUpOgorICAgICAgICAq
IGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OlJlc29sdmVOb2RlOjppc1B1cmUpOgorICAg
ICAgICAoS0pTOjpCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6
OkFkZE5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAgKEtKUzo6U3ViTm9kZTo6ZW1pdENvZGUpOgor
ICAgICAgICAoS0pTOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRDb2RlKToKKyAgICAgICAg
KEtKUzo6QXNzaWduRG90Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpSZWFkTW9kaWZ5
RG90Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6ZW1p
dENvZGUpOgorICAgICAgICAoS0pTOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRDb2RlKToK
KyAgICAgICAgKiBranMvbm9kZXMuaDoKKyAgICAgICAgKEtKUzo6RXhwcmVzc2lvbk5vZGU6Oik6
CisgICAgICAgIChLSlM6OkJvb2xlYW5Ob2RlOjopOgorICAgICAgICAoS0pTOjpOdW1iZXJOb2Rl
OjopOgorICAgICAgICAoS0pTOjpTdHJpbmdOb2RlOjopOgorCiAyMDA4LTA2LTE0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0uCkluZGV4
OiBWTS9Db2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9Db2RlR2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMzQ1NTIpCisrKyBWTS9Db2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQzLDYgKzM0MywxNCBAQCBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjpyZWdpc3Rl
ckZvckxvCiAgICAgcmV0dXJuICZtX2xvY2Fsc1tsb2NhbHNJbmRleChlbnRyeS5nZXRJbmRleCgp
KV07CiB9CiAKK2Jvb2wgQ29kZUdlbmVyYXRvcjo6aXNMb2NhbChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKK3sKKyAgICBpZiAoaWRlbnQgPT0gbV9wcm9wZXJ0eU5hbWVzLT50aGlzSWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIHNob3VsZE9wdGltaXpl
TG9jYWxzKCkgJiYgc3ltYm9sVGFibGUoKS5jb250YWlucyhpZGVudC51c3RyaW5nKCkucmVwKCkp
OworfQorCiBib29sIENvZGVHZW5lcmF0b3I6OmlzTG9jYWxDb25zdGFudChjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKIHsKICAgICByZXR1cm4gc3ltYm9sVGFibGUoKS5nZXQoaWRlbnQudXN0cmlu
ZygpLnJlcCgpKS5pc1JlYWRPbmx5KCk7CkluZGV4OiBWTS9Db2RlR2VuZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAzNDU1MikKKysrIFZNL0NvZGVH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICAvLyBSZXR1cm5zIHRoZSByZWdpc3RlciBzdG9yaW5nICJ0aGlzIgogICAg
ICAgICBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIoKSB7IHJldHVybiAmbV90aGlzUmVnaXN0ZXI7
IH0KIAorICAgICAgICBib29sIGlzTG9jYWwoY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBi
b29sIGlzTG9jYWxDb25zdGFudChjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgbmV4dCBhdmFpbGFibGUgdGVtcG9yYXJ5IHJlZ2lzdGVyLiBSZWdpc3RlcnMgcmV0
dXJuZWQgYnkKQEAgLTE3MSwxNCArMTcyLDE0IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICAg
ICAgcmV0dXJuIGVtaXROb2RlKDAsIG4pOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lO
TElORSBib29sIGxlZnRIYW5kU2lkZU5lZWRzQ29weShib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGJvb2wgcmlnaHRJc0NvbnN0YW50KQorICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGVmdEhh
bmRTaWRlTmVlZHNDb3B5KGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodElzUHVy
ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChtX2NvZGVUeXBlICE9IEZ1bmN0aW9u
Q29kZSB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbiB8fCByaWdodEhhc0Fzc2ln
bm1lbnRzKSAmJiAhcmlnaHRJc0NvbnN0YW50OworICAgICAgICAgICAgcmV0dXJuIChtX2NvZGVU
eXBlICE9IEZ1bmN0aW9uQ29kZSB8fCBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbiB8
fCByaWdodEhhc0Fzc2lnbm1lbnRzKSAmJiAhcmlnaHRJc1B1cmU7CiAgICAgICAgIH0KIAotICAg
ICAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8UmVnaXN0ZXJJRD4gZW1pdE5vZGVGb3JMZWZ0
SGFuZFNpZGUoRXhwcmVzc2lvbk5vZGUqIG4sIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodElzQ29uc3RhbnQpCisgICAgICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxSZWdp
c3RlcklEPiBlbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShFeHByZXNzaW9uTm9kZSogbiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SXNQdXJlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobGVmdEhhbmRTaWRlTmVlZHNDb3B5KHJpZ2h0SGFzQXNzaWdubWVudHMsIHJpZ2h0
SXNDb25zdGFudCkpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0SGFuZFNpZGVOZWVkc0NvcHkocmln
aHRIYXNBc3NpZ25tZW50cywgcmlnaHRJc1B1cmUpKSB7CiAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxSZWdpc3RlcklEPiBkc3QgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgICAgICBl
bWl0Tm9kZShkc3QuZ2V0KCksIG4pOwogICAgICAgICAgICAgICAgIHJldHVybiBkc3Q7CkluZGV4
OiBranMvbm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5jcHAJKHJldmlzaW9uIDM0
NTUyKQorKysga2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxMSBA
QCBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKK2Jvb2wgUmVzb2x2ZU5vZGU6OmlzUHVyZShDb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdlbmVyYXRvci5pc0xvY2FsKG1faWRlbnQp
OworfQorCiBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2Fs
ID0gZ2VuZXJhdG9yLnJlZ2lzdGVyRm9yTG9jYWwobV9pZGVudCkpCkBAIC00MDIsNyArNDA3LDcg
QEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdENvZGUoQwogCiBSZWdpc3RlcklE
KiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UuZ2V0KCksIG1fc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMsIG1fc3Vic2NyaXB0LmdldCgpLT5pc0NvbnN0YW50KCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1f
YmFzZS5nZXQoKSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQuZ2V0KCkt
PmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWdpc3RlcklEKiBwcm9wZXJ0eSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShtX3N1YnNjcmlwdC5nZXQoKSk7CiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRHZXRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eSk7CkBAIC04MjMsMTQgKzgyOCwxNCBAQCBSZWdpc3RlcklEKiBNb2ROb2RlOjplbWl0
Q29kZShDb2RlR2VuZXJhCiAKIFJlZ2lzdGVySUQqIEFkZE5vZGU6OmVtaXRDb2RlKENvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fdGVybTEuZ2V0
KCksIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV90ZXJtMi5nZXQoKS0+aXNDb25zdGFudCgpKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRI
YW5kU2lkZShtX3Rlcm0xLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fdGVybTIuZ2V0
KCktPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWdpc3RlcklEKiBzcmMyID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fdGVybTIuZ2V0KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEFkZChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBz
cmMyKTsKIH0KIAogUmVnaXN0ZXJJRCogU3ViTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzEgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV90ZXJtMS5nZXQoKSwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzLCBtX3Rlcm0yLmdldCgpLT5pc0NvbnN0YW50KCkpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fdGVybTEuZ2V0KCksIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV90ZXJtMi5nZXQoKS0+aXNQ
dXJlKGdlbmVyYXRvcikpOwogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV90ZXJtMi5nZXQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0U3ViKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIpOwog
fQpAQCAtMTA0OCw3ICsxMDUzLDcgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJlc29sdmVOb2Rl
OjplbWl0QwogICAgICAgICAgICAgcmV0dXJuIGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5l
cmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsLCBzcmMyLCBtX29w
ZXJhdG9yKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGdlbmVyYXRvci5sZWZ0
SGFuZFNpZGVOZWVkc0NvcHkobV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LmdldCgpLT5p
c0NvbnN0YW50KCkpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IubGVmdEhhbmRTaWRlTmVlZHND
b3B5KG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC5nZXQoKS0+aXNQdXJlKGdlbmVyYXRv
cikpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKHJlc3VsdC5n
ZXQoKSwgbG9jYWwpOwogICAgICAgICAgICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX3JpZ2h0LmdldCgpKTsKQEAgLTExMDgsNyArMTExMyw3IEBAIFJlZ2lzdGVySUQq
IEFzc2lnblJlc29sdmVOb2RlOjplbWl0Q29kZSgKIAogUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9k
ZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0
SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQuZ2V0
KCktPmlzQ29uc3RhbnQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMsIG1fcmlnaHQuZ2V0KCktPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZGVzdGluYXRpb25Gb3JBc3NpZ25SZXN1bHQoZHN0
KTsKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0
KCksIG1fcmlnaHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCBtX2lkZW50LCByZXN1bHQpOwpAQCAtMTExOSw3ICsxMTI0LDcgQEAgUmVnaXN0ZXJJRCogQXNz
aWduRG90Tm9kZTo6ZW1pdENvZGUoQ29kZQogCiBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9k
ZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0
SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQuZ2V0
KCktPmlzQ29uc3RhbnQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMsIG1fcmlnaHQuZ2V0KCktPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiBjaGFu
Z2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9yaWdodC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
dXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBjaGFu
Z2UsIG1fb3BlcmF0b3IpOwpAQCAtMTEzNyw4ICsxMTQyLDggQEAgUmVnaXN0ZXJJRCogQXNzaWdu
RXJyb3JOb2RlOjplbWl0Q29kZShDbwogCiBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6
ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFu
ZFNpZGUobV9iYXNlLmdldCgpLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmlnaHRI
YXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQuZ2V0KCktPmlzQ29uc3RhbnQoKSAmJiBtX3JpZ2h0
LmdldCgpLT5pc0NvbnN0YW50KCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9
IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdC5nZXQoKSwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LmdldCgpLT5pc0NvbnN0YW50KCkpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZS5nZXQoKSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyB8fCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMsIG1fc3Vic2NyaXB0LmdldCgpLT5pc1B1cmUoZ2VuZXJhdG9yKSAmJiBtX3JpZ2h0
LmdldCgpLT5pc1B1cmUoZ2VuZXJhdG9yKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3Bl
cnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LmdldCgp
LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQuZ2V0KCktPmlzUHVyZShnZW5lcmF0b3Ip
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZGVzdGluYXRpb25G
b3JBc3NpZ25SZXN1bHQoZHN0KTsKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHJlc3VsdCk7CkBAIC0xMTQ3LDgg
KzExNTIsOCBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdENvZGUoCiAKIFJl
Z2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLmdldCgpLCBtX3N1
YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3Jp
cHQuZ2V0KCktPmlzQ29uc3RhbnQoKSAmJiBtX3JpZ2h0LmdldCgpLT5pc0NvbnN0YW50KCkpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxl
ZnRIYW5kU2lkZShtX3N1YnNjcmlwdC5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3Jp
Z2h0LmdldCgpLT5pc0NvbnN0YW50KCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZS5nZXQoKSwgbV9zdWJzY3Jp
cHRIYXNBc3NpZ25tZW50cyB8fCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fc3Vic2NyaXB0Lmdl
dCgpLT5pc1B1cmUoZ2VuZXJhdG9yKSAmJiBtX3JpZ2h0LmdldCgpLT5pc1B1cmUoZ2VuZXJhdG9y
KSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LmdldCgpLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMs
IG1fcmlnaHQuZ2V0KCktPmlzUHVyZShnZW5lcmF0b3IpKTsKIAogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
Y2hhbmdlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fcmlnaHQuZ2V0KCkpOwpJbmRleDoga2pzL25v
ZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2pzL25vZGVzLmgJKHJldmlzaW9uIDM0NTUyKQorKysga2pz
L25vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQ29u
c3RhbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9ICAgICAgICAKKyAg
ICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJhdG9yJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xv
Y2F0aW9uKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgpIGNv
bnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTI2MSw3ICsyNjEsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CiAKLSAgICAgICAg
dmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJhdG9yJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFs
IFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNQcmltYXJ5OyB9CiAK
QEAgLTI4Myw3ICsyODMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBzaWduYml0KG1fZG91YmxlKSA/IFBy
ZWNVbmFyeSA6IFByZWNQcmltYXJ5OyB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVy
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnN0YW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQ29kZUdlbmVyYXRvciYpIGNvbnN0IEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIG1fZG91YmxlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZShkb3VibGUgZCkgS0pTX0ZBU1RfQ0FMTCB7IG1fZG91YmxlID0gZDsgfQogCkBAIC0zMTYs
NyArMzE2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxM
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQ29kZUdlbmVy
YXRvciYpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAg
ICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVj
UHJpbWFyeTsgfQogCkBAIC0zNzEsNiArMzcxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IFByZWNQcmltYXJ5OyB9CiAKKyAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJh
dG9yJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRp
b24oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7
IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gbV9pZGVudDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21706</attachid>
            <date>2008-06-15 01:06:13 -0700</date>
            <delta_ts>2008-06-24 14:39:24 -0700</delta_ts>
            <desc>Patch for binary operations</desc>
            <filename>binops.diff</filename>
            <type>text/plain</type>
            <size>68615</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0NTYx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODkgQEAKKzIwMDgtMDYt
MTUgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE5NDg0OiBNb3JlIGlu
c3RydWN0aW9ucyBuZWVkcyB0byB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycworICAgICAgICA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDg0PgorCisgICAgICAgIEZp
eCBjb2RlZ2VuIGZvciBhbGwgYmluYXJ5IG9wZXJhdGlvbnMgc28gdGhhdCB0ZW1wb3JhcmllcyBh
cmUgdXNlZCBpZgorICAgICAgICBuZWNlc3NhcnkuIFRoaXMgd2FzIGRvbmUgYnkgbWFraW5nIEJp
bmFyeU9wTm9kZSBhbmQgUmV2ZXJzZUJpbmFyeU9wTm9kZQorICAgICAgICBzdWJjbGFzc2VzIG9m
IEV4cHJlc3Npb25Ob2RlLCBhbmQgZWxpbWluYXRpbmcgdGhlIGN1c3RvbSBlbWl0Q29kZSgpCisg
ICAgICAgIG1ldGhvZHMgZm9yIHRoZSBpbmRpdmlkdWFsIG5vZGUgY2xhc3Nlcy4KKworICAgICAg
ICBUaGlzIG9ubHkgYWRkcyAzIG5ldyBpbnN0cnVjdGlvbnMgdG8gU3VuU3BpZGVyIGNvZGUsIGFu
ZCB0aGVyZSBpcyBubworICAgICAgICBkaWZmZXJlbmNlIGluIFN1blNwaWRlciBleGVjdXRpb24g
dGltZS4KKworICAgICAgICAqIFZNL0NvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoS0pTOjpD
b2RlR2VuZXJhdG9yOjplbWl0Qml0Tm90KToKKyAgICAgICAgKEtKUzo6Q29kZUdlbmVyYXRvcjo6
ZW1pdEJpbmFyeU9wKToKKyAgICAgICAgKiBWTS9Db2RlR2VuZXJhdG9yLmg6CisgICAgICAgICog
a2pzL2dyYW1tYXIueToKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpQ
cmVJbmNSZXNvbHZlTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpQcmVEZWNSZXNvbHZl
Tm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAoS0pTOjpCaW5hcnlPcE5vZGU6OmVtaXRDb2RlKToK
KyAgICAgICAgKEtKUzo6UmV2ZXJzZUJpbmFyeU9wTm9kZTo6ZW1pdENvZGUpOgorICAgICAgICAo
S0pTOjplbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQpOgorICAgICAgICAoS0pTOjpDYXNlQmxvY2tO
b2RlOjplbWl0Q29kZUZvckJsb2NrKToKKyAgICAgICAgKiBranMvbm9kZXMuaDoKKyAgICAgICAg
KEtKUzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUpOgorICAgICAgICAoS0pTOjpSZXZlcnNl
QmluYXJ5T3BOb2RlOjpSZXZlcnNlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEtKUzo6TXVsdE5v
ZGU6Oik6CisgICAgICAgIChLSlM6OkRpdk5vZGU6Oik6CisgICAgICAgIChLSlM6OkRpdk5vZGU6
OnByZWNlZGVuY2UpOgorICAgICAgICAoS0pTOjpNb2ROb2RlOjopOgorICAgICAgICAoS0pTOjpN
b2ROb2RlOjpwcmVjZWRlbmNlKToKKyAgICAgICAgKEtKUzo6QWRkTm9kZTo6KToKKyAgICAgICAg
KEtKUzo6QWRkTm9kZTo6cHJlY2VkZW5jZSk6CisgICAgICAgIChLSlM6OlN1Yk5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OlN1Yk5vZGU6OnByZWNlZGVuY2UpOgorICAgICAgICAoS0pTOjpMZWZ0U2hp
ZnROb2RlOjopOgorICAgICAgICAoS0pTOjpMZWZ0U2hpZnROb2RlOjpwcmVjZWRlbmNlKToKKyAg
ICAgICAgKEtKUzo6UmlnaHRTaGlmdE5vZGU6Oik6CisgICAgICAgIChLSlM6OlJpZ2h0U2hpZnRO
b2RlOjpwcmVjZWRlbmNlKToKKyAgICAgICAgKEtKUzo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6
KToKKyAgICAgICAgKEtKUzo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6cHJlY2VkZW5jZSk6Cisg
ICAgICAgIChLSlM6Okxlc3NOb2RlOjopOgorICAgICAgICAoS0pTOjpMZXNzTm9kZTo6cHJlY2Vk
ZW5jZSk6CisgICAgICAgIChLSlM6OkdyZWF0ZXJOb2RlOjopOgorICAgICAgICAoS0pTOjpHcmVh
dGVyTm9kZTo6cHJlY2VkZW5jZSk6CisgICAgICAgIChLSlM6Okxlc3NFcU5vZGU6Oik6CisgICAg
ICAgIChLSlM6Okxlc3NFcU5vZGU6OnByZWNlZGVuY2UpOgorICAgICAgICAoS0pTOjpHcmVhdGVy
RXFOb2RlOjopOgorICAgICAgICAoS0pTOjpHcmVhdGVyRXFOb2RlOjpwcmVjZWRlbmNlKToKKyAg
ICAgICAgKEtKUzo6SW5zdGFuY2VPZk5vZGU6Oik6CisgICAgICAgIChLSlM6Okluc3RhbmNlT2ZO
b2RlOjpwcmVjZWRlbmNlKToKKyAgICAgICAgKEtKUzo6SW5Ob2RlOjopOgorICAgICAgICAoS0pT
OjpJbk5vZGU6OnByZWNlZGVuY2UpOgorICAgICAgICAoS0pTOjpFcXVhbE5vZGU6Oik6CisgICAg
ICAgIChLSlM6OkVxdWFsTm9kZTo6cHJlY2VkZW5jZSk6CisgICAgICAgIChLSlM6Ok5vdEVxdWFs
Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6Tm90RXF1YWxOb2RlOjpwcmVjZWRlbmNlKToKKyAgICAg
ICAgKEtKUzo6U3RyaWN0RXF1YWxOb2RlOjopOgorICAgICAgICAoS0pTOjpTdHJpY3RFcXVhbE5v
ZGU6OnByZWNlZGVuY2UpOgorICAgICAgICAoS0pTOjpOb3RTdHJpY3RFcXVhbE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6Ok5vdFN0cmljdEVxdWFsTm9kZTo6cHJlY2VkZW5jZSk6CisgICAgICAgIChL
SlM6OkJpdEFuZE5vZGU6Oik6CisgICAgICAgIChLSlM6OkJpdEFuZE5vZGU6OnByZWNlZGVuY2Up
OgorICAgICAgICAoS0pTOjpCaXRPck5vZGU6Oik6CisgICAgICAgIChLSlM6OkJpdE9yTm9kZTo6
cHJlY2VkZW5jZSk6CisgICAgICAgIChLSlM6OkJpdFhPck5vZGU6Oik6CisgICAgICAgIChLSlM6
OkJpdFhPck5vZGU6OnByZWNlZGVuY2UpOgorICAgICAgICAqIGtqcy9ub2RlczJzdHJpbmcuY3Bw
OgorICAgICAgICAoS0pTOjpMZXNzTm9kZTo6c3RyZWFtVG8pOgorICAgICAgICAoS0pTOjpHcmVh
dGVyTm9kZTo6c3RyZWFtVG8pOgorICAgICAgICAoS0pTOjpMZXNzRXFOb2RlOjpzdHJlYW1Ubyk6
CisgICAgICAgIChLSlM6OkdyZWF0ZXJFcU5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEtKUzo6
SW5zdGFuY2VPZk5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEtKUzo6SW5Ob2RlOjpzdHJlYW1U
byk6CisgICAgICAgIChLSlM6OkVxdWFsTm9kZTo6c3RyZWFtVG8pOgorICAgICAgICAoS0pTOjpO
b3RFcXVhbE5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEtKUzo6U3RyaWN0RXF1YWxOb2RlOjpz
dHJlYW1Ubyk6CisgICAgICAgIChLSlM6Ok5vdFN0cmljdEVxdWFsTm9kZTo6c3RyZWFtVG8pOgor
ICAgICAgICAoS0pTOjpCaXRBbmROb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChLSlM6OkJpdFhP
ck5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEtKUzo6Qml0T3JOb2RlOjpzdHJlYW1Ubyk6CisK
IDIwMDgtMDYtMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1
YmJlciBzdGFtcGVkIGJ5IFNhbS4KSW5kZXg6IFZNL0NvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFZNL0NvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAzNDU2MSkKKysrIFZNL0NvZGVH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTcsNjAgKzUxNyw2IEBAIFJlZ2lzdGVy
SUQqIENvZGVHZW5lcmF0b3I6OmVtaXROb3QoUmVnaXMKICAgICByZXR1cm4gZHN0OwogfQogCi1S
ZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0RXF1YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyKQotewotICAgIGVtaXRPcGNvZGUob3BfZXEp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzcmMxLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
c3JjMi0+aW5kZXgoKSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQ29kZUdl
bmVyYXRvcjo6ZW1pdE5vdEVxdWFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwg
UmVnaXN0ZXJJRCogc3JjMikKLXsKLSAgICBlbWl0T3Bjb2RlKG9wX25lcSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNyYzEtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMyLT5pbmRleCgp
KTsKLSAgICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0
U3RyaWN0RXF1YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklE
KiBzcmMyKQotewotICAgIGVtaXRPcGNvZGUob3Bfc3RyaWN0ZXEpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMx
LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMi0+aW5kZXgoKSk7Ci0g
ICAgcmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdE5vdFN0
cmljdEVxdWFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCog
c3JjMikKLXsKLSAgICBlbWl0T3Bjb2RlKG9wX25zdHJpY3RlcSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzEt
PmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMyLT5pbmRleCgpKTsKLSAg
ICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0TGVzcyhS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIpCi17Ci0g
ICAgZW1pdE9wY29kZShvcF9sZXNzKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5p
bmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMS0+aW5kZXgoKSk7Ci0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzItPmluZGV4KCkpOwotICAgIHJldHVybiBkc3Q7Ci19
Ci0KLVJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRMZXNzRXEoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyKQotewotICAgIGVtaXRPcGNvZGUo
b3BfbGVzc2VxKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHNyYzItPmluZGV4KCkpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KIFJlZ2lzdGVy
SUQqIENvZGVHZW5lcmF0b3I6OmVtaXRQcmVJbmMoUmVnaXN0ZXJJRCogc3JjRHN0KQogewogICAg
IGVtaXRPcGNvZGUob3BfcHJlX2luYyk7CkBAIC02MTcsMTEzICs1NjMsMjMgQEAgUmVnaXN0ZXJJ
RCogQ29kZUdlbmVyYXRvcjo6ZW1pdE5lZ2F0ZShSZQogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJl
Z2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRBZGQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyKQotewotICAgIGVtaXRPcGNvZGUob3BfYWRkKTsK
LSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoc3JjMS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNy
YzItPmluZGV4KCkpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIENvZGVHZW5l
cmF0b3I6OmVtaXRNdWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3Rl
cklEKiBzcmMyKQotewotICAgIGVtaXRPcGNvZGUob3BfbXVsKTsKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMS0+
aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzItPmluZGV4KCkpOwotICAg
IHJldHVybiBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXREaXYoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBkaXZpZGVuZCwgUmVnaXN0ZXJJRCogZGl2aXNvcikK
LXsKLSAgICBlbWl0T3Bjb2RlKG9wX2Rpdik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRpdmlkZW5kLT5pbmRleCgp
KTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZGl2aXNvci0+aW5kZXgoKSk7Ci0gICAgcmV0
dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdE1vZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGRpdmlkZW5kLCBSZWdpc3RlcklEKiBkaXZpc29yKQotewot
ICAgIGVtaXRPcGNvZGUob3BfbW9kKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5p
bmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZGl2aWRlbmQtPmluZGV4KCkpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkaXZpc29yLT5pbmRleCgpKTsKLSAgICByZXR1cm4g
ZHN0OwotfQotCi1SZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjplbWl0U3ViKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMikKLXsKLSAgICBlbWl0T3Bj
b2RlKG9wX3N1Yik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzEtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChzcmMyLT5pbmRleCgpKTsKLSAgICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3Rl
cklEKiBDb2RlR2VuZXJhdG9yOjplbWl0TGVmdFNoaWZ0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogdmFsLCBSZWdpc3RlcklEKiBzaGlmdCkKLXsKLSAgICBlbWl0T3Bjb2RlKG9wX2xzaGlm
dCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHZhbC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNoaWZ0LT5pbmRleCgpKTsKLSAgICByZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBDb2Rl
R2VuZXJhdG9yOjplbWl0UmlnaHRTaGlmdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZh
bCwgUmVnaXN0ZXJJRCogc2hpZnQpCi17Ci0gICAgZW1pdE9wY29kZShvcF9yc2hpZnQpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh2YWwtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzaGlmdC0+
aW5kZXgoKSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQotUmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRv
cjo6ZW1pdFVuc2lnbmVkUmlnaHRTaGlmdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZh
bCwgUmVnaXN0ZXJJRCogc2hpZnQpCi17Ci0gICAgZW1pdE9wY29kZShvcF91cnNoaWZ0KTsKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQodmFsLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2hpZnQt
PmluZGV4KCkpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIENvZGVHZW5lcmF0
b3I6OmVtaXRCaXRBbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3Rl
cklEKiBzcmMyKQotewotICAgIGVtaXRPcGNvZGUob3BfYml0YW5kKTsKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3Jj
MS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzItPmluZGV4KCkpOwot
ICAgIHJldHVybiBkc3Q7Ci19Ci0KLVJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRCaXRY
T3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyKQor
UmVnaXN0ZXJJRCogQ29kZUdlbmVyYXRvcjo6ZW1pdEJpdE5vdChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYykKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2JpdHhvcik7CisgICAgZW1pdE9w
Y29kZShvcF9iaXRub3QpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMxLT5pbmRleCgpKTsKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc3JjMi0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNyYy0+aW5kZXgoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQ29kZUdl
bmVyYXRvcjo6ZW1pdEJpdE9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVn
aXN0ZXJJRCogc3JjMikKK1JlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OmVtaXRCaW5hcnlPcChP
cGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0
ZXJJRCogc3JjMikKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2JpdG9yKTsKKyAgICBlbWl0T3Bjb2Rl
KG9wY29kZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzEtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChzcmMyLT5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklE
KiBDb2RlR2VuZXJhdG9yOjplbWl0Qml0Tm90KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjKQotewotICAgIGVtaXRPcGNvZGUob3BfYml0bm90KTsKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRl
eCgpKTsKLSAgICByZXR1cm4gZHN0OwotfQotCiBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjpl
bWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3Rl
cklEKiBiYXNlKQogewogICAgIGVtaXRPcGNvZGUob3BfaW5zdGFuY2VvZik7CkluZGV4OiBWTS9D
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biAzNDU2MSkKKysrIFZNL0NvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDEy
ICsyMDIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmUo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROb3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0RXF1YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdp
c3RlcklEKiBzcmMyKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5vdEVxdWFsKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMik7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRTdHJpY3RFcXVhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
YzEsIFJlZ2lzdGVySUQqIHNyYzIpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Tm90U3RyaWN0
RXF1YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMy
KTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExlc3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMyKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExl
c3NFcShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVySUQqIHNyYzIp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qml0Tm90KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9KU051bWJlcihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZWdh
dGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwpAQCAtMjE1LDIwICsyMTAsOCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByZURlYyhSZWdpc3Rl
cklEKiBzcmNEc3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UG9zdEluYyhSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQb3N0
RGVjKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjRHN0KTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEFkZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlZ2lzdGVy
SUQqIHNyYzIpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TXVsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMik7Ci0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXREaXYoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBkaXZpZGVuZCwgUmVnaXN0ZXJJ
RCogZGl2aXNvcik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb2QoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBkaXZpZGVuZCwgUmVnaXN0ZXJJRCogZGl2aXNvcik7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRTdWIoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdp
c3RlcklEKiBzcmMyKTsKLQotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TGVmdFNoaWZ0KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsLCBSZWdpc3RlcklEKiBzaGlmdCk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRSaWdodFNoaWZ0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
dmFsLCBSZWdpc3RlcklEKiBzaGlmdCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRVbnNpZ25l
ZFJpZ2h0U2hpZnQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWwsIFJlZ2lzdGVySUQq
IHNoaWZ0KTsKLQotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qml0QW5kKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMik7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCaXRYT3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3Rl
cklEKiBzcmMyKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJpdE9yKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMik7Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCaXROb3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOworCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCaW5hcnlPcChPcGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjMSwgUmVnaXN0ZXJJRCogc3JjMik7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEluc3RhbmNlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1
ZSwgUmVnaXN0ZXJJRCogYmFzZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUeXBlT2YoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwpJbmRleDoga2pzL2dyYW1tYXIueQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBranMvZ3JhbW1hci55CShyZXZpc2lvbiAzNDU2MSkKKysrIGtqcy9ncmFtbWFy
LnkJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCwxOSArNDU4LDE5IEBAIFVuYXJ5RXhwck5vQkY6CiAK
IE11bHRpcGxpY2F0aXZlRXhwcjoKICAgICBVbmFyeUV4cHIKLSAgfCBNdWx0aXBsaWNhdGl2ZUV4
cHIgJyonIFVuYXJ5RXhwciAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IE11bHROb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJl
SW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgTXVsdGlwbGljYXRpdmVFeHByICcvJyBV
bmFyeUV4cHIgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+
KG5ldyBEaXZOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgTXVsdGlwbGljYXRpdmVFeHByICclJyBVbmFyeUV4cHIg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBNb2RO
b2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVy
ZUluZm8pOyB9CisgIHwgTXVsdGlwbGljYXRpdmVFeHByICcqJyBVbmFyeUV4cHIgICAgeyAkJCA9
IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBNdWx0Tm9kZSgkMS5t
X25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5t
X2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAgfCBNdWx0aXBsaWNhdGl2ZUV4
cHIgJy8nIFVuYXJ5RXhwciAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IERpdk5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUlu
Zm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8p
OyB9CisgIHwgTXVsdGlwbGljYXRpdmVFeHByICclJyBVbmFyeUV4cHIgICAgeyAkJCA9IGNyZWF0
ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBNb2ROb2RlKCQxLm1fbm9kZSwg
JDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVy
ZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwogCiBNdWx0aXBsaWNhdGl2ZUV4cHJOb0JG
OgogICAgIFVuYXJ5RXhwck5vQkYKICAgfCBNdWx0aXBsaWNhdGl2ZUV4cHJOb0JGICcqJyBVbmFy
eUV4cHIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3Jl
YXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IE11bHROb2RlKCQxLm1fbm9k
ZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVG
ZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBNdWx0Tm9kZSgkMS5tX25vZGUsICQzLm1f
bm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZv
IHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBNdWx0aXBsaWNhdGl2ZUV4cHJOb0JGICcvJyBV
bmFyeUV4cHIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0g
Y3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IERpdk5vZGUoJDEubV9u
b2RlLCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IERpdk5vZGUoJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5m
byB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiAgIHwgTXVsdGlwbGljYXRpdmVFeHByTm9CRiAnJScg
VW5hcnlFeHByCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9
IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBNb2ROb2RlKCQxLm1f
bm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBNb2ROb2RlKCQxLm1fbm9kZSwgJDMu
bV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUlu
Zm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwogCiBBZGRpdGl2ZUV4cHI6CkBAIC00ODksMTI4
ICs0ODksMTI4IEBAIEFkZGl0aXZlRXhwck5vQkY6CiAKIFNoaWZ0RXhwcjoKICAgICBBZGRpdGl2
ZUV4cHIKLSAgfCBTaGlmdEV4cHIgTFNISUZUIEFkZGl0aXZlRXhwciAgICAgICB7ICQkID0gY3Jl
YXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IExlZnRTaGlmdE5vZGUoJDEu
bV9ub2RlLCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7
IH0KLSAgfCBTaGlmdEV4cHIgUlNISUZUIEFkZGl0aXZlRXhwciAgICAgICB7ICQkID0gY3JlYXRl
Tm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFJpZ2h0U2hpZnROb2RlKCQxLm1f
bm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9
Ci0gIHwgU2hpZnRFeHByIFVSU0hJRlQgQWRkaXRpdmVFeHByICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBVbnNpZ25lZFJpZ2h0U2hpZnROb2Rl
KCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUlu
Zm8pOyB9CisgIHwgU2hpZnRFeHByIExTSElGVCBBZGRpdGl2ZUV4cHIgICAgICAgeyAkJCA9IGNy
ZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBMZWZ0U2hpZnROb2RlKCQx
Lm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQx
Lm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFNoaWZ0RXhwciBSU0hJ
RlQgQWRkaXRpdmVFeHByICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVz
c2lvbk5vZGUqPihuZXcgUmlnaHRTaGlmdE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1f
ZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVh
dHVyZUluZm8pOyB9CisgIHwgU2hpZnRFeHByIFVSU0hJRlQgQWRkaXRpdmVFeHByICAgICAgeyAk
JCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBVbnNpZ25lZFJp
Z2h0U2hpZnROb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNz
aWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwog
CiBTaGlmdEV4cHJOb0JGOgogICAgIEFkZGl0aXZlRXhwck5vQkYKLSAgfCBTaGlmdEV4cHJOb0JG
IExTSElGVCBBZGRpdGl2ZUV4cHIgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJl
c3Npb25Ob2RlKj4obmV3IExlZnRTaGlmdE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUpLCAkMS5t
X2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBTaGlmdEV4cHJOb0JGIFJT
SElGVCBBZGRpdGl2ZUV4cHIgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IFJpZ2h0U2hpZnROb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9m
ZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgU2hpZnRFeHByTm9CRiBVUlNI
SUZUIEFkZGl0aXZlRXhwciAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9u
Tm9kZSo+KG5ldyBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwg
JDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgU2hpZnRFeHByTm9C
RiBMU0hJRlQgQWRkaXRpdmVFeHByICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyBMZWZ0U2hpZnROb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5t
X2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2Zl
YXR1cmVJbmZvKTsgfQorICB8IFNoaWZ0RXhwck5vQkYgUlNISUZUIEFkZGl0aXZlRXhwciAgIHsg
JCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgUmlnaHRTaGlm
dE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0
dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgU2hpZnRF
eHByTm9CRiBVUlNISUZUIEFkZGl0aXZlRXhwciAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5m
bzxFeHByZXNzaW9uTm9kZSo+KG5ldyBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKCQxLm1fbm9kZSwg
JDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVy
ZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwogCiBSZWxhdGlvbmFsRXhwcjoKICAgICBT
aGlmdEV4cHIKLSAgfCBSZWxhdGlvbmFsRXhwciAnPCcgU2hpZnRFeHByICAgICAgICB7ICQkID0g
Y3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IExlc3NOb2RlKCQxLm1f
bm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9
Ci0gIHwgUmVsYXRpb25hbEV4cHIgJz4nIFNoaWZ0RXhwciAgICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVhdGVyTm9kZSgkMS5tX25vZGUs
ICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQotICB8
IFJlbGF0aW9uYWxFeHByIExFIFNoaWZ0RXhwciAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVh
dHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgTGVzc0VxTm9kZSgkMS5tX25vZGUsICQzLm1f
bm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQotICB8IFJlbGF0
aW9uYWxFeHByIEdFIFNoaWZ0RXhwciAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUlu
Zm88RXhwcmVzc2lvbk5vZGUqPihuZXcgR3JlYXRlckVxTm9kZSgkMS5tX25vZGUsICQzLm1fbm9k
ZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQotICB8IFJlbGF0aW9u
YWxFeHByIElOU1RBTkNFT0YgU2hpZnRFeHByIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88
RXhwcmVzc2lvbk5vZGUqPihuZXcgSW5zdGFuY2VPZk5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUp
LCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBSZWxhdGlvbmFs
RXhwciBJTlRPS0VOIFNoaWZ0RXhwciAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4
cHJlc3Npb25Ob2RlKj4obmV3IEluTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVh
dHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFJlbGF0aW9uYWxFeHByICc8JyBT
aGlmdEV4cHIgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihuZXcgTGVzc05vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8g
JiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9
CisgIHwgUmVsYXRpb25hbEV4cHIgJz4nIFNoaWZ0RXhwciAgICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVhdGVyTm9kZSgkMS5tX25vZGUs
ICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1
cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAgfCBSZWxhdGlvbmFsRXhwciBMRSBTaGlm
dEV4cHIgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obmV3IExlc3NFcU5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8g
JiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9
CisgIHwgUmVsYXRpb25hbEV4cHIgR0UgU2hpZnRFeHByICAgICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVhdGVyRXFOb2RlKCQxLm1fbm9k
ZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVh
dHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFJlbGF0aW9uYWxFeHByIElOU1RB
TkNFT0YgU2hpZnRFeHByIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihuZXcgSW5zdGFuY2VPZk5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVy
ZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUlu
Zm8pOyB9CisgIHwgUmVsYXRpb25hbEV4cHIgSU5UT0tFTiBTaGlmdEV4cHIgICAgeyAkJCA9IGNy
ZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBJbk5vZGUoJDEubV9ub2Rl
LCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0
dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIFJlbGF0aW9uYWxFeHByTm9JbjoK
ICAgICBTaGlmdEV4cHIKLSAgfCBSZWxhdGlvbmFsRXhwck5vSW4gJzwnIFNoaWZ0RXhwciAgICB7
ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IExlc3NOb2Rl
KCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUlu
Zm8pOyB9Ci0gIHwgUmVsYXRpb25hbEV4cHJOb0luICc+JyBTaGlmdEV4cHIgICAgeyAkJCA9IGNy
ZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVhdGVyTm9kZSgkMS5t
X25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsg
fQotICB8IFJlbGF0aW9uYWxFeHByTm9JbiBMRSBTaGlmdEV4cHIgICAgIHsgJCQgPSBjcmVhdGVO
b2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgTGVzc0VxTm9kZSgkMS5tX25vZGUs
ICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQotICB8
IFJlbGF0aW9uYWxFeHByTm9JbiBHRSBTaGlmdEV4cHIgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVh
dHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgR3JlYXRlckVxTm9kZSgkMS5tX25vZGUsICQz
Lm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFJl
bGF0aW9uYWxFeHByTm9JbiAnPCcgU2hpZnRFeHByICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVy
ZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgTGVzc05vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUs
ICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9CisgIHwgUmVsYXRpb25hbEV4cHJOb0luICc+JyBTaGlmdEV4cHIg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVh
dGVyTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZl
YXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAgfCBSZWxh
dGlvbmFsRXhwck5vSW4gTEUgU2hpZnRFeHByICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJ
bmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IExlc3NFcU5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUs
ICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9CisgIHwgUmVsYXRpb25hbEV4cHJOb0luIEdFIFNoaWZ0RXhwciAg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBHcmVh
dGVyRXFOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWdu
RmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogICB8IFJl
bGF0aW9uYWxFeHByTm9JbiBJTlNUQU5DRU9GIFNoaWZ0RXhwcgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVz
c2lvbk5vZGUqPihuZXcgSW5zdGFuY2VPZk5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUpLCAkMS5t
X2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IEluc3RhbmNlT2ZOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2Zl
YXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1
cmVJbmZvKTsgfQogOwogCiBSZWxhdGlvbmFsRXhwck5vQkY6CiAgICAgU2hpZnRFeHByTm9CRgot
ICB8IFJlbGF0aW9uYWxFeHByTm9CRiAnPCcgU2hpZnRFeHByICAgIHsgJCQgPSBjcmVhdGVOb2Rl
RmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgTGVzc05vZGUoJDEubV9ub2RlLCAkMy5t
X25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBSZWxh
dGlvbmFsRXhwck5vQkYgJz4nIFNoaWZ0RXhwciAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJ
bmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEdyZWF0ZXJOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2Rl
KSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgUmVsYXRpb25h
bEV4cHJOb0JGIExFIFNoaWZ0RXhwciAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxF
eHByZXNzaW9uTm9kZSo+KG5ldyBMZXNzRXFOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEu
bV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgUmVsYXRpb25hbEV4cHJO
b0JGIEdFIFNoaWZ0RXhwciAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNz
aW9uTm9kZSo+KG5ldyBHcmVhdGVyRXFOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9m
ZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgUmVsYXRpb25hbEV4cHJOb0JG
ICc8JyBTaGlmdEV4cHIgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9u
Tm9kZSo+KG5ldyBMZXNzTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5m
byAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7
IH0KKyAgfCBSZWxhdGlvbmFsRXhwck5vQkYgJz4nIFNoaWZ0RXhwciAgICB7ICQkID0gY3JlYXRl
Tm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEdyZWF0ZXJOb2RlKCQxLm1fbm9k
ZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVh
dHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFJlbGF0aW9uYWxFeHByTm9CRiBM
RSBTaGlmdEV4cHIgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihuZXcgTGVzc0VxTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5m
byAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7
IH0KKyAgfCBSZWxhdGlvbmFsRXhwck5vQkYgR0UgU2hpZnRFeHByICAgICB7ICQkID0gY3JlYXRl
Tm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEdyZWF0ZXJFcU5vZGUoJDEubV9u
b2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9m
ZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiAgIHwgUmVsYXRpb25hbEV4cHJOb0JG
IElOU1RBTkNFT0YgU2hpZnRFeHByCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBJ
bnN0YW5jZU9mTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAk
My5tX2ZlYXR1cmVJbmZvKTsgfQotICB8IFJlbGF0aW9uYWxFeHByTm9CRiBJTlRPS0VOIFNoaWZ0
RXhwciAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5l
dyBJbk5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9m
ZWF0dXJlSW5mbyk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEluc3RhbmNl
T2ZOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVh
dHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8IFJlbGF0
aW9uYWxFeHByTm9CRiBJTlRPS0VOIFNoaWZ0RXhwciAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0
dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBJbk5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUs
ICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIEVxdWFsaXR5RXhwcjoKICAgICBSZWxhdGlvbmFsRXhw
cgotICB8IEVxdWFsaXR5RXhwciBFUUVRIFJlbGF0aW9uYWxFeHByICAgIHsgJCQgPSBjcmVhdGVO
b2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgRXF1YWxOb2RlKCQxLm1fbm9kZSwg
JDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwg
RXF1YWxpdHlFeHByIE5FIFJlbGF0aW9uYWxFeHByICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0
dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBOb3RFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5t
X25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KLSAgfCBFcXVh
bGl0eUV4cHIgU1RSRVEgUmVsYXRpb25hbEV4cHIgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJ
bmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFN0cmljdEVxdWFsTm9kZSgkMS5tX25vZGUsICQzLm1f
bm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQotICB8IEVxdWFs
aXR5RXhwciBTVFJORVEgUmVsYXRpb25hbEV4cHIgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUlu
Zm88RXhwcmVzc2lvbk5vZGUqPihuZXcgTm90U3RyaWN0RXF1YWxOb2RlKCQxLm1fbm9kZSwgJDMu
bV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgRXF1
YWxpdHlFeHByIEVRRVEgUmVsYXRpb25hbEV4cHIgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJl
SW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUs
ICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9CisgIHwgRXF1YWxpdHlFeHByIE5FIFJlbGF0aW9uYWxFeHByICAg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBOb3RF
cXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25G
ZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgRXF1
YWxpdHlFeHByIFNUUkVRIFJlbGF0aW9uYWxFeHByICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJl
SW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBTdHJpY3RFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5m
byB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgRXF1YWxpdHlFeHByIFNUUk5FUSBSZWxhdGlv
bmFsRXhwciAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5l
dyBOb3RTdHJpY3RFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUlu
Zm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8p
OyB9CiA7CiAKIEVxdWFsaXR5RXhwck5vSW46CiAgICAgUmVsYXRpb25hbEV4cHJOb0luCiAgIHwg
RXF1YWxpdHlFeHByTm9JbiBFUUVRIFJlbGF0aW9uYWxFeHByTm9JbgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhw
cmVzc2lvbk5vZGUqPihuZXcgRXF1YWxOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9m
ZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9u
Tm9kZSo+KG5ldyBFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUlu
Zm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8p
OyB9CiAgIHwgRXF1YWxpdHlFeHByTm9JbiBORSBSZWxhdGlvbmFsRXhwck5vSW4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJ
bmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IE5vdEVxdWFsTm9kZSgkMS5tX25vZGUsICQzLm1fbm9k
ZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88
RXhwcmVzc2lvbk5vZGUqPihuZXcgTm90RXF1YWxOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAk
My5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5t
X2ZlYXR1cmVJbmZvKTsgfQogICB8IEVxdWFsaXR5RXhwck5vSW4gU1RSRVEgUmVsYXRpb25hbEV4
cHJOb0luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNy
ZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBTdHJpY3RFcXVhbE5vZGUo
JDEubV9ub2RlLCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5m
byk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3Jl
YXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFN0cmljdEVxdWFsTm9kZSgk
MS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAk
MS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBFcXVhbGl0eUV4cHJO
b0luIFNUUk5FUSBSZWxhdGlvbmFsRXhwck5vSW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obmV3IE5vdFN0cmljdEVxdWFsTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVh
dHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihuZXcgTm90U3RyaWN0RXF1YWxOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2Zl
YXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1
cmVJbmZvKTsgfQogOwogCiBFcXVhbGl0eUV4cHJOb0JGOgogICAgIFJlbGF0aW9uYWxFeHByTm9C
RgogICB8IEVxdWFsaXR5RXhwck5vQkYgRVFFUSBSZWxhdGlvbmFsRXhwcgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88
RXhwcmVzc2lvbk5vZGUqPihuZXcgRXF1YWxOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEu
bV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9Ci0gIHwgRXF1YWxpdHlFeHByTm9C
RiBORSBSZWxhdGlvbmFsRXhwciAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNz
aW9uTm9kZSo+KG5ldyBOb3RFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUpLCAkMS5tX2Zl
YXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25O
b2RlKj4obmV3IEVxdWFsTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5m
byAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7
IH0KKyAgfCBFcXVhbGl0eUV4cHJOb0JGIE5FIFJlbGF0aW9uYWxFeHByICB7ICQkID0gY3JlYXRl
Tm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IE5vdEVxdWFsTm9kZSgkMS5tX25v
ZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2Zl
YXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBFcXVhbGl0eUV4cHJOb0JGIFNU
UkVRIFJlbGF0aW9uYWxFeHByCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBTdHJp
Y3RFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMu
bV9mZWF0dXJlSW5mbyk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFN0cmlj
dEVxdWFsTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2ln
bkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KICAgfCBF
cXVhbGl0eUV4cHJOb0JGIFNUUk5FUSBSZWxhdGlvbmFsRXhwcgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVz
c2lvbk5vZGUqPihuZXcgTm90U3RyaWN0RXF1YWxOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwg
JDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyBOb3RTdHJpY3RFcXVhbE5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUs
ICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQz
Lm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIEJpdHdpc2VBTkRFeHByOgogICAgIEVxdWFsaXR5RXhw
cgotICB8IEJpdHdpc2VBTkRFeHByICcmJyBFcXVhbGl0eUV4cHIgICAgIHsgJCQgPSBjcmVhdGVO
b2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgQml0QW5kTm9kZSgkMS5tX25vZGUs
ICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICB8
IEJpdHdpc2VBTkRFeHByICcmJyBFcXVhbGl0eUV4cHIgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVh
dHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgQml0QW5kTm9kZSgkMS5tX25vZGUsICQzLm1f
bm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZv
IHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KIDsKIAogQml0d2lzZUFOREV4cHJOb0luOgogICAgIEVx
dWFsaXR5RXhwck5vSW4KICAgfCBCaXR3aXNlQU5ERXhwck5vSW4gJyYnIEVxdWFsaXR5RXhwck5v
SW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRl
Tm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEJpdEFuZE5vZGUoJDEubV9ub2Rl
LCAkMy5tX25vZGUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZl
YXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IEJpdEFuZE5vZGUoJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBBc3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5m
byB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiA7CiAKIEJpdHdpc2VBTkRFeHByTm9CRjoKICAgICBF
cXVhbGl0eUV4cHJOb0JGCi0gIHwgQml0d2lzZUFOREV4cHJOb0JGICcmJyBFcXVhbGl0eUV4cHIg
eyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBCaXRBbmRO
b2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVy
ZUluZm8pOyB9CisgIHwgQml0d2lzZUFOREV4cHJOb0JGICcmJyBFcXVhbGl0eUV4cHIgeyAkJCA9
IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBCaXRBbmROb2RlKCQx
Lm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWduRmVhdHVyZSksICQx
Lm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwogCiBCaXR3aXNlWE9SRXhw
cjoKICAgICBCaXR3aXNlQU5ERXhwcgotICB8IEJpdHdpc2VYT1JFeHByICdeJyBCaXR3aXNlQU5E
RXhwciAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcg
Qml0WE9yTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5t
X2ZlYXR1cmVJbmZvKTsgfQorICB8IEJpdHdpc2VYT1JFeHByICdeJyBCaXR3aXNlQU5ERXhwciAg
IHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgQml0WE9y
Tm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2lnbkZlYXR1
cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KIDsKIAogQml0d2lz
ZVhPUkV4cHJOb0luOgogICAgIEJpdHdpc2VBTkRFeHByTm9JbgogICB8IEJpdHdpc2VYT1JFeHBy
Tm9JbiAnXicgQml0d2lzZUFOREV4cHJOb0luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+
KG5ldyBCaXRYT3JOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJlSW5mbyB8
ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBC
aXRYT3JOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNzaWdu
RmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwogCiBC
aXR3aXNlWE9SRXhwck5vQkY6CiAgICAgQml0d2lzZUFOREV4cHJOb0JGCiAgIHwgQml0d2lzZVhP
UkV4cHJOb0JGICdeJyBCaXR3aXNlQU5ERXhwcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUq
PihuZXcgQml0WE9yTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUluZm8g
fCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcg
Qml0WE9yTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlSW5mbyAmIEFzc2ln
bkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVJbmZvIHwgJDMubV9mZWF0dXJlSW5mbyk7IH0KIDsKIAog
Qml0d2lzZU9SRXhwcjoKICAgICBCaXR3aXNlWE9SRXhwcgotICB8IEJpdHdpc2VPUkV4cHIgJ3wn
IEJpdHdpc2VYT1JFeHByICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lv
bk5vZGUqPihuZXcgQml0T3JOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlKSwgJDEubV9mZWF0dXJl
SW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CisgIHwgQml0d2lzZU9SRXhwciAnfCcgQml0d2lz
ZVhPUkV4cHIgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+
KG5ldyBCaXRPck5vZGUoJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZUluZm8gJiBB
c3NpZ25GZWF0dXJlKSwgJDEubV9mZWF0dXJlSW5mbyB8ICQzLm1fZmVhdHVyZUluZm8pOyB9CiA7
CiAKIEJpdHdpc2VPUkV4cHJOb0luOgogICAgIEJpdHdpc2VYT1JFeHByTm9JbgogICB8IEJpdHdp
c2VPUkV4cHJOb0luICd8JyBCaXR3aXNlWE9SRXhwck5vSW4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IEJpdE9yTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVy
ZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUq
PihuZXcgQml0T3JOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYg
QXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQog
OwogCiBCaXR3aXNlT1JFeHByTm9CRjoKICAgICBCaXR3aXNlWE9SRXhwck5vQkYKICAgfCBCaXR3
aXNlT1JFeHByTm9CRiAnfCcgQml0d2lzZVhPUkV4cHIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25O
b2RlKj4obmV3IEJpdE9yTm9kZSgkMS5tX25vZGUsICQzLm1fbm9kZSksICQxLm1fZmVhdHVyZUlu
Zm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihu
ZXcgQml0T3JOb2RlKCQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVJbmZvICYgQXNz
aWduRmVhdHVyZSksICQxLm1fZmVhdHVyZUluZm8gfCAkMy5tX2ZlYXR1cmVJbmZvKTsgfQogOwog
CiBMb2dpY2FsQU5ERXhwcjoKSW5kZXg6IGtqcy9ub2RlczJzdHJpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtqcy9ub2RlczJzdHJpbmcuY3BwCShyZXZpc2lvbiAzNDU2MSkKKysrIGtqcy9ub2RlczJz
dHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjksNjcgKzYyOSw2NyBAQCB2b2lkIFVuc2ln
bmVkUmlnaHRTaGlmdE5vZGU6OnN0cmVhbVRvKFNvCiAKIHZvaWQgTGVzc05vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5h
cnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICI8IiwgbV9leHByMSwgbV9leHByMik7CisgICAg
c3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiPCIs
IG1fdGVybTEsIG1fdGVybTIpOwogfQogCiB2b2lkIEdyZWF0ZXJOb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gICAgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3Bl
cmF0b3IocywgcHJlY2VkZW5jZSgpLCAiPiIsIG1fZXhwcjEsIG1fZXhwcjIpOworICAgIHN0cmVh
bUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIj4iLCBtX3Rl
cm0xLCBtX3Rlcm0yKTsKIH0KIAogdm9pZCBMZXNzRXFOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mIHMpIGNvbnN0CiB7Ci0gICAgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3Io
cywgcHJlY2VkZW5jZSgpLCAiPD0iLCBtX2V4cHIxLCBtX2V4cHIyKTsKKyAgICBzdHJlYW1MZWZ0
QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICI8PSIsIG1fdGVybTEs
IG1fdGVybTIpOwogfQogCiB2b2lkIEdyZWF0ZXJFcU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYgcykgY29uc3QKIHsKLSAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihz
LCBwcmVjZWRlbmNlKCksICI+PSIsIG1fZXhwcjEsIG1fZXhwcjIpOworICAgIHN0cmVhbUxlZnRB
c3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIj49IiwgbV90ZXJtMSwg
bV90ZXJtMik7CiB9CiAKIHZvaWQgSW5zdGFuY2VPZk5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYgcykgY29uc3QKIHsKLSAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihz
LCBwcmVjZWRlbmNlKCksICJpbnN0YW5jZW9mIiwgbV9leHByMSwgbV9leHByMik7CisgICAgc3Ry
ZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiaW5zdGFu
Y2VvZiIsIG1fdGVybTEsIG1fdGVybTIpOwogfQogCiB2b2lkIEluTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtJiBzKSBjb25zdAogewotICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9w
ZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgImluIiwgbV9leHByMSwgbV9leHByMik7CisgICAgc3Ry
ZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiaW4iLCBt
X3Rlcm0xLCBtX3Rlcm0yKTsKIH0KIAogdm9pZCBFcXVhbE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYgcykgY29uc3QKIHsKLSAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRv
cihzLCBwcmVjZWRlbmNlKCksICI9PSIsIG1fZXhwcjEsIG1fZXhwcjIpOworICAgIHN0cmVhbUxl
ZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIj09IiwgbV90ZXJt
MSwgbV90ZXJtMik7CiB9CiAKIHZvaWQgTm90RXF1YWxOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mIHMpIGNvbnN0CiB7Ci0gICAgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3Io
cywgcHJlY2VkZW5jZSgpLCAiIT0iLCBtX2V4cHIxLCBtX2V4cHIyKTsKKyAgICBzdHJlYW1MZWZ0
QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICIhPSIsIG1fdGVybTEs
IG1fdGVybTIpOwogfQogCiB2b2lkIFN0cmljdEVxdWFsTm9kZTo6c3RyZWFtVG8oU291cmNlU3Ry
ZWFtJiBzKSBjb25zdAogewotICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9y
KHMsIHByZWNlZGVuY2UoKSwgIj09PSIsIG1fZXhwcjEsIG1fZXhwcjIpOworICAgIHN0cmVhbUxl
ZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIj09PSIsIG1fdGVy
bTEsIG1fdGVybTIpOwogfQogCiB2b2lkIE5vdFN0cmljdEVxdWFsTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtJiBzKSBjb25zdAogewotICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9w
ZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIiE9PSIsIG1fZXhwcjEsIG1fZXhwcjIpOworICAgIHN0
cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIiE9PSIs
IG1fdGVybTEsIG1fdGVybTIpOwogfQogCiB2b2lkIEJpdEFuZE5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVy
YXRvcihzLCBwcmVjZWRlbmNlKCksICImIiwgbV9leHByMSwgbV9leHByMik7CisgICAgc3RyZWFt
TGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiJiIsIG1fdGVy
bTEsIG1fdGVybTIpOwogfQogCiB2b2lkIEJpdFhPck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYgcykgY29uc3QKIHsKLSAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihz
LCBwcmVjZWRlbmNlKCksICJeIiwgbV9leHByMSwgbV9leHByMik7CisgICAgc3RyZWFtTGVmdEFz
c29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiXiIsIG1fdGVybTEsIG1f
dGVybTIpOwogfQogCiB2b2lkIEJpdE9yTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBj
b25zdAogewotICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNl
ZGVuY2UoKSwgInwiLCBtX2V4cHIxLCBtX2V4cHIyKTsKKyAgICBzdHJlYW1MZWZ0QXNzb2NpYXRp
dmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICJ8IiwgbV90ZXJtMSwgbV90ZXJtMik7
CiB9CiAKIHZvaWQgTG9naWNhbEFuZE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29u
c3QKSW5kZXg6IGtqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL25vZGVzLmNwcAkocmV2
aXNpb24gMzQ1NjEpCisrKyBranMvbm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjQsNyAr
NjY0LDcgQEAgUmVnaXN0ZXJJRCogUHJlSW5jUmVzb2x2ZU5vZGU6OmVtaXRDb2RlKAogICAgIGlm
IChSZWdpc3RlcklEKiBsb2NhbCA9IGdlbmVyYXRvci5yZWdpc3RlckZvckxvY2FsKG1faWRlbnQp
KSB7CiAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNMb2NhbENvbnN0YW50KG1faWRlbnQpKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgMS4wKTsKLSAgICAgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEFkZChyMC5nZXQoKSwgbG9jYWwsIHIwLmdldCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX2FkZCwgcjAuZ2V0KCksIGxvY2FsLCBy
MC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJl
SW5jKGxvY2FsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCBSZWdpc3RlcklEKiBQcmVEZWNSZXNvbHZl
Tm9kZTo6ZW1pdENvZGUoCiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gZ2VuZXJhdG9yLnJl
Z2lzdGVyRm9yTG9jYWwobV9pZGVudCkpIHsKICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0xvY2Fs
Q29uc3RhbnQobV9pZGVudCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByMCA9
IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAtMS4w
KTsKLSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEFkZChyMC5nZXQoKSwgbG9jYWws
IHIwLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9w
X2FkZCwgcjAuZ2V0KCksIGxvY2FsLCByMC5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJlRGVjKGxvY2FsKTsKQEAgLTgwMSwxNjMgKzgwMSwyMCBA
QCBSZWdpc3RlcklEKiBMb2dpY2FsTm90Tm9kZTo6ZW1pdENvZGUoQ29kCiAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0Tm90KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHNyYyk7CiB9
CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXBsaWNhdGl2ZSBOb2Rl
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEJpbmFyeSBPcGVyYXRpb24gTm9kZXMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTXVsdE5vZGU6OmVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fdGVybTEuZ2V0KCkpOwotICAgIFJl
Z2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV90ZXJtMi5nZXQoKSk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0TXVsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
c3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIpOwotfQotCi1SZWdpc3RlcklEKiBEaXZOb2Rl
OjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGl2aWRlbmQgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV90
ZXJtMS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogZGl2aXNvciA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX3Rlcm0yLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXYoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBkaXZpZGVuZC5nZXQoKSksIGRpdmlkZW5kLmdldCgpLCBk
aXZpc29yKTsKLX0KLQotUmVnaXN0ZXJJRCogTW9kTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGRpdmlkZW5kID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fdGVybTEuZ2V0KCkpOwotICAgIFJlZ2lz
dGVySUQqIGRpdmlzb3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV90ZXJtMi5nZXQoKSk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0TW9kKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZGl2aWRlbmQuZ2V0KCkpLCBkaXZpZGVuZC5nZXQoKSwgZGl2aXNvcik7Ci19Ci0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRpdGl2ZSBOb2RlcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1SZWdpc3RlcklEKiBBZGROb2RlOjplbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJp
bmFyeU9wTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5v
ZGVGb3JMZWZ0SGFuZFNpZGUobV90ZXJtMS5nZXQoKSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBt
X3Rlcm0yLT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX3Rlcm0yLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRB
ZGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQo
KSwgc3JjMik7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlKCksIGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNy
YzIpOwogfQogCi1SZWdpc3RlcklEKiBTdWJOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFJldmVyc2VCaW5hcnlPcE5v
ZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVm
dEhhbmRTaWRlKG1fdGVybTEuZ2V0KCksIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV90ZXJtMi0+
aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV90ZXJtMi5nZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0U3ViKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIp
OwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2hpZnQgTm9kZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVJlZ2lzdGVySUQqIExlZnRTaGlm
dE5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQotewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWwgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV90
ZXJtMS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogc2hpZnQgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV90ZXJtMi5nZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TGVmdFNoaWZ0KGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsLmdldCgpKSwgdmFsLmdldCgpLCBzaGlmdCk7
Ci19Ci0KLVJlZ2lzdGVySUQqIFJpZ2h0U2hpZnROb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fdGVybTEuZ2V0KCkpOwotICAgIFJlZ2lzdGVySUQq
IHNoaWZ0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fdGVybTIuZ2V0KCkpOwotICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFJpZ2h0U2hpZnQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2
YWwuZ2V0KCkpLCB2YWwuZ2V0KCksIHNoaWZ0KTsKLX0KLQotUmVnaXN0ZXJJRCogVW5zaWduZWRS
aWdodFNoaWZ0Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbCA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX3Rlcm0xLmdldCgpKTsKLSAgICBSZWdpc3RlcklEKiBzaGlmdCA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX3Rlcm0yLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRVbnNpZ25l
ZFJpZ2h0U2hpZnQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWwuZ2V0KCkpLCB2
YWwuZ2V0KCksIHNoaWZ0KTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IFJlbGF0aW9uYWwgTm9kZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1SZWdp
c3RlcklEKiBMZXNzTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9leHByMS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShtX2V4cHIyLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMZXNz
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCks
IHNyYzIpOwotfQotCi1SZWdpc3RlcklEKiBHcmVhdGVyTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMS5nZXQoKSk7Ci0gICAgUmVnaXN0
ZXJJRCogc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyLmdldCgpKTsKLSAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRMZXNzKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3Jj
MS5nZXQoKSksIHNyYzIsIHNyYzEuZ2V0KCkpOwotfQotCi1SZWdpc3RlcklEKiBMZXNzRXFOb2Rl
OjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIx
LmdldCgpKTsKLSAgICBSZWdpc3RlcklEKiBzcmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhw
cjIuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExlc3NFcShnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyKTsKLX0KLQot
UmVnaXN0ZXJJRCogR3JlYXRlckVxTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogc3JjMiA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRMZXNzRXEoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwg
c3JjMiwgc3JjMS5nZXQoKSk7Ci19Ci0KLVJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0
Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMS5nZXQo
KSk7Ci0gICAgUmVnaXN0ZXJJRCogYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyLmdl
dCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZU9mKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgYmFzZSk7Ci19Ci0K
LVJlZ2lzdGVySUQqIEluTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fZXhwcjEuZ2V0KCkpOwotICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMi5nZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0SW4oZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBwcm9wZXJ0eS5nZXQoKSksIHBy
b3BlcnR5LmdldCgpLCBiYXNlKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEVxdWFsaXR5IE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1SZWdpc3RlcklEKiBFcXVhbE5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fZXhwcjEuZ2V0KCkpOwotICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMi5nZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0RXF1YWwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3Jj
MS5nZXQoKSwgc3JjMik7Ci19Ci0KLVJlZ2lzdGVySUQqIE5vdEVxdWFsTm9kZTo6ZW1pdENvZGUo
Q29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMS5nZXQoKSk7Ci0g
ICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyLmdldCgpKTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb3RFcXVhbChnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyKTsKLX0KLQotUmVnaXN0ZXJJ
RCogU3RyaWN0RXF1YWxOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKLXsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShtX2V4cHIxLmdldCgpKTsKLSAgICBSZWdpc3RlcklEKiBzcmMyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fZXhwcjIuZ2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFN0
cmljdEVxdWFsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNy
YzEuZ2V0KCksIHNyYzIpOwotfQotCi1SZWdpc3RlcklEKiBOb3RTdHJpY3RFcXVhbE5vZGU6OmVt
aXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjEuZ2V0
KCkpOwotICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMi5n
ZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm90U3RyaWN0RXF1YWwoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMik7Ci19
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCaXQgT3BlcmF0aW9uIE5vZGVz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUmVnaXN0ZXJJRCogQml0QW5k
Tm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
Ci17Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9l
eHByMS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogc3JjMiA9IGdlbmVyYXRvci5lbWl0Tm9kZSht
X2V4cHIyLmdldCgpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaXRBbmQoZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMik7Ci19
Ci0KLVJlZ2lzdGVySUQqIEJpdFhPck5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjEuZ2V0KCkpOwotICAgIFJlZ2lzdGVySUQqIHNyYzIg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMi5nZXQoKSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0Qml0WE9yKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSks
IHNyYzEuZ2V0KCksIHNyYzIpOwotfQotCi1SZWdpc3RlcklEKiBCaXRPck5vZGU6OmVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjEuZ2V0KCkpOwot
ICAgIFJlZ2lzdGVySUQqIHNyYzIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByMi5nZXQoKSk7
Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Qml0T3IoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMik7CisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlKCksIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgc3JjMS5nZXQoKSksIHNyYzIsIHNyYzEuZ2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQmluYXJ5IExvZ2ljYWwgTm9kZXMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtMTAxNywyNyArODc0LDI3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJl
Z2lzdGVySUQqIGVtaXRSZWEKIHsKICAgICBzd2l0Y2ggKG9wZXIpIHsKICAgICAgICAgY2FzZSBP
cE11bHRFcToKLSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE11bChkc3QsIHNyYzEs
IHNyYzIpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3BfbXVs
LCBkc3QsIHNyYzEsIHNyYzIpOwogICAgICAgICBjYXNlIE9wRGl2RXE6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXYoZHN0LCBzcmMxLCBzcmMyKTsKKyAgICAgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX2RpdiwgZHN0LCBzcmMxLCBzcmMyKTsKICAg
ICAgICAgY2FzZSBPcFBsdXNFcToKLSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEFk
ZChkc3QsIHNyYzEsIHNyYzIpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Qmlu
YXJ5T3Aob3BfYWRkLCBkc3QsIHNyYzEsIHNyYzIpOwogICAgICAgICBjYXNlIE9wTWludXNFcToK
LSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFN1Yihkc3QsIHNyYzEsIHNyYzIpOwor
ICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bfc3ViLCBkc3QsIHNy
YzEsIHNyYzIpOwogICAgICAgICBjYXNlIE9wTFNoaWZ0OgotICAgICAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TGVmdFNoaWZ0KGRzdCwgc3JjMSwgc3JjMik7CisgICAgICAgICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9sc2hpZnQsIGRzdCwgc3JjMSwgc3JjMik7CiAg
ICAgICAgIGNhc2UgT3BSU2hpZnQ6Ci0gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRS
aWdodFNoaWZ0KGRzdCwgc3JjMSwgc3JjMik7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRCaW5hcnlPcChvcF9yc2hpZnQsIGRzdCwgc3JjMSwgc3JjMik7CiAgICAgICAgIGNhc2Ug
T3BVUlNoaWZ0OgotICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VW5zaWduZWRSaWdo
dFNoaWZ0KGRzdCwgc3JjMSwgc3JjMik7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRCaW5hcnlPcChvcF91cnNoaWZ0LCBkc3QsIHNyYzEsIHNyYzIpOwogICAgICAgICBjYXNlIE9w
QW5kRXE6Ci0gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaXRBbmQoZHN0LCBzcmMx
LCBzcmMyKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX2Jp
dGFuZCwgZHN0LCBzcmMxLCBzcmMyKTsKICAgICAgICAgY2FzZSBPcFhPckVxOgotICAgICAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Qml0WE9yKGRzdCwgc3JjMSwgc3JjMik7CisgICAgICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9iaXR4b3IsIGRzdCwgc3JjMSwg
c3JjMik7CiAgICAgICAgIGNhc2UgT3BPckVxOgotICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0Qml0T3IoZHN0LCBzcmMxLCBzcmMyKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEJpbmFyeU9wKG9wX2JpdG9yLCBkc3QsIHNyYzEsIHNyYzIpOwogICAgICAgICBjYXNl
IE9wTW9kRXE6Ci0gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRNb2QoZHN0LCBzcmMx
LCBzcmMyKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wX21v
ZCwgZHN0LCBzcmMxLCBzcmMyKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTE1NzIsMTQgKzE0MjksMTQgQEAgUmVnaXN0ZXJJ
RCogQ2FzZUJsb2NrTm9kZTo6ZW1pdENvZGVGb3JCbAogICAgIC8vIFNldHVwIGp1bXBzCiAgICAg
Zm9yIChDbGF1c2VMaXN0Tm9kZSogbGlzdCA9IG1fbGlzdDEuZ2V0KCk7IGxpc3Q7IGxpc3QgPSBs
aXN0LT5nZXROZXh0KCkpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogY2xhdXNlVmFsID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGxpc3QtPmdldENsYXVzZSgpLT5leHByKCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdFN0cmljdEVxdWFsKGNsYXVzZVZhbCwgY2xhdXNlVmFsLCBzd2l0Y2hFeHByZXNzaW9u
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9zdHJpY3RlcSwgY2xhdXNlVmFs
LCBjbGF1c2VWYWwsIHN3aXRjaEV4cHJlc3Npb24pOwogICAgICAgICBsYWJlbFZlY3Rvci5hcHBl
bmQoZ2VuZXJhdG9yLm5ld0xhYmVsKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRy
dWVNYXlDb21iaW5lKGNsYXVzZVZhbCwgbGFiZWxWZWN0b3JbbGFiZWxWZWN0b3Iuc2l6ZSgpIC0g
MV0uZ2V0KCkpOwogICAgIH0KIAogICAgIGZvciAoQ2xhdXNlTGlzdE5vZGUqIGxpc3QgPSBtX2xp
c3QyLmdldCgpOyBsaXN0OyBsaXN0ID0gbGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGNsYXVzZVZhbCA9IGdlbmVyYXRvci5lbWl0Tm9kZShsaXN0LT5nZXRDbGF1c2UoKS0+
ZXhwcigpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRTdHJpY3RFcXVhbChjbGF1c2VWYWwsIGNs
YXVzZVZhbCwgc3dpdGNoRXhwcmVzc2lvbik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0QmluYXJ5
T3Aob3Bfc3RyaWN0ZXEsIGNsYXVzZVZhbCwgY2xhdXNlVmFsLCBzd2l0Y2hFeHByZXNzaW9uKTsK
ICAgICAgICAgbGFiZWxWZWN0b3IuYXBwZW5kKGdlbmVyYXRvci5uZXdMYWJlbCgpKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlTWF5Q29tYmluZShjbGF1c2VWYWwsIGxhYmVsVmVj
dG9yW2xhYmVsVmVjdG9yLnNpemUoKSAtIDFdLmdldCgpKTsKICAgICB9CkluZGV4OiBranMvbm9k
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuaAkocmV2aXNpb24gMzQ1NjEpCisrKyBranMv
bm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlZ2lz
dGVySUQuaCIKICNpbmNsdWRlICJTb3VyY2VSYW5nZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxl
LmgiCisjaW5jbHVkZSAiVk0vT3Bjb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgpAQCAtMTE5NSwzOTAgKzExOTYsMzA4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBSZWZQ
dHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjsKICAgICB9OwogCi0gICAgY2xhc3MgTXVsdE5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJpbmFyeU9wTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBNdWx0Tm9kZShFeHByZXNz
aW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMikgS0pTX0ZBU1RfQ0FMTAotICAg
ICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShOdW1iZXJUeXBlKQorICAgICAgICBCaW5hcnlPcE5v
ZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgICAgIDogbV90ZXJtMSh0ZXJtMSkKKyAgICAgICAg
ICAgICwgbV90ZXJtMih0ZXJtMikKKyAgICAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRz
KHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIEJp
bmFyeU9wTm9kZShKU1R5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9u
Tm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUodHlwZSkKICAgICAgICAgICAgICwgbV90ZXJtMSh0ZXJtMSkKICAgICAgICAg
ICAgICwgbV90ZXJtMih0ZXJtMikKKyAgICAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRz
KHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBw
cmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY011bHRpcGxpY2l0YXZlOyB9CisgICAgICAg
IHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCA9IDA7CiAKLSAg
ICBwcml2YXRlOgorICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2Rl
PiBtX3Rlcm0xOwogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fdGVybTI7CisgICAg
ICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBEaXZO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBSZXZlcnNlQmluYXJ5T3BO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERpdk5v
ZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIpIEtKU19GQVNU
X0NBTEwKLSAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoTnVtYmVyVHlwZSkKKyAgICAgICAg
UmV2ZXJzZUJpbmFyeU9wTm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2Rl
KiB0ZXJtMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICAgICAgOiBtX3Rlcm0x
KHRlcm0xKQorICAgICAgICAgICAgLCBtX3Rlcm0yKHRlcm0yKQorICAgICAgICAgICAgLCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgUmV2ZXJzZUJpbmFyeU9wTm9kZShKU1R5cGUgdHlwZSwgRXhwcmVzc2lv
bk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUodHlwZSkKICAgICAgICAgICAgICwg
bV90ZXJtMSh0ZXJtMSkKICAgICAgICAgICAgICwgbV90ZXJtMih0ZXJtMikKKyAgICAgICAgICAg
ICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsK
ICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gICAg
ICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY011
bHRpcGxpY2l0YXZlOyB9CisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCA9IDA7CiAKLSAgICBwcml2YXRlOgorICAgIHByb3RlY3RlZDoKICAgICAg
ICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX3Rlcm0xOwogICAgICAgICBSZWZQdHI8RXhwcmVz
c2lvbk5vZGU+IG1fdGVybTI7CisgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzOwog
ICAgIH07CiAKLSAgICBjbGFzcyBNb2ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAg
ICBjbGFzcyBNdWx0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgTW9kTm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJt
MikgS0pTX0ZBU1RfQ0FMTAotICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShOdW1iZXJUeXBl
KQotICAgICAgICAgICAgLCBtX3Rlcm0xKHRlcm0xKQotICAgICAgICAgICAgLCBtX3Rlcm0yKHRl
cm0yKQorICAgICAgICBNdWx0Tm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25O
b2RlKiB0ZXJtMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAg
ICAgICAgICA6IEJpbmFyeU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZB
U1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX211bDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjTXVsdGlwbGljaXRhdmU7IH0K
KyAgICB9OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBt
X3Rlcm0xOwotICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fdGVybTI7CisgICAgY2xh
c3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAg
RGl2Tm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IEJpbmFy
eU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkg
Y29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9kaXY7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAg
IHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY011bHRp
cGxpY2l0YXZlOyB9CiAgICAgfTsKIAotICAgIGNsYXNzIEFkZE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgeworICAgIGNsYXNzIE1vZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEFkZE5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNz
aW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAot
ICAgICAgICAgICAgOiBtX3Rlcm0xKHRlcm0xKQotICAgICAgICAgICAgLCBtX3Rlcm0yKHRlcm0y
KQotICAgICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgTW9kTm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2Rl
KiB0ZXJtMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAg
ICAgICA6IEJpbmFyeU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9D
QUxMIHsgcmV0dXJuIG9wX21vZDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCBQcmVjZWRl
bmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQWRkaXRpdmU7IH0KKyAgICAgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjTXVsdGlw
bGljaXRhdmU7IH0KKyAgICB9OwogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBBZGROb2RlKEV4
cHJlc3Npb25Ob2RlKiB0ZXJtMSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0yLCBKU1R5cGUgZXhwZWN0
ZWRSZXR1cm4sIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAotICAgICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShleHBlY3RlZFJldHVybikKLSAgICAgICAgICAgICwgbV90
ZXJtMSh0ZXJtMSkKLSAgICAgICAgICAgICwgbV90ZXJtMih0ZXJtMikKLSAgICAgICAgICAgICwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgY2xhc3MgQWRk
Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgQWRkTm9k
ZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IEJpbmFyeU9wTm9k
ZSh0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV90ZXJtMTsKLSAgICAgICAgUmVm
UHRyPEV4cHJlc3Npb25Ob2RlPiBtX3Rlcm0yOwotICAgICAgICBib29sIG1fcmlnaHRIYXNBc3Np
Z25tZW50czsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX2FkZDsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQWRkaXRpdmU7IH0KICAgICB9
OwogCi0gICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xh
c3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
U3ViTm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCi0gICAgICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKE51bWJlclR5cGUpCi0gICAgICAgICAgICAsIG1fdGVybTEodGVybTEpCi0gICAg
ICAgICAgICAsIG1fdGVybTIodGVybTIpCi0gICAgICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25t
ZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUodGVy
bTEsIHRlcm0yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bj
b2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9zdWI7IH0KICAgICAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAg
ICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJl
Y0FkZGl0aXZlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5v
ZGU+IG1fdGVybTE7Ci0gICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV90ZXJtMjsKLSAg
ICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIExl
ZnRTaGlmdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIExlZnRTaGlm
dE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlZnRT
aGlmdE5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIpIEtK
U19GQVNUX0NBTEwKLSAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoTnVtYmVyVHlwZSkKLSAg
ICAgICAgICAgICwgbV90ZXJtMSh0ZXJtMSkKLSAgICAgICAgICAgICwgbV90ZXJtMih0ZXJtMikK
KyAgICAgICAgTGVmdFNoaWZ0Tm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25O
b2RlKiB0ZXJtMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAg
ICAgICAgICA6IEJpbmFyeU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZB
U1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX2xzaGlmdDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjU2hpZnQ7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV90ZXJtMTsKLSAgICAg
ICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX3Rlcm0yOwogICAgIH07CiAKLSAgICBjbGFzcyBS
aWdodFNoaWZ0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgUmlnaHRT
aGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJp
Z2h0U2hpZnROb2RlKEV4cHJlc3Npb25Ob2RlKiB0ZXJtMSwgRXhwcmVzc2lvbk5vZGUqIHRlcm0y
KSBLSlNfRkFTVF9DQUxMCi0gICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKE51bWJlclR5cGUp
Ci0gICAgICAgICAgICAsIG1fdGVybTEodGVybTEpCi0gICAgICAgICAgICAsIG1fdGVybTIodGVy
bTIpCisgICAgICAgIFJpZ2h0U2hpZnROb2RlKEV4cHJlc3Npb25Ob2RlKiB0ZXJtMSwgRXhwcmVz
c2lvbk5vZGUqIHRlcm0yLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKE51bWJlclR5cGUsIHRlcm0xLCB0ZXJtMiwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBL
SlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gb3BfcnNoaWZ0OyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0
dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNTaGlmdDsgfQot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX3Rlcm0xOwot
ICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fdGVybTI7CiAgICAgfTsKIAotICAgIGNs
YXNzIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAg
IGNsYXNzIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoRXhwcmVzc2lvbk5vZGUq
IHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIpIEtKU19GQVNUX0NBTEwKLSAgICAgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUoTnVtYmVyVHlwZSkKLSAgICAgICAgICAgICwgbV90ZXJtMSh0ZXJt
MSkKLSAgICAgICAgICAgICwgbV90ZXJtMih0ZXJtMikKKyAgICAgICAgVW5zaWduZWRSaWdodFNo
aWZ0Tm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IEJpbmFy
eU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IG9wX3Vyc2hpZnQ7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVj
ZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1NoaWZ0OyB9Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fdGVybTE7Ci0gICAgICAgIFJlZlB0cjxFeHBy
ZXNzaW9uTm9kZT4gbV90ZXJtMjsKICAgICB9OwogCi0gICAgY2xhc3MgTGVzc05vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIExlc3NOb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZXNzTm9kZShFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikgS0pTX0ZBU1RfQ0FMTAotICAgICAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShCb29sZWFuVHlwZSkKLSAgICAgICAgICAgICwgbV9leHByMShleHByMSkK
LSAgICAgICAgICAgICwgbV9leHByMihleHByMikKKyAgICAgICAgTGVzc05vZGUoRXhwcmVzc2lv
bk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoQm9vbGVhblR5
cGUsIHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29k
ZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbGVzczsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjUmVsYXRpb25hbDsgfQotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBSZWZQdHI8
RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjE7Ci0gICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4g
bV9leHByMjsKICAgICB9OwogCi0gICAgY2xhc3MgR3JlYXRlck5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgeworICAgIGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVibGljIFJldmVyc2VCaW5hcnlP
cE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5vZGUoRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwKLSAgICAgICAgICAg
IDogbV9leHByMShleHByMSkKLSAgICAgICAgICAgICwgbV9leHByMihleHByMikKKyAgICAgICAg
R3JlYXRlck5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICAgICAgOiBS
ZXZlcnNlQmluYXJ5T3BOb2RlKEJvb2xlYW5UeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9D
QUxMIHsgcmV0dXJuIG9wX2xlc3M7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2Vk
ZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0aW9uYWw7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByMTsKLSAgICAg
ICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIyOwogICAgIH07CiAKLSAgICBjbGFzcyBM
ZXNzRXFOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBMZXNzRXFOb2Rl
IDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZXNzRXFOb2Rl
KEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKSBLSlNfRkFTVF9D
QUxMCi0gICAgICAgICAgICA6IG1fZXhwcjEoZXhwcjEpCi0gICAgICAgICAgICAsIG1fZXhwcjIo
ZXhwcjIpCisgICAgICAgIExlc3NFcU5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNz
aW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAor
ICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoQm9vbGVhblR5cGUsIHRlcm0xLCB0ZXJtMiwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBL
SlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbGVzc2VxOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0
dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNSZWxhdGlvbmFs
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhw
cjE7Ci0gICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByMjsKICAgICB9OwogCi0g
ICAgY2xhc3MgR3JlYXRlckVxTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xh
c3MgR3JlYXRlckVxTm9kZSA6IHB1YmxpYyBSZXZlcnNlQmluYXJ5T3BOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEdyZWF0ZXJFcU5vZGUoRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwKLSAgICAgICAgICAgIDogbV9leHByMShleHBy
MSkKLSAgICAgICAgICAgICwgbV9leHByMihleHByMikKKyAgICAgICAgR3JlYXRlckVxTm9kZShF
eHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IFJldmVyc2VCaW5hcnlP
cE5vZGUoQm9vbGVhblR5cGUsIHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29k
ZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAg
ICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
b3BfbGVzc2VxOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2Vk
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNSZWxhdGlvbmFsOyB9Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjE7Ci0gICAgICAgIFJlZlB0cjxF
eHByZXNzaW9uTm9kZT4gbV9leHByMjsKICAgICB9OwogCi0gICAgY2xhc3MgSW5zdGFuY2VPZk5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEluc3RhbmNlT2ZOb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnN0YW5jZU9mTm9k
ZShFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikgS0pTX0ZBU1Rf
Q0FMTAotICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShCb29sZWFuVHlwZSkKLSAgICAgICAg
ICAgICwgbV9leHByMShleHByMSkKLSAgICAgICAgICAgICwgbV9leHByMihleHByMikKKyAgICAg
ICAgSW5zdGFuY2VPZk5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSog
dGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICAg
ICAgOiBCaW5hcnlPcE5vZGUoQm9vbGVhblR5cGUsIHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9D
QUxMOworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NB
TEwgeyByZXR1cm4gb3BfaW5zdGFuY2VvZjsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUmVsYXRpb25hbDsgfQot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIxOwot
ICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjI7CiAgICAgfTsKIAotICAgIGNs
YXNzIEluTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgSW5Ob2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbk5vZGUoRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwKLSAg
ICAgICAgICAgIDogbV9leHByMShleHByMSkKLSAgICAgICAgICAgICwgbV9leHByMihleHByMikK
KyAgICAgICAgSW5Ob2RlKEV4cHJlc3Npb25Ob2RlKiB0ZXJtMSwgRXhwcmVzc2lvbk5vZGUqIHRl
cm0yLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgICAg
IDogQmluYXJ5T3BOb2RlKHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwotCisgICAgICAg
IHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBv
cF9pbjsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2Uo
KSBjb25zdCB7IHJldHVybiBQcmVjUmVsYXRpb25hbDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIxOwotICAgICAgICBSZWZQdHI8RXhwcmVz
c2lvbk5vZGU+IG1fZXhwcjI7CiAgICAgfTsKIAotICAgIGNsYXNzIEVxdWFsTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgRXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFcXVhbE5vZGUoRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwKLSAgICAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUoQm9vbGVhblR5cGUpCi0gICAgICAgICAgICAsIG1fZXhwcjEoZXhwcjEp
Ci0gICAgICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCisgICAgICAgIEVxdWFsTm9kZShFeHByZXNz
aW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShCb29sZWFu
VHlwZSwgdGVybTEsIHRlcm0yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bj
b2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9lcTsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjRXF1YWxpdHk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxFeHBy
ZXNzaW9uTm9kZT4gbV9leHByMTsKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4
cHIyOwogICAgIH07CiAKLSAgICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgeworICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgTm90RXF1YWxOb2RlKEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyKSBLSlNfRkFTVF9DQUxMCi0gICAgICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKEJvb2xlYW5UeXBlKQotICAgICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQotICAg
ICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQorICAgICAgICBOb3RFcXVhbE5vZGUoRXhwcmVzc2lv
bk5vZGUqIHRlcm0xLCBFeHByZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoQm9vbGVhblR5
cGUsIHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29k
ZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbmVxOyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIFByZWNFcXVhbGl0eTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJl
c3Npb25Ob2RlPiBtX2V4cHIxOwotICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhw
cjI7CiAgICAgfTsKIAotICAgIGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CisgICAgY2xhc3MgU3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpY3RFcXVhbE5vZGUoRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwKLSAgICAgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUoQm9vbGVhblR5cGUpCi0gICAgICAgICAgICAsIG1fZXhwcjEoZXhw
cjEpCi0gICAgICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCisgICAgICAgIFN0cmljdEVxdWFsTm9k
ZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IEJpbmFyeU9wTm9k
ZShCb29sZWFuVHlwZSwgdGVybTEsIHRlcm0yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZp
cnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9z
dHJpY3RlcTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVu
Y2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxpdHk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByMTsKLSAgICAgICAgUmVmUHRyPEV4cHJl
c3Npb25Ob2RlPiBtX2V4cHIyOwogICAgIH07CiAKLSAgICBjbGFzcyBOb3RTdHJpY3RFcXVhbE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90U3RyaWN0
RXF1YWxOb2RlKEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKSBL
SlNfRkFTVF9DQUxMCi0gICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKEJvb2xlYW5UeXBlKQot
ICAgICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQotICAgICAgICAgICAgLCBtX2V4cHIyKGV4cHIy
KQorICAgICAgICBOb3RTdHJpY3RFcXVhbE5vZGUoRXhwcmVzc2lvbk5vZGUqIHRlcm0xLCBFeHBy
ZXNzaW9uTm9kZSogdGVybTIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FM
TAorICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoQm9vbGVhblR5cGUsIHRlcm0xLCB0ZXJtMiwg
cmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbnN0cmljdGVxOyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAg
ICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNFcXVh
bGl0eTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBt
X2V4cHIxOwotICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjI7CiAgICAgfTsK
IAotICAgIGNsYXNzIEJpdEFuZE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNs
YXNzIEJpdEFuZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEJpdEFuZE5vZGUoRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIpIEtKU19GQVNUX0NBTEwKLSAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoTnVtYmVyVHlw
ZSkKLSAgICAgICAgICAgICwgbV9leHByMShleHByMSkKLSAgICAgICAgICAgICwgbV9leHByMihl
eHByMikKKyAgICAgICAgQml0QW5kTm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Np
b25Ob2RlKiB0ZXJtMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisg
ICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pT
X0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIG9wX2JpdGFuZDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVh
bCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQml0d2lzZUFuZDsg
fQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIx
OwotICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjI7CiAgICAgfTsKIAotICAg
IGNsYXNzIEJpdE9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgQml0
T3JOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRP
ck5vZGUoRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19G
QVNUX0NBTEwKLSAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoTnVtYmVyVHlwZSkKLSAgICAg
ICAgICAgICwgbV9leHByMShleHByMSkKLSAgICAgICAgICAgICwgbV9leHByMihleHByMikKKyAg
ICAgICAgQml0T3JOb2RlKEV4cHJlc3Npb25Ob2RlKiB0ZXJtMSwgRXhwcmVzc2lvbk5vZGUqIHRl
cm0yLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgICAg
IDogQmluYXJ5T3BOb2RlKE51bWJlclR5cGUsIHRlcm0xLCB0ZXJtMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxM
OworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gb3BfYml0b3I7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5j
ZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0JpdHdpc2VPcjsgfQotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIxOwotICAgICAgICBS
ZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjI7CiAgICAgfTsKIAotICAgIGNsYXNzIEJpdFhP
ck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJpdFhPck5vZGUgOiBw
dWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhPck5vZGUoRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpIEtKU19GQVNUX0NBTEwK
LSAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoTnVtYmVyVHlwZSkKLSAgICAgICAgICAgICwg
bV9leHByMShleHByMSkKLSAgICAgICAgICAgICwgbV9leHByMihleHByMikKKyAgICAgICAgQml0
WE9yTm9kZShFeHByZXNzaW9uTm9kZSogdGVybTEsIEV4cHJlc3Npb25Ob2RlKiB0ZXJtMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgICAgICA6IEJpbmFy
eU9wTm9kZShOdW1iZXJUeXBlLCB0ZXJtMSwgdGVybTIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IG9wX2JpdHhvcjsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNl
ZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQml0d2lzZVhvcjsgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIxOwotICAgICAgICBSZWZQdHI8
RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjI7CiAgICAgfTsKIAogICAgIC8qKgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>