<?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>40443</bug_id>
          
          <creation_ts>2010-06-10 14:04:07 -0700</creation_ts>
          <short_desc>Delete custom JSC bindings for bufferData, texImage2D and texSubImage2D</short_desc>
          <delta_ts>2010-08-05 12:30:26 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>38920</dependson>
    
    <dependson>40450</dependson>
          <blocked>40318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>oliver</cc>
    
    <cc>yaar</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236520</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 14:04:07 -0700</bug_when>
    <thetext>CodeGeneratorJS.pm has been updated to support overloaded methods in bug 38920. The custom JSC bindings for WebGLRenderingContext&apos;s bufferData, texImage2D and texSubImage2D should now be deleted. This will simplify needed work to update the signatures for texImage2D and texSubImage2D for recent spec changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236523</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 14:06:42 -0700</bug_when>
    <thetext>*** Bug 38024 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236531</commentid>
    <comment_count>2</comment_count>
      <attachid>58412</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 14:22:42 -0700</bug_when>
    <thetext>Created attachment 58412
Patch

From the ChangeLog:

Deleted custom JSC bindings for bufferData, texImage2D and texSubImage2D and fixed minor associated issues in code generator and IDL. Updated fast/canvas/webgl/texImageTest-expected.txt, which now runs as intended. Ran all layout tests, including WebGL tests, in Safari.

Note: full layout tests run still ongoing; will not commit until successfully completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236539</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 14:32:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Note: full layout tests run still ongoing; will not commit until successfully completed.

Layout tests all pass with the changes to the code generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236547</commentid>
    <comment_count>4</comment_count>
      <attachid>58412</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-10 14:51:10 -0700</bug_when>
    <thetext>Comment on attachment 58412
Patch

Awesome! Thanks kbr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236567</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 15:46:47 -0700</bug_when>
    <thetext>Committed r60979: &lt;http://trac.webkit.org/changeset/60979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236589</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 17:05:27 -0700</bug_when>
    <thetext>The first patch broke the Leopard build due to bugs in the JSC code generation for overloaded methods, and I rolled it out in https://bugs.webkit.org/show_bug.cgi?id=40450 . Reopening this and determining a revised fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236610</commentid>
    <comment_count>7</comment_count>
      <attachid>58427</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 17:52:41 -0700</bug_when>
    <thetext>Created attachment 58427
Revised patch

Added JSValue::encode to exception return path, needed on Leopard in particular.

Built on Leopard and Snow Leopard; reran WebGL layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236668</commentid>
    <comment_count>8</comment_count>
      <attachid>58427</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-10 21:29:50 -0700</bug_when>
    <thetext>Comment on attachment 58427
Revised patch

Energize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236929</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-11 11:22:38 -0700</bug_when>
    <thetext>Committed r61027: &lt;http://trac.webkit.org/changeset/61027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260773</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-05 12:30:26 -0700</bug_when>
    <thetext>*** Bug 32002 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58412</attachid>
            <date>2010-06-10 14:22:42 -0700</date>
            <delta_ts>2010-06-10 17:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>custom-bindings.patch</filename>
            <type>text/plain</type>
            <size>23663</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDYtMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
