<?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>38707</bug_id>
          
          <creation_ts>2010-05-06 17:37:57 -0700</creation_ts>
          <short_desc>uniform* entry points must ignore the call if a null WebGLUniformLocation is passed</short_desc>
          <delta_ts>2010-06-11 07:50:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222077</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-05-06 17:37:57 -0700</bug_when>
    <thetext>Per a recent WebGL spec update motivated by Gregg Tavares, passing a null WebGLUniformLocation to the uniform* entry points should cause the call to be silently ignored rather than generating an OpenGL error. This is the behavior of the underlying OpenGL implementation when a -1 location is passed to glUniform*, and is motivated by application frameworks which look up a bunch of uniforms, where some might not exist in a particular program or might have been optimized away by the GLSL compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236115</commentid>
    <comment_count>1</comment_count>
      <attachid>58319</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-06-09 18:17:01 -0700</bug_when>
    <thetext>Created attachment 58319
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236593</commentid>
    <comment_count>2</comment_count>
      <attachid>58319</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 17:14:22 -0700</bug_when>
    <thetext>Comment on attachment 58319
patch

Looks good. One minor comment about one of the tests.

LayoutTests/fast/canvas/webgl/script-tests/uniform-location.js:23
 +  shouldBeUndefined(&quot;contextA.uniformMatrix4fv(0, false, mat)&quot;);
For correctness we should change this to &quot;contextA.uniformMatrix4fv(null, false, mat)&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236600</commentid>
    <comment_count>3</comment_count>
      <attachid>58424</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-06-10 17:41:37 -0700</bug_when>
    <thetext>Created attachment 58424
revised patch

Changed 0 to null in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236606</commentid>
    <comment_count>4</comment_count>
      <attachid>58424</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-06-10 17:48:20 -0700</bug_when>
    <thetext>Comment on attachment 58424
revised patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236675</commentid>
    <comment_count>5</comment_count>
      <attachid>58424</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-10 21:38:16 -0700</bug_when>
    <thetext>Comment on attachment 58424
revised patch

Energize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236822</commentid>
    <comment_count>6</comment_count>
      <attachid>58424</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-11 07:50:40 -0700</bug_when>
    <thetext>Comment on attachment 58424
revised patch

Clearing flags on attachment: 58424

Committed r61018: &lt;http://trac.webkit.org/changeset/61018&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236823</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-11 07:50:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58319</attachid>
            <date>2010-06-09 18:17:01 -0700</date>
            <delta_ts>2010-06-10 17:41:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>uniform.patch</filename>
            <type>text/plain</type>
            <size>22491</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDYtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB1bmlmb3Jt
