<?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>38235</bug_id>
          
          <creation_ts>2010-04-27 17:27:22 -0700</creation_ts>
          <short_desc>Remove the unnecessary texImage2D function with Image as input in GraphicsContext3D</short_desc>
          <delta_ts>2010-04-29 00:42:27 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>218074</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-27 17:27:22 -0700</bug_when>
    <thetext>extractImageData should happen in WebGLRenderingContext so we can track format/internalformat/etc. for conformance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218143</commentid>
    <comment_count>1</comment_count>
      <attachid>54503</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-27 19:10:31 -0700</bug_when>
    <thetext>Created attachment 54503
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218153</commentid>
    <comment_count>2</comment_count>
      <attachid>54503</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-27 19:21:49 -0700</bug_when>
    <thetext>Comment on attachment 54503
patch

Thanks for fixing this. Overall it looks good.

Could you add a helper texImage2D/texSubImage2D taking an Image* and refactor the versions taking HTMLCanvasElement, HTMLImageElement and HTMLVideoElement in terms of it to share more code?

Also, could you name the new routines tex{Sub}Image2DBase or tex{Sub}Image2DImpl? Changing the beginning of the method name is confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218491</commentid>
    <comment_count>3</comment_count>
      <attachid>54588</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-28 11:03:09 -0700</bug_when>
    <thetext>Created attachment 54588
revised patch : responding to Ken Russell&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218502</commentid>
    <comment_count>4</comment_count>
      <attachid>54588</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-28 11:13:30 -0700</bug_when>
    <thetext>Comment on attachment 54588
revised patch : responding to Ken Russell&apos;s review

Please just use overloaded methods for texImage2DImage and texSubImage2DImage -- i.e., drop the &quot;Image&quot; suffix. The &quot;Base&quot; version is fine. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218511</commentid>
    <comment_count>5</comment_count>
      <attachid>54593</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-28 11:27:03 -0700</bug_when>
    <thetext>Created attachment 54593
revised patch: remove the -image postfix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218518</commentid>
    <comment_count>6</comment_count>
      <attachid>54593</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-28 11:33:32 -0700</bug_when>
    <thetext>Comment on attachment 54593
revised patch: remove the -image postfix

Thanks, this is a nice cleanup. Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218576</commentid>
    <comment_count>7</comment_count>
      <attachid>54593</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-28 12:56:29 -0700</bug_when>
    <thetext>Comment on attachment 54593
revised patch: remove the -image postfix

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218875</commentid>
    <comment_count>8</comment_count>
      <attachid>54593</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-29 00:42:21 -0700</bug_when>
    <thetext>Comment on attachment 54593
revised patch: remove the -image postfix

Clearing flags on attachment: 54593

Committed r58481: &lt;http://trac.webkit.org/changeset/58481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218876</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-29 00:42:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54503</attachid>
            <date>2010-04-27 19:10:31 -0700</date>
            <delta_ts>2010-04-28 11:03:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>tex.patch</filename>
            <type>text/plain</type>
            <size>20042</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDQtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dGhlIHVubmVjZXNzYXJ5IHRleEltYWdlMkQgZnVuY3Rpb24gd2l0aCBJbWFnZSBhcyBpbnB1dCBp