bGV0ZSBjdXN0b20gSlNDIGJpbmRpbmdzIGZvciBidWZmZXJEYXRhLCB0ZXhJbWFnZTJEIGFuZCB0
ZXhTdWJJbWFnZTJECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDQ0MworCisgICAgICAgIERlbGV0ZWQgY3VzdG9tIEpTQyBiaW5kaW5ncyBmb3IgYnVm
ZmVyRGF0YSwgdGV4SW1hZ2UyRCBhbmQKKyAgICAgICAgdGV4U3ViSW1hZ2UyRCBhbmQgZml4ZWQg
bWlub3IgYXNzb2NpYXRlZCBpc3N1ZXMgaW4gY29kZSBnZW5lcmF0b3IKKyAgICAgICAgYW5kIElE
TC4gVXBkYXRlZCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0ZWQudHh0LAor
ICAgICAgICB3aGljaCBub3cgcnVucyBhcyBpbnRlbmRlZC4gUmFuIGFsbCBsYXlvdXQgdGVzdHMs
IGluY2x1ZGluZyBXZWJHTAorICAgICAgICB0ZXN0cywgaW4gU2FmYXJpLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAg
LSBEZWxldGVkIGN1c3RvbSBiaW5kaW5ncy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgIC0gTWFkZSBvdmVybG9hZCBoZWxwZXIgZnVuY3Rp
b25zIHN0YXRpYyB0byBmaXggY29tcGlsZXIgd2FybmluZ3MuCisgICAgICAgICAtIEFkZGVkIG5l
ZWRlZCBpc09iamVjdCBjaGVjayBmb3Igb3ZlcmxvYWRzIGJldHdlZW4gb2JqZWN0IGFuZCBub24t
b2JqZWN0IGFyZ3VtZW50cy4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFZpZGVvRWxlbWVudC5pZGw6CisgICAgICAgICAtIEFkZGVkIEdlbmVyYXRlTmF0aXZlQ29udmVy
dGVyIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaWRsOgorICAgICAgICAgLSBEZWxldGVkICNpZmRlZnMgZm9yIGN1c3RvbSBK
U0MgYmluZGluZ3MuCisKIDIwMTAtMDYtMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwCShyZXZpc2lvbiA2MDk2NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw0NSArNjcsNiBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17
Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gdGhy
b3dTeW50YXhFcnJvcihleGVjKTsKLQotICAgIHVuc2lnbmVkIHRhcmdldCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvSW50MzIoZXhlYyk7Ci0gICAgdW5zaWduZWQgdXNhZ2UgPSBleGVjLT5hcmd1bWVu
dCgyKS50b0ludDMyKGV4ZWMpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgLy8g
SWYgYXJndW1lbnQgMSBpcyBhIG51bWJlciwgd2UgYXJlIGluaXRpYWxpemluZyB0aGlzIGJ1ZmZl
ciB0byB0aGF0IHNpemUKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdW5zaWduZWQgaW50IGNvdW50ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihl
eGVjKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgp
KS0+YnVmZmVyRGF0YSh0YXJnZXQsIGNvdW50LCB1c2FnZSwgZWMpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXkgPSB0b0FycmF5QnVmZmVyVmlldyhleGVjLT5h
cmd1bWVudCgxKSk7Ci0gICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+
KGltcGwoKSktPmJ1ZmZlckRhdGEodGFyZ2V0LCBhcnJheSwgdXNhZ2UsIGVjKTsKLSAgICB9Ci0K
LSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotfQotCi1KU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgIT0g
MykKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7Ci0KLSAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwotICAgIHVuc2lnbmVk
IG9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgCi0gICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheSA9IHRvQXJyYXlC
dWZmZXJWaWV3KGV4ZWMtPmFyZ3VtZW50KDIpKTsKLSAgICAKLSAgICBzdGF0aWNfY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0
LCBhcnJheSwgZWMpOwotCi0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLX0KLQogc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdlYkdMR2V0SW5mbyYg
aW5mbykKIHsKICAgICBzd2l0Y2ggKGluZm8uZ2V0VHlwZSgpKSB7CkBAIC0zMTEsMjA3ICsyNzIs
NiBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0CiAgICAgcmV0dXJu
IGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBrVmVydGV4QXR0cmliKTsKIH0KIAotLy8g
ICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgaW4gR0xzaXplaSB3aWR0aCwgaW4gR0xzaXplaSBoZWlnaHQs
IGluIEdMaW50IGJvcmRlciwgaW4gR0xlbnVtIGZvcm1hdCwgaW4gR0xlbnVtIHR5cGUsIGluIEFy
cmF5QnVmZmVyVmlldyBwaXhlbHMpOwotLy8gICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVtIHRh
cmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEltYWdlRGF0YSBwaXhlbHMsIFtPcHRpb25hbF0gR0xi
b29sZWFuIGZsaXBZLCBbT3B0aW9uYWxdIGluIHByZW11bHRpcGx5QWxwaGEpOwotLy8gICB2b2lk
IHRleEltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEhUTUxJbWFn
ZUVsZW1lbnQgaW1hZ2UsIFtPcHRpb25hbF0gaW4gR0xib29sZWFuIGZsaXBZLCBbT3B0aW9uYWxd
IGluIHByZW11bHRpcGx5QWxwaGEpOwotLy8gICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVtIHRh
cmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgW09wdGlv
bmFsXSBpbiBHTGJvb2xlYW4gZmxpcFksIFtPcHRpb25hbF0gaW4gcHJlbXVsdGlwbHlBbHBoYSk7
Ci0vLyAgIHZvaWQgdGV4SW1hZ2UyRChpbiBHTGVudW0gdGFyZ2V0LCBpbiBHTGludCBsZXZlbCwg
aW4gSFRNTFZpZGVvRWxlbWVudCB2aWRlbywgW09wdGlvbmFsXSBpbiBHTGJvb2xlYW4gZmxpcFks
IFtPcHRpb25hbF0gaW4gcHJlbXVsdGlwbHlBbHBoYSk7Ci1KU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEV4ZWNTdGF0ZSogZXhlYykKLXsgCi0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDMgfHwgZXhlYy0+YXJndW1lbnRDb3VudCgpID4gOSkKLSAgICAg
ICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICAKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOyAgICAKLSAgICB1bnNpZ25lZCB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAot
ICAgIHVuc2lnbmVkIGxldmVsID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLQotICAgIEpTT2JqZWN0KiBvID0gMDsKLSAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDw9IDUpIHsKLSAgICAgICAgLy8gVGhpcyBpcyBvbmUgb2YgdGhlIGxhc3QgNCBm
b3Jtcy4gUGFyYW0gMiBjYW4gYmUgSW1hZ2VEYXRhIG9yIDxpbWc+LCA8Y2FudmFzPiBvciA8dmlk
ZW8+IGVsZW1lbnQuCi0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKTsK
LSAgICAKLSAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgICAgICAKLSAgICAgICAgbyA9IGFzT2JqZWN0KHZh
bHVlKTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgZmxpcFkgPSBleGVjLT5hcmd1bWVudCgzKS50
b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSA9IGV4ZWMtPmFy
Z3VtZW50KDQpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChvLT5pbmhl
cml0cygmSlNJbWFnZURhdGE6OnNfaW5mbykpIHsKLSAgICAgICAgICAgIEltYWdlRGF0YSogZGF0
YSA9IHN0YXRpY19jYXN0PEltYWdlRGF0YSo+KHN0YXRpY19jYXN0PEpTSW1hZ2VEYXRhKj4obykt
PmltcGwoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IGRhdGEsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBlYyk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
by0+aW5oZXJpdHMoJkpTSFRNTEltYWdlRWxlbWVudDo6c19pbmZvKSkgewotICAgICAgICAgICAg
SFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQq
PihzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVsZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgZWxlbWVudCwgZmxpcFksIHBy
ZW11bHRpcGx5QWxwaGEsIGVjKTsKLSAgICAgICAgfSBlbHNlIGlmIChvLT5pbmhlcml0cygmSlNI
VE1MQ2FudmFzRWxlbWVudDo6c19pbmZvKSkgewotICAgICAgICAgICAgSFRNTENhbnZhc0VsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0
PEpTSFRNTENhbnZhc0VsZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQt
PnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgZWxlbWVudCwgZmxpcFksIHByZW11bHRpcGx5QWxw
aGEsIGVjKTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgICAgIH0gZWxzZSBpZiAoby0+aW5oZXJp
dHMoJkpTSFRNTFZpZGVvRWxlbWVudDo6c19pbmZvKSkgewotICAgICAgICAgICAgSFRNTFZpZGVv
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQqPihzdGF0aWNf
Y2FzdDxKU0hUTUxWaWRlb0VsZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgZWxlbWVudCwgZmxpcFksIHByZW11bHRpcGx5
QWxwaGEsIGVjKTsKLSNlbmRpZgotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSAhPSA5KQotICAgICAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7
Ci0KLSAgICAgICAgLy8gVGhpcyBtdXN0IGJlIHRoZSBBcnJheUJ1ZmZlclZpZXcgY2FzZQotICAg
ICAgICB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIo
ZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgICAgICB1bnNpZ25lZCB3aWR0aCA9IGV4ZWMt
PmFyZ3VtZW50KDMpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkgICAgCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgICAgICB1
bnNpZ25lZCBoZWlnaHQgPSBleGVjLT5hcmd1bWVudCg0KS50b0ludDMyKGV4ZWMpOwotICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAotICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci0KLSAgICAgICAgdW5zaWduZWQgYm9yZGVyID0gZXhlYy0+YXJndW1lbnQoNSku
dG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgICAgIHVuc2lnbmVkIGZvcm1h
dCA9IGV4ZWMtPmFyZ3VtZW50KDYpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQot
ICAgICAgICB1bnNpZ25lZCB0eXBlID0gZXhlYy0+YXJndW1lbnQoNykudG9JbnQzMihleGVjKTsK
LSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotCi0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVu
dCg4KTsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBGb3IgdGhpcyBjYXNlIHBhc3NpbmcgMCAo
Zm9yIGEgbnVsbCBhcnJheSkgaXMgYWxsb3dlZAotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgMCwgZWMpOwotICAg
ICAgICBlbHNlIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICBvID0gYXNPYmpl
Y3QodmFsdWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpT
QXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gY2hlY2sgdG8gbWFrZSBzdXJlIEFycmF5QnVmZmVyVmlldyBpcyBhIEludDhBcnJheSBv
ciBJbnQxNkFycmF5LAotICAgICAgICAgICAgICAgIC8vIGRlcGVuZGluZyBvbiB0aGUgcGFzc2Vk
IHR5cGUgcGFyYW1ldGVyLgotICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogb2JqID0g
c3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXJWaWV3Kj4oc3RhdGljX2Nhc3Q8SlNBcnJheUJ1ZmZlclZp
ZXcqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgb2JqLCBlYyk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKLSAgICB9Ci0gICAgCi0gICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgICAgCi19Ci0KLS8v
ICAgdm9pZCB0ZXhTdWJJbWFnZTJEKGluIEdMZW51bSB0YXJnZXQsIGluIEdMaW50IGxldmVsLCBp
biBHTGludCB4b2Zmc2V0LCBpbiBHTGludCB5b2Zmc2V0LCBpbiBHTHNpemVpIHdpZHRoLCBpbiBH
THNpemVpIGhlaWdodCwgaW4gR0xlbnVtIGZvcm1hdCwgaW4gR0xlbnVtIHR5cGUsIGluIEFycmF5
QnVmZmVyVmlldyBwaXhlbHMpOwotLy8gICB2b2lkIHRleFN1YkltYWdlMkQoaW4gR0xlbnVtIHRh
cmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEdMaW50IHhvZmZzZXQsIGluIEdMaW50IHlvZmZzZXQs
IGluIEltYWdlRGF0YSBwaXhlbHMsIFtPcHRpb25hbF0gR0xib29sZWFuIGZsaXBZLCBbT3B0aW9u
YWxdIGluIHByZW11bHRpcGx5QWxwaGEpOwotLy8gICB2b2lkIHRleFN1YkltYWdlMkQoaW4gR0xl
bnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEdMaW50IHhvZmZzZXQsIGluIEdMaW50IHlv
ZmZzZXQsIGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIFtPcHRpb25hbF0gR0xib29sZWFuIGZs
aXBZLCBbT3B0aW9uYWxdIGluIHByZW11bHRpcGx5QWxwaGEpOwotLy8gICB2b2lkIHRleFN1Yklt
YWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEdMaW50IHhvZmZzZXQs
IGluIEdMaW50IHlvZmZzZXQsIGluIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgW09wdGlvbmFs
XSBHTGJvb2xlYW4gZmxpcFksIFtPcHRpb25hbF0gaW4gcHJlbXVsdGlwbHlBbHBoYSk7Ci0vLyAg
IHZvaWQgdGV4U3ViSW1hZ2UyRChpbiBHTGVudW0gdGFyZ2V0LCBpbiBHTGludCBsZXZlbCwgaW4g
R0xpbnQgeG9mZnNldCwgaW4gR0xpbnQgeW9mZnNldCwgaW4gSFRNTFZpZGVvRWxlbWVudCB2aWRl
bywgW09wdGlvbmFsXSBHTGJvb2xlYW4gZmxpcFksIFtPcHRpb25hbF0gaW4gcHJlbXVsdGlwbHlB
bHBoYSk7Ci1KU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEV4
ZWNTdGF0ZSogZXhlYykKLXsgCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDUgfHwg
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gOSkKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJy
b3IoZXhlYyk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQotICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+
KGltcGwoKSk7ICAgIAotICAgIHVuc2lnbmVkIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
SW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICB1bnNpZ25lZCBsZXZlbCA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgeG9mZiA9
IGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSAgICAKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgdW5z
aWduZWQgeW9mZiA9IGV4ZWMtPmFyZ3VtZW50KDMpLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgCi0gICAgSlNPYmplY3QqIG8gPSAwOwotICAgICAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDw9IDcpIHsKLSAgICAgICAgLy8gVGhpcyBpcyBvbmUgb2YgdGhlIGxhc3QgNCBm
b3Jtcy4gUGFyYW0gNCBjYW4gYmUgPGltZz4sIDxjYW52YXM+IG9yIDx2aWRlbz4gZWxlbWVudCwg
b2YgdGhlIGZvcm1hdCBwYXJhbS4KLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDQpOwotCi0gICAgICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOwotCi0gICAgICAgIG8gPSBhc09iamVjdCh2YWx1
ZSk7Ci0KLSAgICAgICAgYm9vbCBmbGlwWSA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvQm9vbGVhbihl
eGVjKTsKLSAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhID0gZXhlYy0+YXJndW1lbnQoNiku
dG9Cb29sZWFuKGV4ZWMpOwotICAgICAgICAKLSAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0lt
YWdlRGF0YTo6c19pbmZvKSkgewotICAgICAgICAgICAgSW1hZ2VEYXRhKiBkYXRhID0gc3RhdGlj
X2Nhc3Q8SW1hZ2VEYXRhKj4oc3RhdGljX2Nhc3Q8SlNJbWFnZURhdGEqPihvKS0+aW1wbCgpKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwg
eW9mZiwgZGF0YSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGVjKTsKLSAgICAgICAgfSBlbHNl
IGlmIChvLT5pbmhlcml0cygmSlNIVE1MSW1hZ2VFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAg
ICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxl
bWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTEltYWdlRWxlbWVudCo+KG8pLT5pbXBsKCkpOwotICAg
ICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2Zm
LCBlbGVtZW50LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwotICAgICAgICB9IGVsc2Ug
aWYgKG8tPmluaGVyaXRzKCZKU0hUTUxDYW52YXNFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAg
ICAgICBIVE1MQ2FudmFzRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNF
bGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MQ2FudmFzRWxlbWVudCo+KG8pLT5pbXBsKCkpOwot
ICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5
b2ZmLCBlbGVtZW50LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwotI2lmIEVOQUJMRShW
SURFTykKLSAgICAgICAgfSBlbHNlIGlmIChvLT5pbmhlcml0cygmSlNIVE1MVmlkZW9FbGVtZW50
OjpzX2luZm8pKSB7Ci0gICAgICAgICAgICBIVE1MVmlkZW9FbGVtZW50KiBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTFZpZGVvRWxlbWVu
dCo+KG8pLT5pbXBsKCkpOwotICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCBlbGVtZW50LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwg
ZWMpOwotI2VuZGlmCi0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBUaGlzIG11c3QgYmUgdGhlIEFycmF5
QnVmZmVyVmlldyBmb3JtCi0gICAgICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgIT0gOSkK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOwotCi0gICAgICAgIHVu
c2lnbmVkIHdpZHRoID0gZXhlYy0+YXJndW1lbnQoNCkudG9JbnQzMihleGVjKTsKLSAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGVpZ2h0ID0gZXhlYy0+YXJndW1l
bnQoNSkudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAg
ICAKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAKLSAgICAgICAg
dW5zaWduZWQgZm9ybWF0ID0gZXhlYy0+YXJndW1lbnQoNikudG9JbnQzMihleGVjKTsKLSAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgdHlwZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDcpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
ICAgCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgCi0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCg4KTsKLSAgICAgICAgaWYgKCF2YWx1ZS5p
c09iamVjdCgpKQotICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIDAsIGVjKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBvID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICAK
LSAgICAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbykp
IHsKLSAgICAgICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIG9iaiA9IHN0YXRpY19jYXN0PEFy
cmF5QnVmZmVyVmlldyo+KHN0YXRpY19jYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4obyktPmltcGwo
KSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG9iaiwgZWMpOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGJvb2wgdG9WZWN0b3IoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9y
KQogewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CShyZXZpc2lvbiA2MDk2NSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTExMTUsNyArMTExNSw3IEBAIHN1YiBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24KICAgICAgICAgIyB0aGVzZSBhcmUgYWNjZXB0YWJs
ZSB2YWx1ZXMgZm9yIGEgRE9NU3RyaW5nIGFyZ3VtZW50IChhbnkgT2JqZWN0IGNhbgogICAgICAg
ICAjIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB2aWEgLnRvU3RyaW5nKS4KICAgICAgICAgcHVz
aChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5pc051bGwoKSB8fCAke3ZhbHVlfS5pc1VuZGVm
aW5lZCgpIHx8ICR7dmFsdWV9LmlzU3RyaW5nKCkgfHwgJHt2YWx1ZX0uaXNPYmplY3QoKSkiKSBp
ZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKLSAgICAgICAgcHVzaChAYW5k
RXhwcmVzc2lvbiwgIigke3ZhbHVlfS5pc051bGwoKSB8fCBhc09iamVjdCgke3ZhbHVlfSktPmlu
aGVyaXRzKCZKUyR7dHlwZX06OnNfaW5mbykpIikgdW5sZXNzIElzTmF0aXZlVHlwZSgkdHlwZSk7
CisgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0uaXNOdWxsKCkgfHwgJHt2
YWx1ZX0uaXNPYmplY3QoKSAmJiBhc09iamVjdCgke3ZhbHVlfSktPmluaGVyaXRzKCZKUyR7dHlw
ZX06OnNfaW5mbykpIikgdW5sZXNzIElzTmF0aXZlVHlwZSgkdHlwZSk7CiAKICAgICAgICAgJHBh
cmFtZXRlckluZGV4Kys7CiAgICAgfQpAQCAtMTc4Niw2ICsxNzg2LDkgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYm
IEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxKSB7CiAgICAgICAgICAgICAgICAgIyBBcHBl
bmQgYSBudW1iZXIgdG8gYW4gb3ZlcmxvYWRlZCBtZXRob2QncyBuYW1lIHRvIG1ha2UgaXQgdW5p
cXVlOgogICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb25OYW1lIC4gJGZ1
bmN0aW9uLT57b3ZlcmxvYWRJbmRleH07CisgICAgICAgICAgICAgICAgIyBNYWtlIHRoaXMgZnVu
Y3Rpb24gc3RhdGljIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLCBzaW5jZSB3ZQorICAgICAg
ICAgICAgICAgICMgZG9uJ3QgZ2VuZXJhdGUgYSBwcm90b3R5cGUgZm9yIGl0IGluIHRoZSBoZWFk
ZXIuCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgIik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50YXRpb25GdW5jdGlvbiJ9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmlkbAkocmV2aXNpb24gNjA5NjUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBACiBtb2R1bGUgaHRtbCB7CiAKICAg
ICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24KKyAgICAgICAgQ3VzdG9t
TWFya0Z1bmN0aW9uLAorICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlcgogICAgIF0gSFRN
TENhbnZhc0VsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICAgICAgYXR0cmlidXRlIGxvbmcg
d2lkdGg7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2MDk2NSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNyArMjAsOSBAQAogCiBtb2R1bGUgaHRtbCB7CiAKLSAgICBpbnRlcmZhY2UgSFRNTEltYWdl
RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZU5hdGl2ZUNvbnZlcnRlcgorICAgIF0gSFRNTEltYWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVm
bGVjdF0gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyBhbGlnbjsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9NU3Ry
aW5nIGFsdDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDYwOTY1
KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCwxMCBAQAogICovCiAKIG1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2UgW0Nv
bmRpdGlvbmFsPVZJREVPXSBIVE1MVmlkZW9FbGVtZW50IDogSFRNTE1lZGlhRWxlbWVudCB7Cisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAgIEdlbmVy
YXRlTmF0aXZlQ29udmVydGVyCisgICAgXSBIVE1MVmlkZW9FbGVtZW50IDogSFRNTE1lZGlhRWxl
bWVudCB7CiAgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgICAgICBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHZpZGVvV2lkdGg7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA2MDk2NSkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDc0LDE1ICs0NzQsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICBibGVu
ZEZ1bmMoaW4gdW5zaWduZWQgbG9uZyBzZmFjdG9yLCBpbiB1bnNpZ25lZCBsb25nIGRmYWN0b3Ip
OwogICAgICAgICB2b2lkICAgICAgICAgYmxlbmRGdW5jU2VwYXJhdGUoaW4gdW5zaWduZWQgbG9u
ZyBzcmNSR0IsIGluIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCBpbiB1bnNpZ25lZCBsb25nIHNyY0Fs
cGhhLCBpbiB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKIAotI2lmIGRlZmluZWQoVjhfQklORElO
RykgJiYgVjhfQklORElORwogICAgICAgICB2b2lkICAgICAgICAgYnVmZmVyRGF0YShpbiB1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEsIGluIHVuc2lnbmVkIGxv
bmcgdXNhZ2UpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAgIGJ1
ZmZlckRhdGEoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgc2l6ZSwgaW4gdW5zaWdu
ZWQgbG9uZyB1c2FnZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAg
ICAgYnVmZmVyU3ViRGF0YShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBvZmZzZXQs
IGluIEFycmF5QnVmZmVyVmlldyBkYXRhKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0jZWxzZQot
ICAgICAgICAvLyBGSVhNRTogVW5mb3JrIG9uY2UgSlNDIHN1cHBvcnRzIG92ZXJsb2FkIGdlbmVy
YXRpb24gdG9vLgotICAgICAgICBbQ3VzdG9tXSB2b2lkIGJ1ZmZlckRhdGEoKSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBidWZmZXJTdWJEYXRhKCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQpOwogICAgICAgICB2b2lkICAg
ICAgICAgY2xlYXIoaW4gdW5zaWduZWQgbG9uZyBtYXNrKTsKQEAgLTYxMyw3ICs2MDcsNiBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICB0ZXhQYXJhbWV0ZXJpKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbiBsb25nIHBhcmFtKTsK
IAogICAgICAgICAvLyBTdXBwb3J0ZWQgZm9ybXM6Ci0jaWYgZGVmaW5lZChWOF9CSU5ESU5HKSAm
JiBWOF9CSU5ESU5HCiAgICAgICAgIHZvaWQgICAgICAgICB0ZXhJbWFnZTJEKGluIHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiB1bnNpZ25lZCBsb25nIGludGVybmFsZm9y
bWF0LCBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGxvbmcgYm9yZGVyLCBpbiB1bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4g
dW5zaWduZWQgbG9uZyB0eXBlLCBpbiBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgICAgICAgICB0ZXhJbWFnZTJEKGluIHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiBJbWFnZURhdGEgcGl4ZWxzLApAQCAtNjM2
LDExICs2MjksNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgaW4gW09wdGlvbmFsXSBib29sZWFu
IGZsaXBZLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gcHJlbXVsdGlwbHlBbHBoYSkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAgICAgdGV4U3ViSW1hZ2UyRChpbiB1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBpbiBsb25n
IHlvZmZzZXQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBIVE1MVmlk
ZW9FbGVtZW50IHZpZGVvLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gZmxpcFksIGluIFtPcHRpb25h
bF0gYm9vbGVhbiBwcmVtdWx0aXBseUFscGhhKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0jZWxz
ZQotICAgICAgICAvLyBGSVhNRTogVW5mb3JrIG9uY2UgSlNDIHN1cHBvcnRzIG92ZXJsb2FkIGdl
bmVyYXRpb24gdG9vLgotICAgICAgICBbQ3VzdG9tXSB2b2lkIHRleEltYWdlMkQoKTsKLSAgICAg
ICAgW0N1c3RvbV0gdm9pZCB0ZXhTdWJJbWFnZTJEKCk7Ci0jZW5kaWYKKwogICAgICAgICB2b2lk
IHVuaWZvcm0xZihpbiBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgaW4gZmxvYXQgeCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybTFmdihp
biBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgaW4gRmxvYXQzMkFycmF5IHYpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHVuaWZvcm0xaShpbiBXZWJHTFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgaW4gbG9uZyB4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDYwOTcyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERlbGV0ZSBjdXN0b20gSlNDIGJpbmRpbmdzIGZvciBidWZmZXJEYXRhLCB0ZXhJbWFnZTJE
IGFuZCB0ZXhTdWJJbWFnZTJECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDQ0MworCisgICAgICAgIERlbGV0ZWQgY3VzdG9tIEpTQyBiaW5kaW5ncyBm
b3IgYnVmZmVyRGF0YSwgdGV4SW1hZ2UyRCBhbmQKKyAgICAgICAgdGV4U3ViSW1hZ2UyRCBhbmQg
Zml4ZWQgbWlub3IgYXNzb2NpYXRlZCBpc3N1ZXMgaW4gY29kZSBnZW5lcmF0b3IKKyAgICAgICAg
YW5kIElETC4gVXBkYXRlZCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0ZWQu
dHh0LAorICAgICAgICB3aGljaCBub3cgcnVucyBhcyBpbnRlbmRlZC4gUmFuIGFsbCBsYXlvdXQg
dGVzdHMsIGluY2x1ZGluZyBXZWJHTAorICAgICAgICB0ZXN0cywgaW4gU2FmYXJpLgorCisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL3RleEltYWdlVGVzdC5qczoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0ZWQudHh0OgorCiAy
MDEwLTA2LTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlVGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2VUZXN0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjA5NjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXhJ
bWFnZVRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDE4ICsyLDE4IEBAIFRl
c3Qgb2YgdGV4SW1hZ2UyZCBhbmQgdGV4U3ViSW1hZ2UyZAogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKLVBBU1MgY29udGV4dC50ZXhJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCkgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuCitQQVNTIGNvbnRleHQudGV4
SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCiBQQVNTIGNvbnRleHQudGV4SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAs
IGNvbnRleHQuUkdCQSwgNjQsIDY0LCAwLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURf
QllURSwgbnVsbCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0LnRleEltYWdlMkQoY29udGV4
dC5URVhUVVJFXzJELCAwLCBjb250ZXh0LlJHQkEsIDAsIGNvbnRleHQuUkdCQSwgY29udGV4dC5V
TlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFN5bnRheCBlcnJv
ci4KK1BBU1MgY29udGV4dC50ZXhJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgY29udGV4
dC5SR0JBLCAwLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgY29udGV4dC50ZXhJbWFnZTJE
KGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgY29udGV4dC5SR0JBLCAyLCAyLCAwLCBjb250ZXh0LlJH
QkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgYXJyYXkpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29u
dGV4dC50ZXhJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgaW1hZ2VEYXRhLCB0cnVlKSBp
cyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQudGV4SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQs
IDAsIGltYWdlKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQudGV4SW1hZ2UyRChjb250ZXh0
LlRFWFRVUkVfMkQsIDAsIGNhbnZhczJkLCBmYWxzZSkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250
ZXh0LnRleEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCB2aWRlbywgdHJ1ZSwgZmFsc2Up
IGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVS
RV8yRCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuCitQQVNTIGNv
bnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIGNvbnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0
LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgMCwgMCwgY29udGV4dC5SR0JBLCBjb250ZXh0LlVOU0lH
TkVEX0JZVEUsIG51bGwpIGlzIHVuZGVmaW5lZC4KLUZBSUwgY29udGV4dC50ZXhTdWJJbWFnZTJE
KGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMTAsIDIwLCAwLCAwLCBjb250ZXh0LlJHQkEsIGNvbnRl
eHQuVU5TSUdORURfQllURSwgMCkgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4gV2FzIHVuZGVm
aW5lZC4KLVBBU1MgY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwg
MTAsIDIwLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogU3ludGF4IGVycm9yLgorUEFTUyBjb250ZXh0LnRleFN1YkltYWdlMkQoY29udGV4
dC5URVhUVVJFXzJELCAwLCAxMCwgMjAsIDAsIDAsIGNvbnRleHQuUkdCQSwgY29udGV4dC5VTlNJ
R05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBjb250ZXh0LnRleFN1YkltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCAxMCwgMjAsIDAs
IGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KIFBBU1MgY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwg
MCwgMTAsIDIwLCBpbWFnZURhdGEsIGZhbHNlKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQu
dGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgaW1hZ2UpIGlzIHVu
ZGVmaW5lZC4KIFBBU1MgY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwg
MCwgMTAsIDIwLCBjYW52YXMyZCwgdHJ1ZSkgaXMgdW5kZWZpbmVkLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL3RleEltYWdlVGVzdC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvdGV4SW1h
Z2VUZXN0LmpzCShyZXZpc2lvbiA2MDk2NSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3NjcmlwdC10ZXN0cy90ZXhJbWFnZVRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcg
KzE5LDYgQEAgc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQudGV4SW1hZ2UyRChjbwogCiBzaG91
bGRUaHJvdygiY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCkiKTsKIHNo
b3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LnRleFN1YkltYWdlMkQoY29udGV4dC5URVhUVVJFXzJE
LCAwLCAxMCwgMjAsIDAsIDAsIGNvbnRleHQuUkdCQSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCBu
dWxsKSIpOwotLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgdGVzdCBmYWlscyBvbiBKU0M6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODAyNAogc2hvdWxkVGhyb3coImNv
bnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgMCwgMCwg
Y29udGV4dC5SR0JBLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CiBzaG91bGRUaHJvdygi
Y29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMTAsIDIwLCAwLCBj
b250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC50
ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMTAsIDIwLCBpbWFnZURhdGEsIGZh
bHNlKSIpOwo=
</data>
<flag name="review"
          id="43507"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="43508"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58427</attachid>
            <date>2010-06-10 17:52:41 -0700</date>
            <delta_ts>2010-06-10 21:29:49 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>custom-bindings.patch</filename>
            <type>text/plain</type>
            <size>23991</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYtMTAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