KiBlbnRyeSBwb2ludHMgbXVzdCBpZ25vcmUgdGhlIGNhbGwgaWYgYSBudWxsIFdlYkdMVW5pZm9y
bUxvY2F0aW9uIGlzIHBhc3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzg3MDcKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6IHVuaWZvcm0qIGVudHJ5IHBvaW50cyBpZ25vcmUgdGhlIGNhbGwgaWYgYSBu
dWxsIFdlYkdMVW5pZm9ybUxvY2F0aW9uIGlzIHBhc3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
M2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRm
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0ZnYpOgorCiAyMDEwLTA2LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA2MDkyNikKKysrIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE3NSwxMCArMjE3NSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhT
dWJJbWFnZTIKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9hdCB4LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9P
UEVSQVRJT04pOwpAQCAtMjE5MiwxMCArMjE5MCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMWYoY28KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9j
YXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFBy
b2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjIxMywxMCArMjIwOSw4IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
ZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFS
QU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFs
b2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJv
Z3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjIz
NCwxMCArMjIyOCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGMK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAg
IGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsK
QEAgLTIyNTEsMTAgKzIyNDMsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTFpKGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFsb2NhdGlvbikgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CkBAIC0yMjcyLDEwICsyMjYyLDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0xaXYoYwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlm
ICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3Vy
cmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjI5MywxMCArMjI4MSw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KGMKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURf
UEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYg
KCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+
cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAt
MjMxMCwxMCArMjI5Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmYo
Y28KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjMzMiwxMCArMjMxNiw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMmZ2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlm
ICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3Vy
cmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjM1NCwxMCArMjMzNiw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGMKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBpbnQgeCwgaW50IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJB
TShlYyk7Ci0gICAgaWYgKCFsb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxv
Y2F0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9n
cmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yMzcx
LDEwICsyMzUxLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaShjbwog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlm
IChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwpAQCAtMjM5MywxMCArMjM3MSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMml2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0
aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9n
cmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI0MTUsMTAgKzIzOTEsOCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlm
ICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24t
PnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAg
LTI0MzIsMTAgKzI0MDYsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
KGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAK
ICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OKTsKQEAgLTI0NTQsMTAgKzI0MjYsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTNmdihjCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQg
c2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBp
ZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1
cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI0NzYsMTAgKzI0NDYsOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAg
IGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsK
QEAgLTI0OTMsMTAgKzI0NjEsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNpKGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFsb2NhdGlvbikgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CkBAIC0yNTE1LDEwICsyNDgxLDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0zaXYoYwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlm
ICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3Vy
cmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjUzNywxMCArMjUwMSw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGMKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjU1NCwxMCArMjUxNiw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtNGYoY28KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICgh
bG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVu
dFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjU3NiwxMCArMjUzNiw4IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGMKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURf
UEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYg
KCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+
cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAt
MjU5OCwxMCArMjU1Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6LCBpbnQgdywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9u
KSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFt
KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2MTUsMTAgKzI1NzEsOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpKGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMy
QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0g
ICAgaWYgKCFsb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0g
bV9jdXJyZW50UHJvZ3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yNjM3LDEwICsyNTkx
LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYoYwogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBV
TlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7Cisg
ICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04p
OwpAQCAtMjY1OSwxMCArMjYxMSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtNGl2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIEZsb2F0
MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsK
LSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24p
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAh
PSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2ODEsMTAgKzI2
MzEsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFsb2Nh
dGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJv
Z3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzAzLDEwICsyNjUxLDggQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBib29sIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9P
UEVSQVRJT04pOwpAQCAtMjcyNSwxMCArMjY3MSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cmkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlm
ICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24t
PnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAg
LTI3NDcsMTAgKzI2OTEsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBGbG9hdDMyQXJy
YXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAg
aWYgKCFsb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9j
dXJyZW50UHJvZ3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzY5LDEwICsyNzExLDgg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0p
IHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA5MjYpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0w
Ni0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHVuaWZvcm0qIGVudHJ5IHBvaW50cyBtdXN0IGln
bm9yZSB0aGUgY2FsbCBpZiBhIG51bGwgV2ViR0xVbmlmb3JtTG9jYXRpb24gaXMgcGFzc2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwNworCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC11bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVk
LnR4dDogTm8gZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIGEgbnVsbCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biBpcyBwYXNzZWQgdG8gdW5pZm9ybSooKS4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9z
Y3JpcHQtdGVzdHMvbnVsbC11bmlmb3JtLWxvY2F0aW9uLmpzOiBEaXR0by4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvdW5pZm9ybS1sb2NhdGlvbi5qczogRGl0dG8u
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50
eHQ6IERpdHRvLgorCiAyMDEwLTA2LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9udWxsLXVuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtdW5pZm9ybS1sb2Nh
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwOTI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvbnVsbC11bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNSw0MyArNSw0MyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24oJ3Vu
aWZvcm0xZicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElE
X1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVuaWZv
cm1GdW5jdGlvbigndW5pZm9ybTFmdicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IK
IFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbigndW5pZm9ybTFpJykgaXMgdW5kZWZpbmVkLgotUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtMWl2JykgaXMg
dW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1
bmlmb3JtMmYnKSBpcyB1bmRlZmluZWQuCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9WQUxVRQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGNhbGxVbmlm
b3JtRnVuY3Rpb24oJ3VuaWZvcm0yZnYnKSBpcyB1bmRlZmluZWQuCi1QQVNTIGdsLmdldEVycm9y
KCkgaXMgZ2wuSU5WQUxJRF9WQUxVRQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
CiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24oJ3VuaWZvcm0yaScpIGlzIHVuZGVmaW5lZC4KLVBB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbigndW5pZm9ybTJpdicpIGlz
IHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbign
dW5pZm9ybTNmJykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFM
SURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5p
Zm9ybUZ1bmN0aW9uKCd1bmlmb3JtM2Z2JykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtM2knKSBpcyB1bmRlZmluZWQuCi1Q
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9WQUxVRQorUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24oJ3VuaWZvcm0zaXYnKSBp
cyB1bmRlZmluZWQuCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9WQUxVRQorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24o
J3VuaWZvcm00ZicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZB
TElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVu
aWZvcm1GdW5jdGlvbigndW5pZm9ybTRmdicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKIFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbigndW5pZm9ybTRpJykgaXMgdW5kZWZpbmVkLgot
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtNGl2Jykg
aXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9u
KCd1bmlmb3JtTWF0cml4MmZ2JykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFT
UyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtTWF0cml4M2Z2JykgaXMgdW5kZWZpbmVkLgot
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtTWF0cml4
NGZ2JykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFM
VUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjA5MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlm
b3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAg
UEFTUyBjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMikgaXMgdQogUEFTUyBjb250ZXh0QS51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gdW5pZm9ybU1hdHJpeDRmdi4KIFBBU1MgY29udGV4dEEudXNlUHJvZ3Jh
bShwcm9ncmFtQTEpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dEEudW5p
Zm9ybU1hdHJpeDRmdigwLCBmYWxzZSwgbWF0KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MSBpbiB1bmlmb3JtTWF0cml4NGZ2LgorUEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KDAs
IGZhbHNlLCBtYXQpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShwcm9n
cmFtUykgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwg
MykgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25BcnJheTAs
IDQuMCkgaXMgdW5kZWZpbmVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL251bGwtdW5pZm9ybS1sb2NhdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC11bmlmb3JtLWxvY2F0
aW9uLmpzCShyZXZpc2lvbiA2MDkyNikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3NjcmlwdC10ZXN0cy9udWxsLXVuaWZvcm0tbG9jYXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgdmFyIGZ1bmNzID0gWyAidW5pZm9ybTFmIiwgInVuaWZvcm0xZnYiLAog
Zm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7IGkrKykgewogICAgIGNhbGxTdHJpbmcg
PSAiY2FsbFVuaWZvcm1GdW5jdGlvbignIiArIGZ1bmNzW2ldICsgIicpIjsKICAgICBzaG91bGRC
ZVVuZGVmaW5lZChjYWxsU3RyaW5nKTsKLSAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJn
bC5JTlZBTElEX1ZBTFVFIik7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9f
RVJST1IiKTsKIH0KIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91
bmlmb3JtLWxvY2F0aW9uLmpzCShyZXZpc2lvbiA2MDkyNikKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw3ICsyMCw3IEBAIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51c2VQcm9n
cmFtKHAKIHNob3VsZFRocm93KCJjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwg
ZmFsc2UsIG1hdCkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51c2VQcm9ncmFtKHBy
b2dyYW1BMSkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2
KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS51bmlmb3Jt
TWF0cml4NGZ2KDAsIGZhbHNlLCBtYXQpIik7CitzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dEEu
dW5pZm9ybU1hdHJpeDRmdigwLCBmYWxzZSwgbWF0KSIpOwogCiBzaG91bGRCZVVuZGVmaW5lZCgi
Y29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtUykiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250
ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMykiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58424</attachid>
            <date>2010-06-10 17:41:37 -0700</date>
            <delta_ts>2010-06-11 07:50:39 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>uniform.patch</filename>
            <type>text/plain</type>
            <size>22497</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDYtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB1bmlmb3Jt