biBHcmFwaGljc0NvbnRleHQzRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzgyMzUKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJh
c2VUZXhJbWFnZTJEKTogQWRkIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGNvbW1vbiBlbnRyeSBwb2lu
dCBmb3IgdGV4SW1hZ2UyRC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRCk6IEFkZCBleHRyYWN0SW1hZ2VEYXRhLgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiYXNlVGV4U3ViSW1hZ2UyRCk6IEFkZCB0aGlzIGZ1bmN0
aW9uIGFzIHRoZSBjb21tb24gZW50cnkgcG9pbnQgZm9yIHRleFN1YkltYWdlMkQKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6IEFkZCBleHRy
YWN0SW1hZ2VEYXRhLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oOiBBZGQgYmFzZVRleCppbWFnZSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOiBSZW1vdmUgdGV4KmltYWdlIGRl
Y2xhcmF0aW9uIHdpdGggSW1hZ2UgaW5wdXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDogUmVtb3ZlIHRleCppbWFnZSBpbXBsZW1lbnRh
dGlvbiB3aXRoIEltYWdlIGlucHV0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRl
eFN1YkltYWdlMkQpOgorCiAyMDEwLTA0LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1ODM1
OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc2NiwxOCArMTc2NiwyNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c3RlbmNpbE9wU2VwCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodW5zaWduZWQgdGFy
Z2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIFdlYkdMQXJyYXkqIHBp
eGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmFz
ZVRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5z
aWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBG
SVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAotICAgIC8vIEZJWE1F
OiBOZWVkIHRvIG1ha2Ugc3VyZSBwYXNzZWQgYnVmZmVyIGhhcyBlbm91Z2ggYnl0ZXMgdG8gZGVm
aW5lIHRoZSB0ZXh0dXJlCiAgICAgZWMgPSAwOwogICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyA/IHBpeGVscy0+YmFz
ZUFkZHJlc3MoKSA6IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJn
ZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQsIHVuc2lnbmVkIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgV2ViR0xBcnJheSogcGl4ZWxzLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgcGFz
c2VkIGJ1ZmZlciBoYXMgZW5vdWdoIGJ5dGVzIHRvIGRlZmluZSB0aGUgdGV4dHVyZQorICAgIGJh
c2VUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBwaXhlbHMgPyBwaXhl
bHMtPmJhc2VBZGRyZXNzKCkgOiAwLCBlYyk7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlRGF0
YSogcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CkBAIC0xNzkzLDEyICsxODAxLDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHUKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJ
bWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlRGF0YSogcGl4ZWxz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTog
Rm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEocGl4
ZWxzLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZGF0YSk7Ci0gICAgbV9jb250ZXh0LT50ZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBwaXhlbHMtPndp
ZHRoKCksIHBpeGVscy0+aGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0YS5kYXRhKCkpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFn
ZURhdGEocGl4ZWxzLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZGF0YSkpIHsKKyAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYmFzZVRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHBpeGVscy0+d2lkdGgoKSwgcGl4ZWxz
LT5oZWlnaHQoKSwgMCwKKyAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRhdGEuZGF0YSgpLCBlYyk7CiB9
CiAKIApAQCAtMTgxOCwyMCArMTgyOCwxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dGV4SW1hZ2UyRCh1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGVjID0gMDsKLSAgICBpZiAoIWltYWdlKSB7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmNh
Y2hlZEltYWdlKCkpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0K
ICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKLSAg
ICBpZiAoIWNhY2hlZEltYWdlKSB7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgdW5z
aWduZWQgaW50IGZvcm1hdCwgaW50ZXJuYWxmb3JtYXQ7CisgICAgaWYgKCFtX2NvbnRleHQtPmV4
dHJhY3RJbWFnZURhdGEoY2FjaGVkSW1hZ2UtPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFs
cGhhLCBkYXRhLCAmZm9ybWF0LCAmaW50ZXJuYWxmb3JtYXQpKSB7CiAgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3Jl
IGFueSBlcnJvcnMgcmV0dXJuZWQKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgY2FjaGVkSW1hZ2UtPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworICAgIGJhc2VUZXhJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+d2lkdGgo
KSwgY2FjaGVkSW1hZ2UtPmltYWdlKCktPmhlaWdodCgpLCAwLAorICAgICAgICAgICAgICAgICAg
IGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRhdGEuZGF0YSgpLCBl
Yyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsCkBAIC0x
ODUwLDIwICsxODU5LDE5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJE
KHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwot
ICAgIGlmICghY2FudmFzKSB7CisgICAgaWYgKCFjYW52YXMgfHwgIWNhbnZhcy0+YnVmZmVyKCkp
IHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBJbWFnZUJ1
ZmZlciogYnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikgeworICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVybmFs
Zm9ybWF0OworICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKGJ1ZmZlci0+aW1h
Z2UoKSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGRhdGEsICZmb3JtYXQsICZpbnRlcm5hbGZv
cm1hdCkpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICAv
LyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAotICAgIG1fY29u
dGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBidWZmZXItPmltYWdlKCksIGZsaXBZLCBw
cmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwor
ICAgIGJhc2VUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBidWZmZXIt
PmltYWdlKCktPndpZHRoKCksIGJ1ZmZlci0+aW1hZ2UoKS0+aGVpZ2h0KCksIDAsCisgICAgICAg
ICAgICAgICAgICAgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0
YS5kYXRhKCksIGVjKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdl
MkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW8sCkBAIC0xOTA0LDE1ICsxOTEyLDIyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhQYXJhbWV0ZXIKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCit2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmFzZVRleFN1YkltYWdlMkQodW5zaWduZWQgdGFy
Z2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxz
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUg
YW55IGVycm9ycyByZXR1cm5lZAorICAgIGVjID0gMDsKKyAgICBtX2NvbnRleHQtPnRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCBXZWJHTEFycmF5KiBwaXhl
bHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9y
ZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIHBh
c3NlZCBidWZmZXIgaGFzIGVub3VnaCBieXRlcyB0byBkZWZpbmUgdGhlIHRleHR1cmUKLSAgICBl
YyA9IDA7Ci0gICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzID8gcGl4ZWxz
LT5iYXNlQWRkcmVzcygpIDogMCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKKyAgICBiYXNlVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJl
c3MoKSA6IDAsIGVjKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1Yklt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwg
dW5zaWduZWQgeW9mZnNldCwKQEAgLTE5MzAsMTIgKzE5NDUsMTQgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMgogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9m
ZnNldCwgdW5zaWduZWQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEltYWdlRGF0YSogcGl4ZWxzLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGln
bm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwotICAgIG1fY29udGV4dC0+ZXh0cmFjdEltYWdlRGF0YShwaXhlbHMsIGZsaXBZLCBw
cmVtdWx0aXBseUFscGhhLCBkYXRhKTsKLSAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgcGl4ZWxzLT53aWR0aCgpLCBwaXhlbHMtPmhl
aWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIGRhdGEuZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOworICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKHBpeGVscywgZmxpcFks
IHByZW11bHRpcGx5QWxwaGEsIGRhdGEpKSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGJhc2VUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHBpeGVscy0+d2lkdGgoKSwgcGl4ZWxzLT5oZWlnaHQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUsIGRhdGEuZGF0YSgpLCBlYyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVu
c2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCkBAIC0xOTUzLDIxICsxOTcwLDIwIEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2
ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgYm9vbCBm
bGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAv
LyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0g
MDsKLSAgICBpZiAoIWltYWdlKSB7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmNhY2hlZElt
YWdlKCkpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCiAg
ICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2UtPmNhY2hlZEltYWdlKCk7Ci0gICAg
aWYgKCFjYWNoZWRJbWFnZSkgeworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIHVuc2ln
bmVkIGludCBmb3JtYXQsIGludGVybmFsZm9ybWF0OworICAgIGlmICghbV9jb250ZXh0LT5leHRy
YWN0SW1hZ2VEYXRhKGNhY2hlZEltYWdlLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBo
YSwgZGF0YSwgJmZvcm1hdCwgJmludGVybmFsZm9ybWF0KSkgewogICAgICAgICBtX2NvbnRleHQt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgZmxpcFks
IHByZW11bHRpcGx5QWxwaGEpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CisgICAgYmFzZVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
Y2FjaGVkSW1hZ2UtPmltYWdlKCktPndpZHRoKCksIGNhY2hlZEltYWdlLT5pbWFnZSgpLT5oZWln
aHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBkYXRhLmRhdGEoKSwgZWMpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1
bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LApAQCAtMTk4NiwyMCArMjAwMiwxOSBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzLCBi
b29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGVjID0gMDsKLSAgICBpZiAoIWNhbnZhcykgeworICAgIGlmICghY2FudmFzIHx8ICFjYW52
YXMtPmJ1ZmZlcigpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAogICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBjYW52YXMtPmJ1ZmZlcigpOwotICAgIGlm
ICghYnVmZmVyKSB7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgdW5zaWduZWQgaW50
IGZvcm1hdCwgaW50ZXJuYWxmb3JtYXQ7CisgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFn
ZURhdGEoYnVmZmVyLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZGF0YSwgJmZv
cm1hdCwgJmludGVybmFsZm9ybWF0KSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9y
cyByZXR1cm5lZAotICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCBidWZmZXItPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhh
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworICAgIGJhc2VUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGJ1ZmZlci0+aW1hZ2UoKS0+
d2lkdGgoKSwgYnVmZmVyLT5pbWFnZSgpLT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBkYXRhLmRhdGEoKSwg
ZWMpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1bnNp
Z25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5
b2Zmc2V0LApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oCShyZXZpc2lvbiA1ODM1OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksMTMgQEAgY2xhc3MgV2Vi
S2l0Q1NTTWF0cml4OwogICAgICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xJbnRBcnJheVBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKICAgICAgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdM
VW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CiAKKyAgICAg
ICAgdm9pZCBiYXNlVGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1
bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBw
aXhlbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBiYXNlVGV4U3ViSW1hZ2UyRCh1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25l
ZCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRo
LCB1bnNpZ25lZCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmKTsK
KwogICAgICAgICBmcmllbmQgY2xhc3MgV2ViR0xTdGF0ZVJlc3RvcmVyOwogICAgIH07CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJl
dmlzaW9uIDU4MzU5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDksMTYgKzYwOSwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgc3RlbmNpbE9wKHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWdu
ZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcyk7CiAgICAgICAgIHZvaWQgc3RlbmNp
bE9wU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2ln
bmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpOwogCi0gICAgICAgIC8vIFRoZXNl
IG5leHQgc2V2ZXJhbCBmdW5jdGlvbnMgcmV0dXJuIGFuIGVycm9yIGNvZGUgKDAgaWYgbm8gZXJy
b3JzKSByYXRoZXIgdGhhbiB1c2luZyBhbiBFeGNlcHRpb25Db2RlLgotICAgICAgICAvLyBDdXJy
ZW50bHkgdGhleSByZXR1cm4gLTEgb24gYW55IGVycm9yLgogICAgICAgICBpbnQgdGV4SW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1h
dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNp
Z25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscyk7Ci0gICAgICAgIGludCB0
ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlKiBpbWFnZSwg
Ym9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKIAogICAgICAgICB2b2lkIHRleFBh
cmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwgZmxvYXQgcGFyYW0pOwog
ICAgICAgICB2b2lkIHRleFBhcmFtZXRlcmkodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFt
ZSwgaW50IHBhcmFtKTsKIAogICAgICAgICBpbnQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJn
ZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCB1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVk
IHR5cGUsIHZvaWQqIHBpeGVscyk7Ci0gICAgICAgIGludCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVk
IHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZz
ZXQsIEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKTsKIAog
ICAgICAgICB2b2lkIHVuaWZvcm0xZihsb25nIGxvY2F0aW9uLCBmbG9hdCB4KTsKICAgICAgICAg
dm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSk7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250
ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1ODM1OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5NSwz
OSArMTI5NSwxOCBAQCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPCiAK
IGludCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2ln
bmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2ln
bmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5
cGUsIHZvaWQqIHBpeGVscykKIHsKLSAgICAvLyBGSVhNRTogTmVlZCB0byBkbyBib3VuZHMgY2hl
Y2tpbmcgb24gdGhlIGJ1ZmZlciBoZXJlLgorICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2Jq
KTsKKwogICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICByZXR1cm4g
MDsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdl
dCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhKQotewotICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBWZWN0
b3I8dWludDhfdD4gaW1hZ2VEYXRhOwotICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVybmFs
Rm9ybWF0OwotICAgIGlmICghZXh0cmFjdEltYWdlRGF0YShpbWFnZSwgZmxpcFksIHByZW11bHRp
cGx5QWxwaGEsIGltYWdlRGF0YSwgJmZvcm1hdCwgJmludGVybmFsRm9ybWF0KSkKLSAgICAgICAg
cmV0dXJuIC0xOwotICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9y
bWF0LCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAwLCBmb3JtYXQsIEdMX1VOU0lH
TkVEX0JZVEUsIGltYWdlRGF0YS5kYXRhKCkpOwotICAgIHJldHVybiAwOwotfQotICAgIAogaW50
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmYsIHVuc2lnbmVkIHlvZmYsIHVuc2lnbmVkIHdpZHRoLCB1
bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4
ZWxzKQogewotICAgIC8vIEZJWE1FOiB3ZSB3aWxsIG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3Rv
cmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGltYWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJv
bSB0aGUgc3ViaW1hZ2Ugc2l6ZQotICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRvIGJvdW5kcyBjaGVj
a2luZyBvbiB0aGUgYnVmZmVyIGhlcmUuCi0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwot
ICAgIHJldHVybiAwOwotfQorICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKIAotaW50
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmYsIHVuc2lnbmVkIHlvZmYsIEltYWdlKiBpbWFnZSwgYm9v
bCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQotewogICAgIC8vIEZJWE1FOiB3ZSB3aWxs
IG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGlt
YWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZQotICAgIGVuc3Vy
ZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwot
ICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVybmFsRm9ybWF0OwotICAgIGlmICghZXh0cmFj
dEltYWdlRGF0YShpbWFnZSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGltYWdlRGF0YSwgJmZv
cm1hdCwgJmludGVybmFsRm9ybWF0KSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIDo6Z2xUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIGltYWdlLT53aWR0aCgpLCBpbWFn
ZS0+aGVpZ2h0KCksIGZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgaW1hZ2VEYXRhLmRhdGEoKSk7
CisgICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIHJldHVybiAwOwogfQogCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4MzY4KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTA0LTI3ICBaaGVueWFvIE1v
ICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeSB0ZXhJbWFnZTJEIGZ1bmN0aW9uIHdp
dGggSW1hZ2UgYXMgaW5wdXQgaW4gR3JhcGhpY3NDb250ZXh0M0QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MjM1CisKKyAgICAgICAgKiBzcmMvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwOiBSZW1vdmUgdGV4KmltYWdlIGltcGxlbWVudGF0aW9uIHdpdGgg
SW1hZ2UgaW5wdXQuCisKIDIwMTAtMDQtMjcgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA1ODM1OSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjA5LDQxICsxMjA5LDEwIEBAIERFTEVHQVRFX1RPX0lOVEVSTkFMXzMoc3RlbmNpbE9w
LCB1bnNpZ24KIERFTEVHQVRFX1RPX0lOVEVSTkFMXzQoc3RlbmNpbE9wU2VwYXJhdGUsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCiAK
IERFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKHRleEltYWdlMkQsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
dW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25l
ZCwgdm9pZCosIGludCkKLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEpCi17
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKLSAgICB1bnNpZ25lZCBpbnQgZm9ybWF0
LCBpbnRlcm5hbEZvcm1hdDsKLSAgICBpZiAoIWV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZsaXBZ
LCBwcmVtdWx0aXBseUFscGhhLCBpbWFnZURhdGEsICZmb3JtYXQsICZpbnRlcm5hbEZvcm1hdCkp
Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgVU5TSUdORURfQllURSwgaW1hZ2VEYXRhLmRh
dGEoKSk7Ci19Ci0KIERFTEVHQVRFX1RPX0lOVEVSTkFMXzModGV4UGFyYW1ldGVyZiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBmbG9hdCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzModGV4UGFyYW1ldGVy
aSwgdW5zaWduZWQsIHVuc2lnbmVkLCBpbnQpCi0KIERFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKHRl
eFN1YkltYWdlMkQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNp
Z25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdm9pZCosIGludCkKIAotaW50IEdy
YXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZXZlbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB4b2Zmc2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHlvZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKQotewotICAgIFZlY3Rvcjx1aW50OF90
PiBpbWFnZURhdGE7Ci0gICAgdW5zaWduZWQgaW50IGZvcm1hdCwgaW50ZXJuYWxGb3JtYXQ7Ci0g
ICAgaWYgKCFleHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwg
aW1hZ2VEYXRhLCAmZm9ybWF0LCAmaW50ZXJuYWxGb3JtYXQpKQotICAgICAgICByZXR1cm4gLTE7
Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFn
ZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCwgVU5TSUdORURfQllURSwgaW1hZ2VEYXRhLmRhdGEoKSk7Ci19Ci0K
IERFTEVHQVRFX1RPX0lOVEVSTkFMXzIodW5pZm9ybTFmLCBsb25nLCBmbG9hdCkKIERFTEVHQVRF
X1RPX0lOVEVSTkFMXzModW5pZm9ybTFmdiwgbG9uZywgZmxvYXQqLCBpbnQpCiBERUxFR0FURV9U
T19JTlRFUk5BTF8yKHVuaWZvcm0xaSwgbG9uZywgaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54588</attachid>
            <date>2010-04-28 11:03:09 -0700</date>
            <delta_ts>2010-04-28 11:27:03 -0700</delta_ts>
            <desc>revised patch : responding to Ken Russell&apos;s review</desc>
            <filename>tex.patch</filename>
            <type>text/plain</type>
            <size>20983</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dGhlIHVubmVjZXNzYXJ5IHRleEltYWdlMkQgZnVuY3Rpb24gd2l0aCBJbWFnZSBhcyBpbnB1dCBp