bGV0ZSBjdXN0b20gSlNDIGJpbmRpbmdzIGZvciBidWZmZXJEYXRhLCB0ZXhJbWFnZTJEIGFuZCB0
ZXhTdWJJbWFnZTJECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDQ0MworCisgICAgICAgIERlbGV0ZWQgY3VzdG9tIEpTQyBiaW5kaW5ncyBmb3IgYnVm
ZmVyRGF0YSwgdGV4SW1hZ2UyRCBhbmQKKyAgICAgICAgdGV4U3ViSW1hZ2UyRCBhbmQgZml4ZWQg
bWlub3IgYXNzb2NpYXRlZCBpc3N1ZXMgaW4gY29kZSBnZW5lcmF0b3IKKyAgICAgICAgYW5kIElE
TC4gVXBkYXRlZCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0ZWQudHh0LAor
ICAgICAgICB3aGljaCBub3cgcnVucyBhcyBpbnRlbmRlZC4gUmFuIGFsbCBsYXlvdXQgdGVzdHMs
IGluY2x1ZGluZyBXZWJHTAorICAgICAgICB0ZXN0cywgaW4gU2FmYXJpLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAg
LSBEZWxldGVkIGN1c3RvbSBiaW5kaW5ncy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgIC0gTWFkZSBvdmVybG9hZCBoZWxwZXIgZnVuY3Rp
b25zIHN0YXRpYyB0byBmaXggY29tcGlsZXIgd2FybmluZ3MuCisgICAgICAgICAtIEFkZGVkIG5l
ZWRlZCBpc09iamVjdCBjaGVjayBmb3Igb3ZlcmxvYWRzIGJldHdlZW4gb2JqZWN0IGFuZCBub24t
b2JqZWN0IGFyZ3VtZW50cy4KKyAgICAgICAgIC0gQWRkZWQgSlNWYWx1ZTo6ZW5jb2RlIHRvIGV4
Y2VwdGlvbiByZXR1cm4gcGF0aCwgbmVlZGVkIG9uIExlb3BhcmQgaW4gcGFydGljdWxhci4KKyAg
ICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGw6Cisg
ICAgICAgICAtIEFkZGVkIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyIGV4dGVuZGVkIGF0dHJpYnV0
ZS4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAg
ICAgICAgLSBEZWxldGVkICNpZmRlZnMgZm9yIGN1c3RvbSBKU0MgYmluZGluZ3MuCisKIDIwMTAt
MDYtMTAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA2MDk4NCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw0NSArNjcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZl
ckRhdGEoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcihleGVjKTsKLQotICAg
IHVuc2lnbmVkIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7Ci0gICAg
dW5zaWduZWQgdXNhZ2UgPSBleGVjLT5hcmd1bWVudCgyKS50b0ludDMyKGV4ZWMpOwotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgLy8gSWYgYXJndW1lbnQgMSBpcyBhIG51bWJlciwg
d2UgYXJlIGluaXRpYWxpemluZyB0aGlzIGJ1ZmZlciB0byB0aGF0IHNpemUKLSAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGNvdW50
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKS0+YnVmZmVyRGF0YSh0YXJnZXQsIGNvdW50
LCB1c2FnZSwgZWMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJy
YXkgPSB0b0FycmF5QnVmZmVyVmlldyhleGVjLT5hcmd1bWVudCgxKSk7Ci0gICAgICAgIHN0YXRp
Y19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSktPmJ1ZmZlckRhdGEodGFyZ2V0
LCBhcnJheSwgdXNhZ2UsIGVjKTsKLSAgICB9Ci0KLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0dXJuIHRocm93U3lu
dGF4RXJyb3IoZXhlYyk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgw
KS50b0ludDMyKGV4ZWMpOwotICAgIHVuc2lnbmVkIG9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvSW50MzIoZXhlYyk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgCi0gICAgQXJy
YXlCdWZmZXJWaWV3KiBhcnJheSA9IHRvQXJyYXlCdWZmZXJWaWV3KGV4ZWMtPmFyZ3VtZW50KDIp
KTsKLSAgICAKLSAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkp
LT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBhcnJheSwgZWMpOwotCi0gICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQogc3Rh
dGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKIHsKICAgICBzd2l0Y2ggKGluZm8u
Z2V0VHlwZSgpKSB7CkBAIC0zMTEsMjA3ICsyNzIsNiBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRWZXJ0CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBl
eGVjLCBrVmVydGV4QXR0cmliKTsKIH0KIAotLy8gICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVt
IHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgaW4gR0xz
aXplaSB3aWR0aCwgaW4gR0xzaXplaSBoZWlnaHQsIGluIEdMaW50IGJvcmRlciwgaW4gR0xlbnVt
IGZvcm1hdCwgaW4gR0xlbnVtIHR5cGUsIGluIEFycmF5QnVmZmVyVmlldyBwaXhlbHMpOwotLy8g
ICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIElt
YWdlRGF0YSBwaXhlbHMsIFtPcHRpb25hbF0gR0xib29sZWFuIGZsaXBZLCBbT3B0aW9uYWxdIGlu
IHByZW11bHRpcGx5QWxwaGEpOwotLy8gICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVtIHRhcmdl
dCwgaW4gR0xpbnQgbGV2ZWwsIGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UsIFtPcHRpb25hbF0g
aW4gR0xib29sZWFuIGZsaXBZLCBbT3B0aW9uYWxdIGluIHByZW11bHRpcGx5QWxwaGEpOwotLy8g
ICB2b2lkIHRleEltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEhU
TUxDYW52YXNFbGVtZW50IGNhbnZhcywgW09wdGlvbmFsXSBpbiBHTGJvb2xlYW4gZmxpcFksIFtP
cHRpb25hbF0gaW4gcHJlbXVsdGlwbHlBbHBoYSk7Ci0vLyAgIHZvaWQgdGV4SW1hZ2UyRChpbiBH
TGVudW0gdGFyZ2V0LCBpbiBHTGludCBsZXZlbCwgaW4gSFRNTFZpZGVvRWxlbWVudCB2aWRlbywg
W09wdGlvbmFsXSBpbiBHTGJvb2xlYW4gZmxpcFksIFtPcHRpb25hbF0gaW4gcHJlbXVsdGlwbHlB
bHBoYSk7Ci1KU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEV4ZWNT
dGF0ZSogZXhlYykKLXsgCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMgfHwgZXhl
Yy0+YXJndW1lbnRDb3VudCgpID4gOSkKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
ZXhlYyk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAKLSAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQq
PihpbXBsKCkpOyAgICAKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKS50
b0ludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAgIHVuc2lnbmVkIGxldmVsID0gZXhlYy0+
YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
ICAgIAotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTT2JqZWN0KiBvID0g
MDsKLSAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9IDUpIHsKLSAgICAgICAg
Ly8gVGhpcyBpcyBvbmUgb2YgdGhlIGxhc3QgNCBmb3Jtcy4gUGFyYW0gMiBjYW4gYmUgSW1hZ2VE
YXRhIG9yIDxpbWc+LCA8Y2FudmFzPiBvciA8dmlkZW8+IGVsZW1lbnQuCi0gICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKTsKLSAgICAKLSAgICAgICAgaWYgKCF2YWx1ZS5p
c09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAg
ICAgICAKLSAgICAgICAgbyA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAgICAgCi0gICAgICAgIGJv
b2wgZmxpcFkgPSBleGVjLT5hcmd1bWVudCgzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvQm9vbGVhbihleGVjKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNJbWFnZURhdGE6OnNfaW5mbykp
IHsKLSAgICAgICAgICAgIEltYWdlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEltYWdlRGF0YSo+
KHN0YXRpY19jYXN0PEpTSW1hZ2VEYXRhKj4obyktPmltcGwoKSk7Ci0gICAgICAgICAgICBjb250
ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGRhdGEsIGZsaXBZLCBwcmVtdWx0aXBseUFs
cGhhLCBlYyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTEltYWdlRWxl
bWVudDo6c19pbmZvKSkgewotICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVs
ZW1lbnQqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgZWxlbWVudCwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGVjKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChvLT5pbmhlcml0cygmSlNIVE1MQ2FudmFzRWxlbWVudDo6c19pbmZvKSkg
ewotICAgICAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MQ2FudmFzRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTENhbnZhc0VsZW1lbnQqPihvKS0+
aW1wbCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
ZWxlbWVudCwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGVjKTsKLSNpZiBFTkFCTEUoVklERU8p
Ci0gICAgICAgIH0gZWxzZSBpZiAoby0+aW5oZXJpdHMoJkpTSFRNTFZpZGVvRWxlbWVudDo6c19p
bmZvKSkgewotICAgICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxWaWRlb0VsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxWaWRlb0VsZW1lbnQqPihv
KS0+aW1wbCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgZWxlbWVudCwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGVjKTsKLSNlbmRpZgotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSA5KQotICAgICAgICAgICAg
cmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7Ci0KLSAgICAgICAgLy8gVGhpcyBtdXN0IGJl
IHRoZSBBcnJheUJ1ZmZlclZpZXcgY2FzZQotICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbGZvcm1h
dCA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQot
ICAgICAgICB1bnNpZ25lZCB3aWR0aCA9IGV4ZWMtPmFyZ3VtZW50KDMpLnRvSW50MzIoZXhlYyk7
Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLQotICAgICAgICB1bnNpZ25lZCBoZWlnaHQgPSBleGVjLT5hcmd1
bWVudCg0KS50b0ludDMyKGV4ZWMpOwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
ICAgIAotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICAgICAgdW5zaWdu
ZWQgYm9yZGVyID0gZXhlYy0+YXJndW1lbnQoNSkudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotCi0gICAgICAgIHVuc2lnbmVkIGZvcm1hdCA9IGV4ZWMtPmFyZ3VtZW50KDYpLnRvSW50
MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgICAgICB1bnNpZ25lZCB0eXBlID0gZXhl
Yy0+YXJndW1lbnQoNykudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSAgICAKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCg4KTsKLSAgICAgICAgICAgIAotICAgICAg
ICAvLyBGb3IgdGhpcyBjYXNlIHBhc3NpbmcgMCAoZm9yIGEgbnVsbCBhcnJheSkgaXMgYWxsb3dl
ZAotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICBjb250ZXh0LT50ZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwgMCwgZWMpOwotICAgICAgICBlbHNlIGlmICh2YWx1ZS5pc09iamVj
dCgpKSB7Ci0gICAgICAgICAgICBvID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKSB7
Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gY2hlY2sgdG8gbWFrZSBzdXJlIEFy
cmF5QnVmZmVyVmlldyBpcyBhIEludDhBcnJheSBvciBJbnQxNkFycmF5LAotICAgICAgICAgICAg
ICAgIC8vIGRlcGVuZGluZyBvbiB0aGUgcGFzc2VkIHR5cGUgcGFyYW1ldGVyLgotICAgICAgICAg
ICAgICAgIEFycmF5QnVmZmVyVmlldyogb2JqID0gc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXJWaWV3
Kj4oc3RhdGljX2Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihvKS0+aW1wbCgpKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgb2JqLCBlYyk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7
Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKLSAgICB9Ci0gICAgCi0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsgICAgCi19Ci0KLS8vICAgdm9pZCB0ZXhTdWJJbWFnZTJEKGluIEdM
ZW51bSB0YXJnZXQsIGluIEdMaW50IGxldmVsLCBpbiBHTGludCB4b2Zmc2V0LCBpbiBHTGludCB5
b2Zmc2V0LCBpbiBHTHNpemVpIHdpZHRoLCBpbiBHTHNpemVpIGhlaWdodCwgaW4gR0xlbnVtIGZv
cm1hdCwgaW4gR0xlbnVtIHR5cGUsIGluIEFycmF5QnVmZmVyVmlldyBwaXhlbHMpOwotLy8gICB2
b2lkIHRleFN1YkltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWwsIGluIEdM
aW50IHhvZmZzZXQsIGluIEdMaW50IHlvZmZzZXQsIGluIEltYWdlRGF0YSBwaXhlbHMsIFtPcHRp
b25hbF0gR0xib29sZWFuIGZsaXBZLCBbT3B0aW9uYWxdIGluIHByZW11bHRpcGx5QWxwaGEpOwot
Ly8gICB2b2lkIHRleFN1YkltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4gR0xpbnQgbGV2ZWws
IGluIEdMaW50IHhvZmZzZXQsIGluIEdMaW50IHlvZmZzZXQsIGluIEhUTUxJbWFnZUVsZW1lbnQg
aW1hZ2UsIFtPcHRpb25hbF0gR0xib29sZWFuIGZsaXBZLCBbT3B0aW9uYWxdIGluIHByZW11bHRp
cGx5QWxwaGEpOwotLy8gICB2b2lkIHRleFN1YkltYWdlMkQoaW4gR0xlbnVtIHRhcmdldCwgaW4g
R0xpbnQgbGV2ZWwsIGluIEdMaW50IHhvZmZzZXQsIGluIEdMaW50IHlvZmZzZXQsIGluIEhUTUxD
YW52YXNFbGVtZW50IGNhbnZhcywgW09wdGlvbmFsXSBHTGJvb2xlYW4gZmxpcFksIFtPcHRpb25h
bF0gaW4gcHJlbXVsdGlwbHlBbHBoYSk7Ci0vLyAgIHZvaWQgdGV4U3ViSW1hZ2UyRChpbiBHTGVu
dW0gdGFyZ2V0LCBpbiBHTGludCBsZXZlbCwgaW4gR0xpbnQgeG9mZnNldCwgaW4gR0xpbnQgeW9m
ZnNldCwgaW4gSFRNTFZpZGVvRWxlbWVudCB2aWRlbywgW09wdGlvbmFsXSBHTGJvb2xlYW4gZmxp
cFksIFtPcHRpb25hbF0gaW4gcHJlbXVsdGlwbHlBbHBoYSk7Ci1KU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEV4ZWNTdGF0ZSogZXhlYykKLXsgCi0gICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDUgfHwgZXhlYy0+YXJndW1lbnRDb3VudCgpID4gOSkK
LSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoZXhlYyk7Ci0KLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLQotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRp
Y19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7ICAgIAotICAgIHVuc2lnbmVk
IHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAg
ICB1bnNpZ25lZCBsZXZlbCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7Ci0gICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgCi0gICAgdW5zaWduZWQgeG9mZiA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIo
ZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgeW9mZiA9IGV4ZWMtPmFyZ3VtZW50
KDMpLnRvSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgCi0gICAgSlNPYmplY3QqIG8gPSAwOwot
ICAgICAgICAKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9IDcpIHsKLSAgICAgICAg
Ly8gVGhpcyBpcyBvbmUgb2YgdGhlIGxhc3QgNCBmb3Jtcy4gUGFyYW0gNCBjYW4gYmUgPGltZz4s
IDxjYW52YXM+IG9yIDx2aWRlbz4gZWxlbWVudCwgb2YgdGhlIGZvcm1hdCBwYXJhbS4KLSAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDQpOwotCi0gICAgICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKGV4ZWMp
OwotCi0gICAgICAgIG8gPSBhc09iamVjdCh2YWx1ZSk7Ci0KLSAgICAgICAgYm9vbCBmbGlwWSA9
IGV4ZWMtPmFyZ3VtZW50KDUpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgYm9vbCBwcmVtdWx0
aXBseUFscGhhID0gZXhlYy0+YXJndW1lbnQoNikudG9Cb29sZWFuKGV4ZWMpOwotICAgICAgICAK
LSAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0ltYWdlRGF0YTo6c19pbmZvKSkgewotICAgICAg
ICAgICAgSW1hZ2VEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8SW1hZ2VEYXRhKj4oc3RhdGljX2Nh
c3Q8SlNJbWFnZURhdGEqPihvKS0+aW1wbCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgZGF0YSwgZmxpcFksIHByZW11bHRp
cGx5QWxwaGEsIGVjKTsKLSAgICAgICAgfSBlbHNlIGlmIChvLT5pbmhlcml0cygmSlNIVE1MSW1h
Z2VFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KHN0YXRpY19jYXN0PEpTSFRNTElt
YWdlRWxlbWVudCo+KG8pLT5pbXBsKCkpOwotICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCBlbGVtZW50LCBmbGlwWSwgcHJlbXVsdGlw
bHlBbHBoYSwgZWMpOwotICAgICAgICB9IGVsc2UgaWYgKG8tPmluaGVyaXRzKCZKU0hUTUxDYW52
YXNFbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1M
Q2FudmFzRWxlbWVudCo+KG8pLT5pbXBsKCkpOwotICAgICAgICAgICAgY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCBlbGVtZW50LCBmbGlwWSwgcHJlbXVs
dGlwbHlBbHBoYSwgZWMpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgfSBlbHNlIGlmIChv
LT5pbmhlcml0cygmSlNIVE1MVmlkZW9FbGVtZW50OjpzX2luZm8pKSB7Ci0gICAgICAgICAgICBI
VE1MVmlkZW9FbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+
KHN0YXRpY19jYXN0PEpTSFRNTFZpZGVvRWxlbWVudCo+KG8pLT5pbXBsKCkpOwotICAgICAgICAg
ICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCBlbGVt
ZW50LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwotI2VuZGlmCi0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBUaGlzIG11c3QgYmUgdGhlIEFycmF5QnVmZmVyVmlldyBmb3JtCi0gICAgICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgIT0gOSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1N5
bnRheEVycm9yKGV4ZWMpOwotCi0gICAgICAgIHVuc2lnbmVkIHdpZHRoID0gZXhlYy0+YXJndW1l
bnQoNCkudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAg
ICAKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAKLSAgICAgICAg
dW5zaWduZWQgaGVpZ2h0ID0gZXhlYy0+YXJndW1lbnQoNSkudG9JbnQzMihleGVjKTsKLSAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSAgICAKLSAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgZm9ybWF0ID0gZXhlYy0+YXJn
dW1lbnQoNikudG9JbnQzMihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSAgICAKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAKLSAgICAg
ICAgdW5zaWduZWQgdHlwZSA9IGV4ZWMtPmFyZ3VtZW50KDcpLnRvSW50MzIoZXhlYyk7Ci0gICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCi0gICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1
bWVudCg4KTsKLSAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICAgICAgY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIDAsIGVjKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBv
ID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICAKLSAgICAgICAgICAgIGlmIChvLT5pbmhlcml0
cygmSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5mbykpIHsKLSAgICAgICAgICAgICAgICBBcnJheUJ1
ZmZlclZpZXcqIG9iaiA9IHN0YXRpY19jYXN0PEFycmF5QnVmZmVyVmlldyo+KHN0YXRpY19jYXN0
PEpTQXJyYXlCdWZmZXJWaWV3Kj4obyktPmltcGwoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIG9iaiwgZWMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgICAgICB9Ci0gICAgfQotICAg
IAotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGJv
b2wgdG9WZWN0b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQogewpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA2MDk4NCkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAg
LTExMTUsNyArMTExNSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24K
ICAgICAgICAgIyB0aGVzZSBhcmUgYWNjZXB0YWJsZSB2YWx1ZXMgZm9yIGEgRE9NU3RyaW5nIGFy
Z3VtZW50IChhbnkgT2JqZWN0IGNhbgogICAgICAgICAjIGJlIGNvbnZlcnRlZCB0byBhIHN0cmlu
ZyB2aWEgLnRvU3RyaW5nKS4KICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVl
fS5pc051bGwoKSB8fCAke3ZhbHVlfS5pc1VuZGVmaW5lZCgpIHx8ICR7dmFsdWV9LmlzU3RyaW5n
KCkgfHwgJHt2YWx1ZX0uaXNPYmplY3QoKSkiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdU
eXBlKCR0eXBlKTsKLSAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5pc051
bGwoKSB8fCBhc09iamVjdCgke3ZhbHVlfSktPmluaGVyaXRzKCZKUyR7dHlwZX06OnNfaW5mbykp
IikgdW5sZXNzIElzTmF0aXZlVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGFuZEV4cHJlc3Np
b24sICIoJHt2YWx1ZX0uaXNOdWxsKCkgfHwgJHt2YWx1ZX0uaXNPYmplY3QoKSAmJiBhc09iamVj
dCgke3ZhbHVlfSktPmluaGVyaXRzKCZKUyR7dHlwZX06OnNfaW5mbykpIikgdW5sZXNzIElzTmF0
aXZlVHlwZSgkdHlwZSk7CiAKICAgICAgICAgJHBhcmFtZXRlckluZGV4Kys7CiAgICAgfQpAQCAt
MTE2NCw3ICsxMTY0LDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gJHtmdW5jdGlvbk5hbWV9JG92ZXJsb2FkLT57b3ZlcmxvYWRJbmRleH0oZXhlYyk7
XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjKSk7CiB9CiAKIEVORApAQCAtMTc4Niw2ICsxNzg2LDkgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPntvdmVybG9hZHN9
ICYmIEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxKSB7CiAgICAgICAgICAgICAgICAgIyBB
cHBlbmQgYSBudW1iZXIgdG8gYW4gb3ZlcmxvYWRlZCBtZXRob2QncyBuYW1lIHRvIG1ha2UgaXQg
dW5pcXVlOgogICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb25OYW1lIC4g
JGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH07CisgICAgICAgICAgICAgICAgIyBNYWtlIHRoaXMg
ZnVuY3Rpb24gc3RhdGljIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLCBzaW5jZSB3ZQorICAg
ICAgICAgICAgICAgICMgZG9uJ3QgZ2VuZXJhdGUgYSBwcm90b3R5cGUgZm9yIGl0IGluIHRoZSBo
ZWFkZXIuCisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxl
bWVudGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50YXRpb25GdW5jdGlvbiJ9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmlkbAkocmV2aXNpb24gNjA5ODQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw4IEBACiBtb2R1bGUgaHRtbCB7CiAK
ICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24KKyAgICAgICAgQ3Vz
dG9tTWFya0Z1bmN0aW9uLAorICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlcgogICAgIF0g
SFRNTENhbnZhc0VsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAKICAgICAgICAgYXR0cmlidXRlIGxv
bmcgd2lkdGg7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2MDk4
NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjAsNyArMjAsOSBAQAogCiBtb2R1bGUgaHRtbCB7CiAKLSAgICBpbnRlcmZhY2UgSFRNTElt
YWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5l
cmF0ZU5hdGl2ZUNvbnZlcnRlcgorICAgIF0gSFRNTEltYWdlRWxlbWVudCA6IEhUTUxFbGVtZW50
IHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywg
UmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29u
dmVydE51bGxUb051bGxTdHJpbmcsIFJlZmxlY3RdIERPTVN0cmluZyBhbGlnbjsKICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZywgUmVmbGVjdF0gRE9N
U3RyaW5nIGFsdDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwJKHJldmlzaW9uIDYw
OTg0KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw3ICsyNCwxMCBAQAogICovCiAKIG1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MVmlkZW9FbGVtZW50IDogSFRNTE1lZGlhRWxlbWVudCB7
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU8sCisgICAgICAgIEdl
bmVyYXRlTmF0aXZlQ29udmVydGVyCisgICAgXSBIVE1MVmlkZW9FbGVtZW50IDogSFRNTE1lZGlh
RWxlbWVudCB7CiAgICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgICAg
ICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIHZpZGVvV2lkdGg7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA2MDk4NCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDc0LDE1ICs0NzQsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICBi
bGVuZEZ1bmMoaW4gdW5zaWduZWQgbG9uZyBzZmFjdG9yLCBpbiB1bnNpZ25lZCBsb25nIGRmYWN0
b3IpOwogICAgICAgICB2b2lkICAgICAgICAgYmxlbmRGdW5jU2VwYXJhdGUoaW4gdW5zaWduZWQg
bG9uZyBzcmNSR0IsIGluIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCBpbiB1bnNpZ25lZCBsb25nIHNy
Y0FscGhhLCBpbiB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKIAotI2lmIGRlZmluZWQoVjhfQklO
RElORykgJiYgVjhfQklORElORwogICAgICAgICB2b2lkICAgICAgICAgYnVmZmVyRGF0YShpbiB1
bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEsIGluIHVuc2lnbmVk
IGxvbmcgdXNhZ2UpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAg
IGJ1ZmZlckRhdGEoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgc2l6ZSwgaW4gdW5z
aWduZWQgbG9uZyB1c2FnZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAg
ICAgICAgYnVmZmVyU3ViRGF0YShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBvZmZz
ZXQsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0jZWxz
ZQotICAgICAgICAvLyBGSVhNRTogVW5mb3JrIG9uY2UgSlNDIHN1cHBvcnRzIG92ZXJsb2FkIGdl
bmVyYXRpb24gdG9vLgotICAgICAgICBbQ3VzdG9tXSB2b2lkIGJ1ZmZlckRhdGEoKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBidWZmZXJTdWJEYXRhKCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQpOwogICAgICAgICB2b2lk
ICAgICAgICAgY2xlYXIoaW4gdW5zaWduZWQgbG9uZyBtYXNrKTsKQEAgLTYxMyw3ICs2MDcsNiBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICB0ZXhQYXJhbWV0ZXJpKGluIHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbiBsb25nIHBhcmFt
KTsKIAogICAgICAgICAvLyBTdXBwb3J0ZWQgZm9ybXM6Ci0jaWYgZGVmaW5lZChWOF9CSU5ESU5H
KSAmJiBWOF9CSU5ESU5HCiAgICAgICAgIHZvaWQgICAgICAgICB0ZXhJbWFnZTJEKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiB1bnNpZ25lZCBsb25nIGludGVybmFs
Zm9ybWF0LCBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGxvbmcgYm9yZGVyLCBpbiB1bnNpZ25lZCBsb25nIGZvcm1hdCwg
aW4gdW5zaWduZWQgbG9uZyB0eXBlLCBpbiBBcnJheUJ1ZmZlclZpZXcgcGl4ZWxzKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgICAgICAgICB0ZXhJbWFnZTJEKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBpbiBsb25nIGxldmVsLCBpbiBJbWFnZURhdGEgcGl4ZWxzLApAQCAt
NjM2LDExICs2MjksNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIEhUTUxDYW52YXNFbGVtZW50IGNhbnZhcywgaW4gW09wdGlvbmFsXSBib29s
ZWFuIGZsaXBZLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gcHJlbXVsdGlwbHlBbHBoYSkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAgICAgdGV4U3ViSW1hZ2UyRChpbiB1
bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBpbiBs
b25nIHlvZmZzZXQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBIVE1M
VmlkZW9FbGVtZW50IHZpZGVvLCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gZmxpcFksIGluIFtPcHRp
b25hbF0gYm9vbGVhbiBwcmVtdWx0aXBseUFscGhhKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0j
ZWxzZQotICAgICAgICAvLyBGSVhNRTogVW5mb3JrIG9uY2UgSlNDIHN1cHBvcnRzIG92ZXJsb2Fk
IGdlbmVyYXRpb24gdG9vLgotICAgICAgICBbQ3VzdG9tXSB2b2lkIHRleEltYWdlMkQoKTsKLSAg
ICAgICAgW0N1c3RvbV0gdm9pZCB0ZXhTdWJJbWFnZTJEKCk7Ci0jZW5kaWYKKwogICAgICAgICB2
b2lkIHVuaWZvcm0xZihpbiBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgaW4gZmxvYXQg
eCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgdW5pZm9ybTFm
dihpbiBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgaW4gRmxvYXQzMkFycmF5IHYpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHVuaWZvcm0xaShpbiBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwgaW4gbG9uZyB4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDYwOTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMTAgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERlbGV0ZSBjdXN0b20gSlNDIGJpbmRpbmdzIGZvciBidWZmZXJEYXRhLCB0ZXhJbWFn
ZTJEIGFuZCB0ZXhTdWJJbWFnZTJECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDQ0MworCisgICAgICAgIERlbGV0ZWQgY3VzdG9tIEpTQyBiaW5kaW5n
cyBmb3IgYnVmZmVyRGF0YSwgdGV4SW1hZ2UyRCBhbmQKKyAgICAgICAgdGV4U3ViSW1hZ2UyRCBh
bmQgZml4ZWQgbWlub3IgYXNzb2NpYXRlZCBpc3N1ZXMgaW4gY29kZSBnZW5lcmF0b3IKKyAgICAg
ICAgYW5kIElETC4gVXBkYXRlZCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0
ZWQudHh0LAorICAgICAgICB3aGljaCBub3cgcnVucyBhcyBpbnRlbmRlZC4gUmFuIGFsbCBsYXlv
dXQgdGVzdHMsIGluY2x1ZGluZyBXZWJHTAorICAgICAgICB0ZXN0cywgaW4gU2FmYXJpLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL3RleEltYWdlVGVzdC5qczoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0ZWQudHh0Ogor
CiAyMDEwLTA2LTEwICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC90ZXhJbWFnZVRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlVGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYw
OTg0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2VUZXN0LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxOCArMiwxOCBAQCBUZXN0IG9mIHRleEltYWdl
MmQgYW5kIHRleFN1YkltYWdlMmQKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNT
IGNvbnRleHQudGV4SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQpIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogU3ludGF4IGVycm9yLgorUEFTUyBjb250ZXh0LnRleEltYWdlMkQoY29udGV4
dC5URVhUVVJFXzJEKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFT
UyBjb250ZXh0LnRleEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCBjb250ZXh0LlJHQkEs
IDY0LCA2NCwgMCwgY29udGV4dC5SR0JBLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIG51bGwpIGlz
IHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC50ZXhJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwg
MCwgY29udGV4dC5SR0JBLCAwLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwg
MCkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBTeW50YXggZXJyb3IuCitQQVNTIGNvbnRl
eHQudGV4SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgMCwgY29u
dGV4dC5SR0JBLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIGNvbnRleHQudGV4SW1hZ2UyRChjb250ZXh0LlRFWFRV
UkVfMkQsIDAsIGNvbnRleHQuUkdCQSwgMiwgMiwgMCwgY29udGV4dC5SR0JBLCBjb250ZXh0LlVO
U0lHTkVEX0JZVEUsIGFycmF5KSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQudGV4SW1hZ2Uy
RChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIGltYWdlRGF0YSwgdHJ1ZSkgaXMgdW5kZWZpbmVkLgog
UEFTUyBjb250ZXh0LnRleEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCBpbWFnZSkgaXMg
dW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LnRleEltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAw
LCBjYW52YXMyZCwgZmFsc2UpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC50ZXhJbWFnZTJE
KGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgdmlkZW8sIHRydWUsIGZhbHNlKSBpcyB1bmRlZmluZWQu
Ci1QQVNTIGNvbnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQpIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogU3ludGF4IGVycm9yLgorUEFTUyBjb250ZXh0LnRleFN1Yklt
YWdlMkQoY29udGV4dC5URVhUVVJFXzJEKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgogUEFTUyBjb250ZXh0LnRleFN1YkltYWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAw
LCAxMCwgMjAsIDAsIDAsIGNvbnRleHQuUkdCQSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCBudWxs
KSBpcyB1bmRlZmluZWQuCi1GQUlMIGNvbnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRV
UkVfMkQsIDAsIDEwLCAyMCwgMCwgMCwgY29udGV4dC5SR0JBLCBjb250ZXh0LlVOU0lHTkVEX0JZ
VEUsIDApIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIFdhcyB1bmRlZmluZWQuCi1QQVNTIGNv
bnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgMCwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAwKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFN5bnRh
eCBlcnJvci4KK1BBU1MgY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwg
MCwgMTAsIDIwLCAwLCAwLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgY29udGV4dC50ZXhT
dWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMTAsIDIwLCAwLCBjb250ZXh0LlVOU0lH
TkVEX0JZVEUsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNT
IGNvbnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgaW1h
Z2VEYXRhLCBmYWxzZSkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LnRleFN1YkltYWdlMkQo
Y29udGV4dC5URVhUVVJFXzJELCAwLCAxMCwgMjAsIGltYWdlKSBpcyB1bmRlZmluZWQuCiBQQVNT
IGNvbnRleHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgY2Fu
dmFzMmQsIHRydWUpIGlzIHVuZGVmaW5lZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3NjcmlwdC10ZXN0cy90ZXhJbWFnZVRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL3RleEltYWdlVGVzdC5qcwkocmV2
aXNpb24gNjA5ODQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVz
dHMvdGV4SW1hZ2VUZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw2IEBAIHNob3Vs
ZEJlVW5kZWZpbmVkKCJjb250ZXh0LnRleEltYWdlMkQoY28KIAogc2hvdWxkVGhyb3coImNvbnRl
eHQudGV4U3ViSW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQpIik7CiBzaG91bGRCZVVuZGVmaW5l
ZCgiY29udGV4dC50ZXhTdWJJbWFnZTJEKGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMTAsIDIwLCAw
LCAwLCBjb250ZXh0LlJHQkEsIGNvbnRleHQuVU5TSUdORURfQllURSwgbnVsbCkiKTsKLS8vIEZJ
WE1FOiBUaGUgZm9sbG93aW5nIHRlc3QgZmFpbHMgb24gSlNDOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwMjQKIHNob3VsZFRocm93KCJjb250ZXh0LnRleFN1Yklt
YWdlMkQoY29udGV4dC5URVhUVVJFXzJELCAwLCAxMCwgMjAsIDAsIDAsIGNvbnRleHQuUkdCQSwg
Y29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHQudGV4U3Vi
SW1hZ2UyRChjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgMCwgY29udGV4dC5VTlNJR05F
RF9CWVRFLCAwKSIpOwogc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQudGV4U3ViSW1hZ2UyRChj
b250ZXh0LlRFWFRVUkVfMkQsIDAsIDEwLCAyMCwgaW1hZ2VEYXRhLCBmYWxzZSkiKTsK
</data>
<flag name="review"
          id="43850"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="43851"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>