KiBlbnRyeSBwb2ludHMgbXVzdCBpZ25vcmUgdGhlIGNhbGwgaWYgYSBudWxsIFdlYkdMVW5pZm9y
bUxvY2F0aW9uIGlzIHBhc3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzg3MDcKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6IHVuaWZvcm0qIGVudHJ5IHBvaW50cyBpZ25vcmUgdGhlIGNhbGwgaWYgYSBu
dWxsIFdlYkdMVW5pZm9ybUxvY2F0aW9uIGlzIHBhc3NlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0zZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
M2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRm
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNm
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0ZnYpOgorCiAyMDEwLTA2LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA2MDkyNikKKysrIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE3NSwxMCArMjE3NSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhT
dWJJbWFnZTIKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBmbG9hdCB4LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9P
UEVSQVRJT04pOwpAQCAtMjE5MiwxMCArMjE5MCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMWYoY28KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2
KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9j
YXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFBy
b2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjIxMywxMCArMjIwOSw4IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
ZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFS
QU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFs
b2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJv
Z3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjIz
NCwxMCArMjIyOCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGMK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWkoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAg
IGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsK
QEAgLTIyNTEsMTAgKzIyNDMsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTFpKGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFsb2NhdGlvbikgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CkBAIC0yMjcyLDEwICsyMjYyLDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0xaXYoYwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlm
ICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3Vy
cmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjI5MywxMCArMjI4MSw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KGMKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURf
UEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYg
KCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+
cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAt
MjMxMCwxMCArMjI5Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmYo
Y28KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjMzMiwxMCArMjMxNiw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMmZ2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MmZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlm
ICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3Vy
cmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjM1NCwxMCArMjMzNiw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGMKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBpbnQgeCwgaW50IHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJB
TShlYyk7Ci0gICAgaWYgKCFsb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxv
Y2F0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9n
cmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yMzcx
LDEwICsyMzUxLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaShjbwog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlm
IChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwpAQCAtMjM5MywxMCArMjM3MSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMml2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0
aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9n
cmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI0MTUsMTAgKzIzOTEsOCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihjCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlm
ICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24t
PnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAg
LTI0MzIsMTAgKzI0MDYsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNm
KGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAK
ICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAg
ICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OKTsKQEAgLTI0NTQsMTAgKzI0MjYsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTNmdihjCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGZsb2F0KiB2LCBpbnQg
c2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBp
ZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1
cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI0NzYsMTAgKzI0NDYsOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihjCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgaW50IHgsIGludCB5LCBpbnQgeiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAg
IGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsK
QEAgLTI0OTMsMTAgKzI0NjEsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNpKGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyQXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFsb2NhdGlvbikgewotICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTik7CkBAIC0yNTE1LDEwICsyNDgxLDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0zaXYoYwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0zaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQqIHYsIGludCBz
aXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlm
ICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3Vy
cmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjUzNywxMCArMjUwMSw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGMKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9PUEVSQVRJT04pOwpAQCAtMjU1NCwxMCArMjUxNiw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtNGYoY28KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkFycmF5KiB2
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICgh
bG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVu
dFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMjU3NiwxMCArMjUzNiw4IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGMKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURf
UEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYg
KCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+
cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAt
MjU5OCwxMCArMjU1Niw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2
KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6LCBpbnQgdywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9u
KSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFt
KSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2MTUsMTAgKzI1NzEsOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpKGNvCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMy
QXJyYXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0g
ICAgaWYgKCFsb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0g
bV9jdXJyZW50UHJvZ3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yNjM3LDEwICsyNTkx
LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYoYwogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBV
TlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7Cisg
ICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChsb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04p
OwpAQCAtMjY1OSwxMCArMjYxMSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtNGl2KGMKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIEZsb2F0
MzJBcnJheSogdiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsK
LSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlmICghbG9jYXRpb24p
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAh
PSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAgLTI2ODEsMTAgKzI2
MzEsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCogdiwgaW50IHNpemUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgaWYgKCFsb2Nh
dGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJv
Z3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzAzLDEwICsyNjUxLDggQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBib29sIHRyYW5zcG9zZSwgRmxvYXQzMkFycmF5KiB2LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKICAgICAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9P
UEVSQVRJT04pOwpAQCAtMjcyNSwxMCArMjY3MSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cmkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bv
c2UsIGZsb2F0KiB2LCBpbnQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKGVjKTsKLSAgICBpZiAoIWxvY2F0aW9uKSB7Ci0gICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgIGlm
ICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAobG9jYXRpb24t
PnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKQEAg
LTI3NDcsMTAgKzI2OTEsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBGbG9hdDMyQXJy
YXkqIHYsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAg
aWYgKCFsb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICBpZiAoIWxvY2F0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9j
dXJyZW50UHJvZ3JhbSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CkBAIC0yNzY5LDEwICsyNzExLDgg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxvYXQqIHYsIGludCBzaXplLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIGlmICghbG9jYXRpb24p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CisgICAgaWYgKCFsb2NhdGlvbikKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0p
IHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9PUEVSQVRJT04pOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA5MjYpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0w
Ni0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHVuaWZvcm0qIGVudHJ5IHBvaW50cyBtdXN0IGln
bm9yZSB0aGUgY2FsbCBpZiBhIG51bGwgV2ViR0xVbmlmb3JtTG9jYXRpb24gaXMgcGFzc2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwNworCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC11bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVk
LnR4dDogTm8gZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIGEgbnVsbCBXZWJHTFVuaWZvcm1Mb2NhdGlv
biBpcyBwYXNzZWQgdG8gdW5pZm9ybSooKS4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9z
Y3JpcHQtdGVzdHMvbnVsbC11bmlmb3JtLWxvY2F0aW9uLmpzOiBEaXR0by4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvdW5pZm9ybS1sb2NhdGlvbi5qczogRGl0dG8u
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50
eHQ6IERpdHRvLgorCiAyMDEwLTA2LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9udWxsLXVuaWZvcm0tbG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtdW5pZm9ybS1sb2Nh
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwOTI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvbnVsbC11bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNSw0MyArNSw0MyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBCiBQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgZ2wudXNlUHJv
Z3JhbShwcm9ncmFtKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24oJ3Vu
aWZvcm0xZicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElE
X1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVuaWZv
cm1GdW5jdGlvbigndW5pZm9ybTFmdicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IK
IFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbigndW5pZm9ybTFpJykgaXMgdW5kZWZpbmVkLgotUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtMWl2JykgaXMg
dW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1
bmlmb3JtMmYnKSBpcyB1bmRlZmluZWQuCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJ
RF9WQUxVRQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGNhbGxVbmlm
b3JtRnVuY3Rpb24oJ3VuaWZvcm0yZnYnKSBpcyB1bmRlZmluZWQuCi1QQVNTIGdsLmdldEVycm9y
KCkgaXMgZ2wuSU5WQUxJRF9WQUxVRQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9S
CiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24oJ3VuaWZvcm0yaScpIGlzIHVuZGVmaW5lZC4KLVBB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbigndW5pZm9ybTJpdicpIGlz
IHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbign
dW5pZm9ybTNmJykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFM
SURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5p
Zm9ybUZ1bmN0aW9uKCd1bmlmb3JtM2Z2JykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJv
cigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtM2knKSBpcyB1bmRlZmluZWQuCi1Q
QVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9WQUxVRQorUEFTUyBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24oJ3VuaWZvcm0zaXYnKSBp
cyB1bmRlZmluZWQuCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuSU5WQUxJRF9WQUxVRQorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCiBQQVNTIGNhbGxVbmlmb3JtRnVuY3Rpb24o
J3VuaWZvcm00ZicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5JTlZB
TElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKIFBBU1MgY2FsbFVu
aWZvcm1GdW5jdGlvbigndW5pZm9ybTRmdicpIGlzIHVuZGVmaW5lZC4KLVBBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyBnbC5JTlZBTElEX1ZBTFVFCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJS
T1IKIFBBU1MgY2FsbFVuaWZvcm1GdW5jdGlvbigndW5pZm9ybTRpJykgaXMgdW5kZWZpbmVkLgot
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtNGl2Jykg
aXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9u
KCd1bmlmb3JtTWF0cml4MmZ2JykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlz
IGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFT
UyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtTWF0cml4M2Z2JykgaXMgdW5kZWZpbmVkLgot
UEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5OT19FUlJPUgogUEFTUyBjYWxsVW5pZm9ybUZ1bmN0aW9uKCd1bmlmb3JtTWF0cml4
NGZ2JykgaXMgdW5kZWZpbmVkLgotUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFM
VUUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjA5MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlm
b3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAg
UEFTUyBjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1BMikgaXMgdQogUEFTUyBjb250ZXh0QS51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgdGhyZXcgZXhjZXB0aW9uIEdM
IGVycm9yIDEyODIgaW4gdW5pZm9ybU1hdHJpeDRmdi4KIFBBU1MgY29udGV4dEEudXNlUHJvZ3Jh
bShwcm9ncmFtQTEpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dEEudW5p
Zm9ybU1hdHJpeDRmdigwLCBmYWxzZSwgbWF0KSB0aHJldyBleGNlcHRpb24gR0wgZXJyb3IgMTI4
MSBpbiB1bmlmb3JtTWF0cml4NGZ2LgorUEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KG51
bGwsIGZhbHNlLCBtYXQpIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShw
cm9ncmFtUykgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25T
eCwgMykgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25BcnJh
eTAsIDQuMCkgaXMgdW5kZWZpbmVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2NyaXB0LXRlc3RzL251bGwtdW5pZm9ybS1sb2NhdGlvbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC11bmlmb3JtLWxv
Y2F0aW9uLmpzCShyZXZpc2lvbiA2MDkyNikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3NjcmlwdC10ZXN0cy9udWxsLXVuaWZvcm0tbG9jYXRpb24uanMJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgdmFyIGZ1bmNzID0gWyAidW5pZm9ybTFmIiwgInVuaWZvcm0xZnYi
LAogZm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7IGkrKykgewogICAgIGNhbGxTdHJp
bmcgPSAiY2FsbFVuaWZvcm1GdW5jdGlvbignIiArIGZ1bmNzW2ldICsgIicpIjsKICAgICBzaG91
bGRCZVVuZGVmaW5lZChjYWxsU3RyaW5nKTsKLSAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIs
ICJnbC5JTlZBTElEX1ZBTFVFIik7CisgICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wu
Tk9fRVJST1IiKTsKIH0KIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy91bmlmb3JtLWxvY2F0aW9uLmpzCShyZXZpc2lvbiA2MDkyNikKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy91bmlmb3JtLWxvY2F0aW9uLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBAIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51c2VQ
cm9ncmFtKHAKIHNob3VsZFRocm93KCJjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
QSwgZmFsc2UsIG1hdCkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51c2VQcm9ncmFt
KHByb2dyYW1BMSkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0QS51bmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS51bmlm
b3JtTWF0cml4NGZ2KDAsIGZhbHNlLCBtYXQpIik7CitzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4
dEEudW5pZm9ybU1hdHJpeDRmdihudWxsLCBmYWxzZSwgbWF0KSIpOwogCiBzaG91bGRCZVVuZGVm
aW5lZCgiY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtUykiKTsKIHNob3VsZEJlVW5kZWZpbmVk
KCJjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMykiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>