biBHcmFwaGljc0NvbnRleHQzRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzgyMzUKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eEltYWdlMkQpOiBBZGQgZXh0cmFjdEltYWdlRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREJhc2UpOiBBZGQgdGhpcyBmdW5jdGlvbiBhcyB0
aGUgY29tbW9uIGVudHJ5IHBvaW50IGZvciB0ZXhJbWFnZTJELgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJESW1hZ2UpOiBBZGQgdGhpcyBmdW5jdGlv
biBhcyB0aGUgY29tbW9uIGVudHJ5IHBvaW50IGZvciB0ZXhJbWFnZTJEIHdpdGggaW1hZ2UgaW5w
dXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdl
MkQpOiBBZGQgZXh0cmFjdEltYWdlRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyREJhc2UpOiBBZGQgdGhpcyBmdW5jdGlvbiBhcyB0aGUg
Y29tbW9uIGVudHJ5IHBvaW50IGZvciB0ZXhTdWJJbWFnZTJECisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRJbWFnZSk6IEFkZCB0aGlzIGZ1bmN0
aW9uIGFzIHRoZSBjb21tb24gZW50cnkgcG9pbnQgZm9yIHRleFN1YkltYWdlMkQgd2l0aCBpbWFn
ZSBpbnB1dC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDog
QWRkIHRleCpJbWFnZXtCYXNlL0ltYWdlfSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOiBSZW1vdmUgdGV4KkltYWdl
IGRlY2xhcmF0aW9uIHdpdGggSW1hZ2UgaW5wdXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDogUmVtb3ZlIHRleCpJbWFnZSBpbXBsZW1l
bnRhdGlvbiB3aXRoIEltYWdlIGlucHV0LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnRleFN1YkltYWdlMkQpOgorCiAyMDEwLTA0LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1
ODM1OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc2NiwxOCArMTc2Niw0MCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6c3RlbmNpbE9wU2VwCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodW5zaWduZWQg
dGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIFdlYkdMQXJyYXkq
IHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dGV4SW1hZ2UyREJhc2UodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQg
aW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwg
dW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAv
LyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAotICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBwYXNzZWQgYnVmZmVyIGhhcyBlbm91Z2ggYnl0ZXMgdG8g
ZGVmaW5lIHRoZSB0ZXh0dXJlCiAgICAgZWMgPSAwOwogICAgIG1fY29udGV4dC0+dGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyA/IHBpeGVscy0+
YmFzZUFkZHJlc3MoKSA6IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyREltYWdlKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlKiBpbWFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CisgICAgdW5zaWduZWQgaW50IGZvcm1hdCwgaW50ZXJuYWxmb3JtYXQ7Cisg
ICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZsaXBZLCBwcmVtdWx0
aXBseUFscGhhLCBkYXRhLCAmZm9ybWF0LCAmaW50ZXJuYWxmb3JtYXQpKSB7CisgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRleEltYWdlMkRCYXNlKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLCAw
LAorICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIGRhdGEuZGF0YSgpLCBlYyk7Cit9CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGlu
dGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0
eXBlLCBXZWJHTEFycmF5KiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIG1ha2Ugc3VyZSBwYXNzZWQgYnVmZmVyIGhhcyBlbm91Z2ggYnl0ZXMgdG8g
ZGVmaW5lIHRoZSB0ZXh0dXJlCisgICAgdGV4SW1hZ2UyREJhc2UodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICBm
b3JtYXQsIHR5cGUsIHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3MoKSA6IDAsIGVjKTsKK30K
Kwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0
LCB1bnNpZ25lZCBsZXZlbCwgSW1hZ2VEYXRhKiBwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYykKIHsKQEAgLTE3OTMsMTIgKzE4
MTUsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodQogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25l
ZCBsZXZlbCwgSW1hZ2VEYXRhKiBwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJl
dHVybmVkCiAgICAgZWMgPSAwOwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIG1fY29u
dGV4dC0+ZXh0cmFjdEltYWdlRGF0YShwaXhlbHMsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBk
YXRhKTsKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIHBpeGVscy0+d2lkdGgoKSwgcGl4ZWxzLT5oZWlnaHQoKSwgMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBk
YXRhLmRhdGEoKSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKKyAgICBp
ZiAoIW1fY29udGV4dC0+ZXh0cmFjdEltYWdlRGF0YShwaXhlbHMsIGZsaXBZLCBwcmVtdWx0aXBs
eUFscGhhLCBkYXRhKSkgeworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICB0ZXhJbWFnZTJEQmFzZSh0YXJnZXQsIGxldmVsLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgcGl4ZWxzLT53aWR0aCgpLCBwaXhlbHMtPmhlaWdodCgpLCAwLAorICAgICAgICAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgZGF0YS5kYXRhKCksIGVjKTsKIH0KIAogCkBAIC0xODE4LDIwICsxODQyLDExIEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIGlmICghaW1hZ2UpIHsKKyAg
ICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IGltYWdlLT5jYWNoZWRJbWFnZSgpOwotICAgIGlmICghY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRm9yIG5vdyB3
ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAotICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCBjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgZmxpcFksIHByZW11bHRpcGx5QWxw
aGEpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgdGV4SW1hZ2Uy
REltYWdlKHRhcmdldCwgbGV2ZWwsIGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLCBmbGlw
WSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzLApAQCAtMTg1MCwyMCArMTg2NSwxMSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGVjID0gMDsKLSAgICBpZiAoIWNhbnZhcykgewotICAgICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBjYW52
YXMtPmJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKSB7CisgICAgaWYgKCFjYW52YXMgfHwgIWNh
bnZhcy0+YnVmZmVyKCkpIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0KLSAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAot
ICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBidWZmZXItPmltYWdlKCks
IGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOworICAgIHRleEltYWdlMkRJbWFnZSh0YXJnZXQsIGxldmVsLCBjYW52YXMtPmJ1ZmZl
cigpLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwogfQogCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVk
IGxldmVsLCBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywKQEAgLTE5MDQsMTUgKzE5MTAsMzYgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFBhcmFtZXRlcgogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEQmFzZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25l
ZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0
LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCisgICAgZWMg
PSAwOworICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleFN1YkltYWdlMkRJbWFnZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UsIGJvb2wgZmxpcFksIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVy
bmFsZm9ybWF0OworICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBm
bGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZGF0YSwgJmZvcm1hdCwgJmludGVybmFsZm9ybWF0KSkg
eworICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXhTdWJJbWFn
ZTJEQmFzZSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBpbWFnZS0+d2lkdGgoKSwg
aW1hZ2UtPmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRhdGEuZGF0YSgpLCBlYyk7Cit9CisKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCBXZWJHTEFycmF5KiBwaXhlbHMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJl
dHVybmVkCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIHBhc3NlZCBidWZmZXIgaGFz
IGVub3VnaCBieXRlcyB0byBkZWZpbmUgdGhlIHRleHR1cmUKLSAgICBlYyA9IDA7Ci0gICAgbV9j
b250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygp
IDogMCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKKyAgICB0ZXhTdWJJ
bWFnZTJEQmFzZSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3MoKSA6IDAsIGVjKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQodW5zaWduZWQg
dGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNl
dCwKQEAgLTE5MzAsMTIgKzE5NTcsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eFN1YkltYWdlMgogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQodW5z
aWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQg
eW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdl
RGF0YSogcGl4ZWxzLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3Jz
IHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIG1f
Y29udGV4dC0+ZXh0cmFjdEltYWdlRGF0YShwaXhlbHMsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhh
LCBkYXRhKTsKLSAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgcGl4ZWxzLT53aWR0aCgpLCBwaXhlbHMtPmhlaWdodCgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRhdGEu
ZGF0YSgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworICAgIGlmICgh
bV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKHBpeGVscywgZmxpcFksIHByZW11bHRpcGx5QWxw
aGEsIGRhdGEpKSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHRleFN1YkltYWdlMkRCYXNlKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHBpeGVs
cy0+d2lkdGgoKSwgcGl4ZWxzLT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRh
dGEuZGF0YSgpLCBlYyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJ
bWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQs
IHVuc2lnbmVkIHlvZmZzZXQsCkBAIC0xOTUzLDIxICsxOTgyLDEzIEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhv
ZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogRm9yIG5v
dyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKLSAgICBpZiAoIWlt
YWdlKSB7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmNhY2hlZEltYWdlKCkpIHsKICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gaW1hZ2UtPmNhY2hlZEltYWdlKCk7Ci0gICAgaWYgKCFjYWNoZWRJbWFn
ZSkgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgdGV4U3ViSW1hZ2UyREltYWdlKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJn
ZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LApA
QCAtMTk4NiwyMCArMjAwNywxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MQ2Fu
dmFzRWxlbWVudCogY2FudmFzLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKLSAgICBpZiAoIWNhbnZhcykgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBJbWFnZUJ1ZmZl
ciogYnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikgeworICAgIGlm
ICghY2FudmFzIHx8ICFjYW52YXMtPmJ1ZmZlcigpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBh
bnkgZXJyb3JzIHJldHVybmVkCi0gICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGJ1ZmZlci0+aW1hZ2UoKSwgZmxpcFksIHByZW11bHRp
cGx5QWxwaGEpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgdGV4
U3ViSW1hZ2UyREltYWdlKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGNhbnZhcy0+
YnVmZmVyKCktPmltYWdlKCksCisgICAgICAgICAgICAgICAgICAgICAgIGZsaXBZLCBwcmVtdWx0
aXBseUFscGhhLCBlYyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJ
bWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQs
IHVuc2lnbmVkIHlvZmZzZXQsCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDU4MzU5KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2OSwxNyBA
QCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRXZWJHTElu
dEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogICAgICAgICBXZWJHTEdldElu
Zm8gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1l
KTsKIAorICAgICAgICB2b2lkIHRleEltYWdlMkRCYXNlKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5
cGUsIHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHRleEltYWdl
MkRJbWFnZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBJbWFnZSogaW1hZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHRleFN1YkltYWdlMkRCYXNlKHVu
c2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVk
IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIHRleFN1YkltYWdlMkRJbWFnZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVk
IGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UsIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgICAgIGZyaWVuZCBjbGFzcyBXZWJH
TFN0YXRlUmVzdG9yZXI7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTgzNTkpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
OSwxNiArNjA5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzdGVuY2ls
T3AodW5zaWduZWQgbG9uZyBmYWlsLCB1bnNpZ25lZCBsb25nIHpmYWlsLCB1bnNpZ25lZCBsb25n
IHpwYXNzKTsKICAgICAgICAgdm9pZCBzdGVuY2lsT3BTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZh
Y2UsIHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9u
ZyB6cGFzcyk7CiAKLSAgICAgICAgLy8gVGhlc2UgbmV4dCBzZXZlcmFsIGZ1bmN0aW9ucyByZXR1
cm4gYW4gZXJyb3IgY29kZSAoMCBpZiBubyBlcnJvcnMpIHJhdGhlciB0aGFuIHVzaW5nIGFuIEV4
Y2VwdGlvbkNvZGUuCi0gICAgICAgIC8vIEN1cnJlbnRseSB0aGV5IHJldHVybiAtMSBvbiBhbnkg
ZXJyb3IuCiAgICAgICAgIGludCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQg
bGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwg
dm9pZCogcGl4ZWxzKTsKLSAgICAgICAgaW50IHRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1
bnNpZ25lZCBsZXZlbCwgSW1hZ2UqIGltYWdlLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5
QWxwaGEpOwogCiAgICAgICAgIHZvaWQgdGV4UGFyYW1ldGVyZih1bnNpZ25lZCB0YXJnZXQsIHVu
c2lnbmVkIHBuYW1lLCBmbG9hdCBwYXJhbSk7CiAgICAgICAgIHZvaWQgdGV4UGFyYW1ldGVyaSh1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBpbnQgcGFyYW0pOwogCiAgICAgICAgIGlu
dCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVk
IHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKTsKLSAgICAg
ICAgaW50IHRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5z
aWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwgSW1hZ2UqIGltYWdlLCBib29sIGZsaXBZ
LCBib29sIHByZW11bHRpcGx5QWxwaGEpOwogCiAgICAgICAgIHZvaWQgdW5pZm9ybTFmKGxvbmcg
bG9jYXRpb24sIGZsb2F0IHgpOwogICAgICAgICB2b2lkIHVuaWZvcm0xZnYobG9uZyBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHJldmlzaW9uIDU4MzU5
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk1LDM5ICsxMjk1LDE4IEBAIGxvbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk8KIAogaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJ
bWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFs
Zm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIs
IHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKQogewotICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGRvIGJvdW5kcyBjaGVja2luZyBvbiB0aGUgYnVmZmVyIGhlcmUuCisg
ICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOworCiAgICAgOjpnbFRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMpOwogICAgIHJldHVybiAwOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0
M0Q6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSW1hZ2UqIGlt
YWdlLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEpCi17Ci0gICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Ci0gICAg
dW5zaWduZWQgaW50IGZvcm1hdCwgaW50ZXJuYWxGb3JtYXQ7Ci0gICAgaWYgKCFleHRyYWN0SW1h
Z2VEYXRhKGltYWdlLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgaW1hZ2VEYXRhLCAmZm9ybWF0
LCAmaW50ZXJuYWxGb3JtYXQpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgOjpnbFRleEltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+
aGVpZ2h0KCksIDAsIGZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgaW1hZ2VEYXRhLmRhdGEoKSk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0gICAgCiBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1Yklt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZiwgdW5z
aWduZWQgeW9mZiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgZm9y
bWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMpCiB7Ci0gICAgLy8gRklYTUU6IHdlIHdp
bGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGgg
aW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplCi0gICAgLy8g
RklYTUU6IE5lZWQgdG8gZG8gYm91bmRzIGNoZWNraW5nIG9uIHRoZSBidWZmZXIgaGVyZS4KLSAg
ICA6OmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgcmV0dXJuIDA7Ci19CisgICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1Yklt
YWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZiwgdW5z
aWduZWQgeW9mZiwgSW1hZ2UqIGltYWdlLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxw
aGEpCi17CiAgICAgLy8gRklYTUU6IHdlIHdpbGwgbmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9y
ZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1hZ2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9t
IHRoZSBzdWJpbWFnZSBzaXplCi0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAg
IFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Ci0gICAgdW5zaWduZWQgaW50IGZvcm1hdCwgaW50
ZXJuYWxGb3JtYXQ7Ci0gICAgaWYgKCFleHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmbGlwWSwgcHJl
bXVsdGlwbHlBbHBoYSwgaW1hZ2VEYXRhLCAmZm9ybWF0LCAmaW50ZXJuYWxGb3JtYXQpKQotICAg
ICAgICByZXR1cm4gLTE7Ci0gICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZiwgeW9mZiwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgZm9ybWF0LCBHTF9VTlNJ
R05FRF9CWVRFLCBpbWFnZURhdGEuZGF0YSgpKTsKKyAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTgzNjgp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTAtMDQtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHVubmVj
ZXNzYXJ5IHRleEltYWdlMkQgZnVuY3Rpb24gd2l0aCBJbWFnZSBhcyBpbnB1dCBpbiBHcmFwaGlj
c0NvbnRleHQzRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzgyMzUKKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6IFJlbW92ZSB0
ZXgqaW1hZ2UgaW1wbGVtZW50YXRpb24gd2l0aCBJbWFnZSBpbnB1dC4KKwogMjAxMC0wNC0yNyAg
Sm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAJKHJldmlzaW9uIDU4MzU5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGlj
c0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDksNDEgKzEyMDksMTAgQEAgREVM
RUdBVEVfVE9fSU5URVJOQUxfMyhzdGVuY2lsT3AsIHVuc2lnbgogREVMRUdBVEVfVE9fSU5URVJO
QUxfNChzdGVuY2lsT3BTZXBhcmF0ZSwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKIAogREVMRUdBVEVfVE9fSU5URVJOQUxfOVIodGV4
SW1hZ2UyRCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB2b2lkKiwgaW50KQotCi1pbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwg
SW1hZ2UqIGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxp
cFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VE
YXRhOwotICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVybmFsRm9ybWF0OwotICAgIGlmICgh
ZXh0cmFjdEltYWdlRGF0YShpbWFnZSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGltYWdlRGF0
YSwgJmZvcm1hdCwgJmludGVybmFsRm9ybWF0KSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiBtX2ludGVybmFsLT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLT53aWR0aCgpLCBpbWFn
ZS0+aGVpZ2h0KCksIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
LCBVTlNJR05FRF9CWVRFLCBpbWFnZURhdGEuZGF0YSgpKTsKLX0KLQogREVMRUdBVEVfVE9fSU5U
RVJOQUxfMyh0ZXhQYXJhbWV0ZXJmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KQogREVMRUdB
VEVfVE9fSU5URVJOQUxfMyh0ZXhQYXJhbWV0ZXJpLCB1bnNpZ25lZCwgdW5zaWduZWQsIGludCkK
LQogREVMRUdBVEVfVE9fSU5URVJOQUxfOVIodGV4U3ViSW1hZ2UyRCwgdW5zaWduZWQsIHVuc2ln
bmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVu
c2lnbmVkLCB2b2lkKiwgaW50KQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1YkltYWdl
MkQodW5zaWduZWQgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFn
ZSogaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlw
WSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5
QWxwaGEpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKLSAgICB1bnNpZ25lZCBp
bnQgZm9ybWF0LCBpbnRlcm5hbEZvcm1hdDsKLSAgICBpZiAoIWV4dHJhY3RJbWFnZURhdGEoaW1h
Z2UsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBpbWFnZURhdGEsICZmb3JtYXQsICZpbnRlcm5h
bEZvcm1hdCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+dGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBVTlNJR05FRF9C
WVRFLCBpbWFnZURhdGEuZGF0YSgpKTsKLX0KLQogREVMRUdBVEVfVE9fSU5URVJOQUxfMih1bmlm
b3JtMWYsIGxvbmcsIGZsb2F0KQogREVMRUdBVEVfVE9fSU5URVJOQUxfMyh1bmlmb3JtMWZ2LCBs
b25nLCBmbG9hdCosIGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzIodW5pZm9ybTFpLCBsb25n
LCBpbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54593</attachid>
            <date>2010-04-28 11:27:03 -0700</date>
            <delta_ts>2010-04-29 00:42:21 -0700</delta_ts>
            <desc>revised patch: remove the -image postfix</desc>
            <filename>tex.patch</filename>
            <type>text/plain</type>
            <size>20753</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDQtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dGhlIHVubmVjZXNzYXJ5IHRleEltYWdlMkQgZnVuY3Rpb24gd2l0aCBJbWFnZSBhcyBpbnB1dCBp
biBHcmFwaGljc0NvbnRleHQzRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzgyMzUKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eEltYWdlMkQpOiBBZGQgZXh0cmFjdEltYWdlRGF0YTsgYWRkIGEgY29tbW9uIGVudHJ5IHBvaW50
IGZvciB0ZXhJbWFnZTJEIHdpdGggaW1hZ2UgaW5wdXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRCYXNlKTogQWRkIHRoaXMgZnVuY3Rpb24gYXMg
dGhlIGNvbW1vbiBlbnRyeSBwb2ludCBmb3IgdGV4SW1hZ2UyRC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6IEFkZCBleHRyYWN0SW1hZ2VE
YXRhOyBhZGQgYSBjb21tb24gZW50cnkgcG9pbnQgZm9yIHRleFN1YkltYWdlMkQgd2l0aCBpbWFn
ZSBpbnB1dC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyREJhc2UpOiBBZGQgdGhpcyBmdW5jdGlvbiBhcyB0aGUgY29tbW9uIGVudHJ5IHBvaW50
IGZvciB0ZXhTdWJJbWFnZTJELgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oOiBBZGQgdGV4KkltYWdle0Jhc2UvSW1hZ2V9IGZ1bmN0aW9uIGRlY2xhcmF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IFJlbW92
ZSB0ZXgqSW1hZ2UgZGVjbGFyYXRpb24gd2l0aCBJbWFnZSBpbnB1dC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOiBSZW1vdmUgdGV4Kklt
YWdlIGltcGxlbWVudGF0aW9uIHdpdGggSW1hZ2UgaW5wdXQuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRCk6CisKIDIwMTAtMDQtMjcgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4K
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDU4MzU5KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzY2LDE4ICsxNzY2LDQwIEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsT3BTZXAKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdp
ZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwg
V2ViR0xBcnJheSogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhJbWFnZTJEQmFzZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVs
LCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBi
b3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVk
Ci0gICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIHBhc3NlZCBidWZmZXIgaGFzIGVub3Vn
aCBieXRlcyB0byBkZWZpbmUgdGhlIHRleHR1cmUKICAgICBlYyA9IDA7CiAgICAgbV9jb250ZXh0
LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
ID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygpIDogMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJE
KHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlKiBpbWFnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOworICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVybmFsZm9ybWF0Owor
ICAgIGlmICghbV9jb250ZXh0LT5leHRyYWN0SW1hZ2VEYXRhKGltYWdlLCBmbGlwWSwgcHJlbXVs
dGlwbHlBbHBoYSwgZGF0YSwgJmZvcm1hdCwgJmludGVybmFsZm9ybWF0KSkgeworICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXhJbWFnZTJEQmFzZSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwg
MCwKKyAgICAgICAgICAgICAgICAgICBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCBkYXRhLmRhdGEoKSwgZWMpOworfQorCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQg
dHlwZSwgV2ViR0xBcnJheSogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBG
SVhNRTogTmVlZCB0byBtYWtlIHN1cmUgcGFzc2VkIGJ1ZmZlciBoYXMgZW5vdWdoIGJ5dGVzIHRv
IGRlZmluZSB0aGUgdGV4dHVyZQorICAgIHRleEltYWdlMkRCYXNlKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAg
Zm9ybWF0LCB0eXBlLCBwaXhlbHMgPyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiAwLCBlYyk7Cit9
CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdl
dCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlRGF0YSogcGl4ZWxzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CkBAIC0xNzkzLDEyICsx
ODE1LDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHUKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWdu
ZWQgbGV2ZWwsIEltYWdlRGF0YSogcGl4ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyBy
ZXR1cm5lZAogICAgIGVjID0gMDsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBtX2Nv
bnRleHQtPmV4dHJhY3RJbWFnZURhdGEocGl4ZWxzLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwg
ZGF0YSk7Ci0gICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBwaXhlbHMtPndpZHRoKCksIHBpeGVscy0+aGVpZ2h0KCksIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
ZGF0YS5kYXRhKCkpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAg
aWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEocGl4ZWxzLCBmbGlwWSwgcHJlbXVsdGlw
bHlBbHBoYSwgZGF0YSkpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdGV4SW1hZ2UyREJhc2UodGFyZ2V0LCBsZXZlbCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIHBpeGVscy0+d2lkdGgoKSwgcGl4ZWxzLT5oZWlnaHQoKSwgMCwKKyAgICAgICAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIGRhdGEuZGF0YSgpLCBlYyk7CiB9CiAKIApAQCAtMTgxOCwyMCArMTg0MiwxMSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKLSAgICBpZiAoIWltYWdlKSB7Cisg
ICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKLSAgICBpZiAoIWNhY2hlZEltYWdlKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
VkFMVUUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEZvciBub3cg
d2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKLSAgICBtX2NvbnRleHQtPnRleEltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgY2FjaGVkSW1hZ2UtPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFs
cGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworICAgIHRleEltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgaW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCksIGZsaXBZLCBw
cmVtdWx0aXBseUFscGhhLCBlYyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxDYW52YXNFbGVt
ZW50KiBjYW52YXMsCkBAIC0xODUwLDIwICsxODY1LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhJbWFnZTJEKHUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgZWMgPSAwOwotICAgIGlmICghY2FudmFzKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcy0+
YnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpIHsKKyAgICBpZiAoIWNhbnZhcyB8fCAhY2FudmFz
LT5idWZmZXIoKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQot
ICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCi0gICAg
bV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGJ1ZmZlci0+aW1hZ2UoKSwgZmxp
cFksIHByZW11bHRpcGx5QWxwaGEpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CisgICAgdGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBjYW52YXMtPmJ1ZmZlcigpLT5pbWFn
ZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZWMpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBI
VE1MVmlkZW9FbGVtZW50KiB2aWRlbywKQEAgLTE5MDQsMTUgKzE5MTAsMzYgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRleFBhcmFtZXRlcgogICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFn
ZTJEQmFzZSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0
LCB1bnNpZ25lZCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25l
ZCB0eXBlLCB2b2lkKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEZJWE1F
OiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCisgICAgZWMgPSAwOworICAg
IG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRl
eFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9m
ZnNldCwgdW5zaWduZWQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7CisgICAgdW5zaWduZWQgaW50IGZvcm1hdCwgaW50ZXJuYWxmb3JtYXQ7CisgICAgaWYg
KCFtX2NvbnRleHQtPmV4dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZsaXBZLCBwcmVtdWx0aXBseUFs
cGhhLCBkYXRhLCAmZm9ybWF0LCAmaW50ZXJuYWxmb3JtYXQpKSB7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRleFN1YkltYWdlMkRCYXNlKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgZGF0YS5kYXRhKCksIGVjKTsKK30KKwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQg
eG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVk
IHR5cGUsIFdlYkdMQXJyYXkqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8g
RklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICAvLyBGSVhN
RTogTmVlZCB0byBtYWtlIHN1cmUgcGFzc2VkIGJ1ZmZlciBoYXMgZW5vdWdoIGJ5dGVzIHRvIGRl
ZmluZSB0aGUgdGV4dHVyZQotICAgIGVjID0gMDsKLSAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMgPyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiAwKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworICAgIHRleFN1YkltYWdlMkRCYXNlKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygpIDogMCwgZWMpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxl
dmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LApAQCAtMTkzMCwxMiArMTk1
NywxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2ln
bmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VEYXRhKiBwaXhlbHMsIGJvb2wg
ZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
Ly8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBlYyA9
IDA7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgbV9jb250ZXh0LT5leHRyYWN0SW1h
Z2VEYXRhKHBpeGVscywgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGRhdGEpOwotICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBwaXhl
bHMtPndpZHRoKCksIHBpeGVscy0+aGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0YS5kYXRhKCkpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CisgICAgaWYgKCFtX2NvbnRleHQtPmV4dHJhY3RJ
bWFnZURhdGEocGl4ZWxzLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgZGF0YSkpIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGV4U3ViSW1hZ2UyREJhc2Uo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgcGl4ZWxzLT53aWR0aCgpLCBwaXhlbHMt
PmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0YS5kYXRhKCksIGVjKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFy
Z2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwK
QEAgLTE5NTMsMjEgKzE5ODIsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlMgogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQodW5zaWdu
ZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxJbWFn
ZUVsZW1lbnQqIGltYWdlLCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJy
b3JzIHJldHVybmVkCiAgICAgZWMgPSAwOwotICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlID0gaW1hZ2UtPmNhY2hlZEltYWdlKCk7Ci0gICAgaWYgKCFjYWNoZWRJbWFnZSkgewor
ICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIGNhY2hlZEltYWdlLT5pbWFnZSgpLCBm
bGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKKyAgICB0ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLAorICAgICAgICAgICAgICAgICAgZmxpcFks
IHByZW11bHRpcGx5QWxwaGEsIGVjKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQg
eG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwKQEAgLTE5ODYsMjAgKzIwMDcsMTIgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcywgYm9vbCBmbGlw
WSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9
IDA7Ci0gICAgaWYgKCFjYW52YXMpIHsKKyAgICBpZiAoIWNhbnZhcyB8fCAhY2FudmFzLT5idWZm
ZXIoKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAg
ICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gY2FudmFzLT5idWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZl
cikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAv
LyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAotICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBidWZm
ZXItPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOworICAgIHRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgY2FudmFzLT5idWZmZXIoKS0+aW1hZ2UoKSwKKyAgICAgICAgICAgICAg
ICAgIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBlYyk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWws
IHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDU4MzU5KQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzY5LDYgKzM2OSwxNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIFdlYkdM
R2V0SW5mbyBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwog
ICAgICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcih1
bnNpZ25lZCBsb25nIHBuYW1lKTsKIAorICAgICAgICB2b2lkIHRleEltYWdlMkRCYXNlKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVybmFsZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQs
IHVuc2lnbmVkIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBm
b3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYpOworICAg
ICAgICB2b2lkIHRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSW1h
Z2UqIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
REJhc2UodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwg
dW5zaWduZWQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIHZvaWQgdGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2ln
bmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlLCBib29sIGZsaXBZLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgICAgICBmcmllbmQgY2xhc3MgV2ViR0xT
dGF0ZVJlc3RvcmVyOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDU4MzU5KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDks
MTYgKzYwOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RlbmNpbE9w
KHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6
cGFzcyk7CiAgICAgICAgIHZvaWQgc3RlbmNpbE9wU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNl
LCB1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcg
enBhc3MpOwogCi0gICAgICAgIC8vIFRoZXNlIG5leHQgc2V2ZXJhbCBmdW5jdGlvbnMgcmV0dXJu
IGFuIGVycm9yIGNvZGUgKDAgaWYgbm8gZXJyb3JzKSByYXRoZXIgdGhhbiB1c2luZyBhbiBFeGNl
cHRpb25Db2RlLgotICAgICAgICAvLyBDdXJyZW50bHkgdGhleSByZXR1cm4gLTEgb24gYW55IGVy
cm9yLgogICAgICAgICBpbnQgdGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxl
dmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCwgdW5zaWduZWQgYm9yZGVyLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZv
aWQqIHBpeGVscyk7Ci0gICAgICAgIGludCB0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5z
aWduZWQgbGV2ZWwsIEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhKTsKIAogICAgICAgICB2b2lkIHRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNp
Z25lZCBwbmFtZSwgZmxvYXQgcGFyYW0pOwogICAgICAgICB2b2lkIHRleFBhcmFtZXRlcmkodW5z
aWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwgaW50IHBhcmFtKTsKIAogICAgICAgICBpbnQg
dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4
b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0
LCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscyk7Ci0gICAgICAg
IGludCB0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2ln
bmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQsIEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKTsKIAogICAgICAgICB2b2lkIHVuaWZvcm0xZihsb25nIGxv
Y2F0aW9uLCBmbG9hdCB4KTsKICAgICAgICAgdm9pZCB1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24s
IGZsb2F0KiB2LCBpbnQgc2l6ZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1ODM1OSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI5NSwzOSArMTI5NSwxOCBAQCBsb25nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPCiAKIGludCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1h
Z2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCBpbnRlcm5hbGZv
cm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLCB1
bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIHZvaWQqIHBpeGVscykKIHsKLSAgICAvLyBG
SVhNRTogTmVlZCB0byBkbyBib3VuZHMgY2hlY2tpbmcgb24gdGhlIGJ1ZmZlciBoZXJlLgorICAg
IGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKKwogICAgIDo6Z2xUZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKICAgICByZXR1cm4gMDsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNE
Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEltYWdlKiBpbWFn
ZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhKQotewotICAgIGVuc3VyZUNvbnRl
eHQobV9jb250ZXh0T2JqKTsKLSAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwotICAgIHVu
c2lnbmVkIGludCBmb3JtYXQsIGludGVybmFsRm9ybWF0OwotICAgIGlmICghZXh0cmFjdEltYWdl
RGF0YShpbWFnZSwgZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIGltYWdlRGF0YSwgJmZvcm1hdCwg
JmludGVybmFsRm9ybWF0KSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIDo6Z2xUZXhJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhl
aWdodCgpLCAwLCBmb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIGltYWdlRGF0YS5kYXRhKCkpOwot
ICAgIHJldHVybiAwOwotfQotICAgIAogaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFn
ZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmYsIHVuc2ln
bmVkIHlvZmYsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGZvcm1h
dCwgdW5zaWduZWQgdHlwZSwgdm9pZCogcGl4ZWxzKQogewotICAgIC8vIEZJWE1FOiB3ZSB3aWxs
IG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGlt
YWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZQotICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGRvIGJvdW5kcyBjaGVja2luZyBvbiB0aGUgYnVmZmVyIGhlcmUuCi0gICAg
OjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIHJldHVybiAwOwotfQorICAgIGVuc3VyZUNv
bnRleHQobV9jb250ZXh0T2JqKTsKIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFn
ZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmYsIHVuc2ln
bmVkIHlvZmYsIEltYWdlKiBpbWFnZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
KQotewogICAgIC8vIEZJWE1FOiB3ZSB3aWxsIG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUg
cGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGltYWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0
aGUgc3ViaW1hZ2Ugc2l6ZQotICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBW
ZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwotICAgIHVuc2lnbmVkIGludCBmb3JtYXQsIGludGVy
bmFsRm9ybWF0OwotICAgIGlmICghZXh0cmFjdEltYWdlRGF0YShpbWFnZSwgZmxpcFksIHByZW11
bHRpcGx5QWxwaGEsIGltYWdlRGF0YSwgJmZvcm1hdCwgJmludGVybmFsRm9ybWF0KSkKLSAgICAg
ICAgcmV0dXJuIC0xOwotICAgIDo6Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYs
IHlvZmYsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIGZvcm1hdCwgR0xfVU5TSUdO
RURfQllURSwgaW1hZ2VEYXRhLmRhdGEoKSk7CisgICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
OwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4MzY4KQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEwLTA0LTI3ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB1bm5lY2Vz
c2FyeSB0ZXhJbWFnZTJEIGZ1bmN0aW9uIHdpdGggSW1hZ2UgYXMgaW5wdXQgaW4gR3JhcGhpY3ND
b250ZXh0M0QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM4MjM1CisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOiBSZW1vdmUgdGV4
KmltYWdlIGltcGxlbWVudGF0aW9uIHdpdGggSW1hZ2UgaW5wdXQuCisKIDIwMTAtMDQtMjcgIEpv
aG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0QuY3BwCShyZXZpc2lvbiA1ODM1OSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA5LDQxICsxMjA5LDEwIEBAIERFTEVH
QVRFX1RPX0lOVEVSTkFMXzMoc3RlbmNpbE9wLCB1bnNpZ24KIERFTEVHQVRFX1RPX0lOVEVSTkFM
XzQoc3RlbmNpbE9wU2VwYXJhdGUsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCiAKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKHRleElt
YWdlMkQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
dW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdm9pZCosIGludCkKLQotaW50IEdyYXBoaWNz
Q29udGV4dDNEOjp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIElt
YWdlKiBpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZ
LCBib29sIHByZW11bHRpcGx5QWxwaGEpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0
YTsKLSAgICB1bnNpZ25lZCBpbnQgZm9ybWF0LCBpbnRlcm5hbEZvcm1hdDsKLSAgICBpZiAoIWV4
dHJhY3RJbWFnZURhdGEoaW1hZ2UsIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhLCBpbWFnZURhdGEs
ICZmb3JtYXQsICZpbnRlcm5hbEZvcm1hdCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1
cm4gbV9pbnRlcm5hbC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+d2lkdGgoKSwgaW1hZ2Ut
PmhlaWdodCgpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwg
VU5TSUdORURfQllURSwgaW1hZ2VEYXRhLmRhdGEoKSk7Ci19Ci0KIERFTEVHQVRFX1RPX0lOVEVS
TkFMXzModGV4UGFyYW1ldGVyZiwgdW5zaWduZWQsIHVuc2lnbmVkLCBmbG9hdCkKIERFTEVHQVRF
X1RPX0lOVEVSTkFMXzModGV4UGFyYW1ldGVyaSwgdW5zaWduZWQsIHVuc2lnbmVkLCBpbnQpCi0K
IERFTEVHQVRFX1RPX0lOVEVSTkFMXzlSKHRleFN1YkltYWdlMkQsIHVuc2lnbmVkLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNp
Z25lZCwgdm9pZCosIGludCkKIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJE
KHVuc2lnbmVkIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2Uq
IGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFs
cGhhKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Ci0gICAgdW5zaWduZWQgaW50
IGZvcm1hdCwgaW50ZXJuYWxGb3JtYXQ7Ci0gICAgaWYgKCFleHRyYWN0SW1hZ2VEYXRhKGltYWdl
LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgaW1hZ2VEYXRhLCAmZm9ybWF0LCAmaW50ZXJuYWxG
b3JtYXQpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPnRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgVU5TSUdORURfQllU
RSwgaW1hZ2VEYXRhLmRhdGEoKSk7Ci19Ci0KIERFTEVHQVRFX1RPX0lOVEVSTkFMXzIodW5pZm9y
bTFmLCBsb25nLCBmbG9hdCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzModW5pZm9ybTFmdiwgbG9u
ZywgZmxvYXQqLCBpbnQpCiBERUxFR0FURV9UT19JTlRFUk5BTF8yKHVuaWZvcm0xaSwgbG9uZywg
aW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>