<?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>108304</bug_id>
          
          <creation_ts>2013-01-30 00:39:41 -0800</creation_ts>
          <short_desc>WebGL: Move the format conversion for 16-bit per channel formats into Core Graphics port only</short_desc>
          <delta_ts>2013-02-04 18:13:09 -0800</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="Jun Jiang">jun.a.jiang</reporter>
          <assigned_to name="Jun Jiang">jun.a.jiang</assigned_to>
          <cc>dino</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819885</commentid>
    <comment_count>0</comment_count>
    <who name="Jun Jiang">jun.a.jiang</who>
    <bug_when>2013-01-30 00:39:41 -0800</bug_when>
    <thetext>Since the 16-bit per channel formats are only used for Core Graphics port in WebGL and not a standard to represent any file format that is widely used for each platform, it is better to limit and hide this kinds of information and processing in CG specific code only. It can make the code more clear and reduce the binary size for both CG port and non-CG port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819893</commentid>
    <comment_count>1</comment_count>
      <attachid>185417</attachid>
    <who name="Jun Jiang">jun.a.jiang</who>
    <bug_when>2013-01-30 00:46:41 -0800</bug_when>
    <thetext>Created attachment 185417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823714</commentid>
    <comment_count>2</comment_count>
      <attachid>185417</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-02 14:37:12 -0800</bug_when>
    <thetext>Comment on attachment 185417
Patch

Very nice work and simplification. Before setting the CQ bit, was this tested with all of the existing layout tests, WebGL conformance tests, and Mozilla&apos;s WebGLPerf test suite?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824242</commentid>
    <comment_count>3</comment_count>
    <who name="Jun Jiang">jun.a.jiang</who>
    <bug_when>2013-02-04 04:30:29 -0800</bug_when>
    <thetext>Hi, Kenneth. I used to test this patch using the existing Layout tests, Mozilla&apos;s WebGLPerf tests and WebGL 1.0.1 conformance tests. And it was OK.
Today I tried the latest WebGL conformance test in https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html(newer than version 1.0.1), and it met some issue(RGB8-&gt;RGBA32F conversion) for CG port when running safari on MAC. And it was related with another bug and I had submitted fix at https://bugs.webkit.org/show_bug.cgi?id=108812.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824961</commentid>
    <comment_count>4</comment_count>
      <attachid>185417</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-04 17:52:47 -0800</bug_when>
    <thetext>Comment on attachment 185417
Patch

OK, sounds fine. Since the other bug is preexisting, doing these fixes separately sounds best. Thanks for the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824987</commentid>
    <comment_count>5</comment_count>
      <attachid>185417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 18:13:06 -0800</bug_when>
    <thetext>Comment on attachment 185417
Patch

Clearing flags on attachment: 185417

Committed r141841: &lt;http://trac.webkit.org/changeset/141841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824988</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 18:13:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185417</attachid>
            <date>2013-01-30 00:46:41 -0800</date>
            <delta_ts>2013-02-04 18:13:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108304-20130130164527.patch</filename>
            <type>text/plain</type>
            <size>38994</size>
            <attacher name="Jun Jiang">jun.a.jiang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M2NGRkM2YwYmQ4YWEy
ZDc3Y2E2MGFkMWE2YTZiNmFlZTA5Nzk1OS4uMzgyOWViNjMyZjkzM2Y1ZjJhMzY3NzhmNTYwZTQ5
ODA5Nzg3YjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTMwICBKdW4g
SmlhbmcgIDxqdW4uYS5qaWFuZ0BpbnRlbC5jb20+CisKKyAgICAgICAgV2ViR0w6IE1vdmUgdGhl
IGZvcm1hdCBjb252ZXJzaW9uIGZvciAxNi1iaXQgcGVyIGNoYW5uZWwgZm9ybWF0cyBpbnRvIENv
cmUgR3JhcGhpY3MgcG9ydCBvbmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDgzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaW5jZSB0aGUgMTYtYml0IHBlciBjaGFubmVsIGZvcm1hdHMgYXJlIG9u
bHkgdXNlZCBmb3IgQ29yZSBHcmFwaGljcyBwb3J0IGluIFdlYkdMIGFuZCBub3QgYSBzdGFuZGFy
ZCB0byByZXByZXNlbnQgYW55IGZpbGUgZm9ybWF0IHRoYXQgaXMgd2lkZWx5IHVzZWQgCisgICAg
ICAgIGZvciBlYWNoIHBsYXRmb3JtLCBpdCBpcyBiZXR0ZXIgdG8gbGltaXQgYW5kIGhpZGUgdGhp
cyBraW5kcyBvZiBpbmZvcm1hdGlvbiBhbmQgcHJvY2Vzc2luZyBpbiBDRyBzcGVjaWZpYyBjb2Rl
IG9ubHkuIAorICAgICAgICBJdCBjYW4gbWFrZSB0aGUgY29kZSBtb3JlIGNsZWFyIGFuZCByZWR1
Y2UgdGhlIGJpbmFyeSBzaXplIGZvciBib3RoIENHIHBvcnQgYW5kIG5vbi1DRyBwb3J0LgorCisg
ICAgICAgIEFscmVhZHkgY292ZXJlZCBieSBjdXJyZW50IHRlc3RzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAg
ICAgKEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpzcmNGb3JtYXRDb21lRnJvbURPTUVsZW1lbnRPckltYWdlRGF0YSk6CisgICAgICAgIChJ
bWFnZUV4dHJhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKwogMjAxMy0w
MS0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAg
ICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVz
IGluIExheWVyVHJlZVJlbmRlcmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDI4MjhlYWUxNjBhZTQxNzc0
Y2NmYmJlN2ZlYTNkM2MyNzg5OGUzZmUuLmM5MzUxM2JmZmNiYzRhZTViMDhlMjA1ODMwMWI2ZTlj
NGEyYjA4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTQ3LDE2ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIHsKIAotdWludDhfdCBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOCh1
aW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPj4gODsKLX0KLQotdWludDhfdCBj
b252ZXJ0Q29sb3IxNkJpZ1RvOCh1aW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDhfdD4odmFsdWUgJiAweDAwRkYpOwotfQotCiBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdCBnZXREYXRhRm9ybWF0KEdDM0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNE
ZW51bSBkZXN0aW5hdGlvblR5cGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXQgZHN0Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBODsKQEAgLTMz
MSwzMyArMzIxLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIHVucGFjayhjb25zdCBTb3VyY2VUeXBl
KiwgRHN0VHlwZSosIHVuc2lnbmVkKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi10
ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBMTZMaXR0bGUsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewot
I2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZlJH
QkExNkxpdHRsZVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKLSNl
bmRpZgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3Vy
Y2VbMF0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84
KHNvdXJjZVsxXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZMaXR0
bGVUbzgoc291cmNlWzJdKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3Ix
NkxpdHRsZVRvOChzb3VyY2VbM10pOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVz
dGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkJpZywgdWludDE2X3Qs
IHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBwaXhlbHNQZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRD
b2xvcjE2QmlnVG84KHNvdXJjZVswXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVy
dENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252
ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMl0pOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IGNv
bnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVszXSk7Ci0gICAgICAgIHNvdXJjZSArPSA0OwotICAg
ICAgICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQogdGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCOCwgdWludDhf
dCwgdWludDhfdD4oY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKQEAgLTM3MCwzMyArMzMzLDYgQEAgdGVtcGxhdGU8PiBB
TFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdC
OCwgdWludDhfdCwKICAgICB9CiB9CiAKLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVu
cGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2TGl0dGxlLCB1aW50MTZfdCwg
dWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVu
c2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0g
ICAgU0lNRDo6dW5wYWNrT25lUm93T2ZSR0IxNkxpdHRsZVRvUkdCQTgoc291cmNlLCBkZXN0aW5h
dGlvbiwgcGl4ZWxzUGVyUm93KTsKLSNlbmRpZgotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252
ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9
IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzJdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKLSAgICAgICAgZGVzdGlu
YXRpb25bM10gPSAweEZGOwotICAgICAgICBzb3VyY2UgKz0gMzsKLSAgICAgICAgZGVzdGluYXRp
b24gKz0gNDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFj
azxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2QmlnLCB1aW50MTZfdCwgdWludDhf
dD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZC
aWdUbzgoc291cmNlWzBdKTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3Ix
NkJpZ1RvOChzb3VyY2VbMV0pOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xv
cjE2QmlnVG84KHNvdXJjZVsyXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKLSAg
ICAgICAgc291cmNlICs9IDM7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQot
CiB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRCR1I4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2Us
IHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewpAQCAtNDIxLDMz
ICszNTcsNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCOCwgdWludDhfdAogICAgIH0KIH0KIAotdGVtcGxhdGU8
PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
QVJHQjE2TGl0dGxlLCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwg
dWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSNpZiBIQVZF
KEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lNRDo6dW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0
bGVUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKLSAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsK
LSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2Vb
Ml0pOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNv
dXJjZVszXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZMaXR0bGVU
bzgoc291cmNlWzBdKTsKLSAgICAgICAgc291cmNlICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9u
ICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCMTZCaWcsIHVpbnQxNl90LCB1aW50OF90
Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJp
Z1RvOChzb3VyY2VbMV0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2
QmlnVG84KHNvdXJjZVsyXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9y
MTZCaWdUbzgoc291cmNlWzNdKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29s
b3IxNkJpZ1RvOChzb3VyY2VbMF0pOwotICAgICAgICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVz
dGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFCR1I4LCB1aW50OF90LCB1aW50
OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewpAQCAtNDc4LDMzICszODcsNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19J
TkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBOCwgdWlu
dDhfdAogICAgIH0KIH0KIAotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTE2TGl0dGxlLCB1aW50MTZfdCwgdWludDhf
dD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVk
IHBpeGVsc1BlclJvdykKLXsKLSNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgU0lN
RDo6dW5wYWNrT25lUm93T2ZCR1JBMTZMaXR0bGVUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24s
IHBpeGVsc1BlclJvdyk7Ci0jZW5kaWYKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENv
bG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKLSAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252
ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOwotICAgICAgICBkZXN0aW5hdGlvblsyXSA9
IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9u
WzNdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzNdKTsKLSAgICAgICAgc291cmNl
ICs9IDQ7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+
IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRC
R1JBMTZCaWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMl0pOwotICAgICAgICBkZXN0
aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7Ci0gICAgICAgIGRl
c3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKLSAgICAgICAg
ZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbM10pOwotICAgICAg
ICBzb3VyY2UgKz0gNDsKLSAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KIHRl
bXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJHQkE1NTUxLCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKIHsKICNpZiBI
QVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCkBAIC01NzUsMzAgKzQ1Nyw2IEBAIHRlbXBsYXRlPD4g
QUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFI4
LCB1aW50OF90LCB1CiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1
bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZMaXR0bGUsIHVpbnQxNl90LCB1
aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29s
b3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZl
cnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0g
Y29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKLSAgICAgICAgZGVzdGluYXRpb25b
M10gPSAweEZGOwotICAgICAgICBzb3VyY2UgKz0gMTsKLSAgICAgICAgZGVzdGluYXRpb24gKz0g
NDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkJpZywgdWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0
IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgewotICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNv
dXJjZVswXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgo
c291cmNlWzBdKTsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1Rv
OChzb3VyY2VbMF0pOwotICAgICAgICBkZXN0aW5hdGlvblszXSA9IDB4RkY7Ci0gICAgICAgIHNv
dXJjZSArPSAxOwotICAgICAgICBkZXN0aW5hdGlvbiArPSA0OwotICAgIH0KLX0KLQogdGVtcGxh
dGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0UkE4LCB1aW50OF90LCB1aW50OF90Pihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewpAQCAtNjExLDMwICs0NjksNiBA
QCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSQTgsIHVpbnQ4X3QsCiAgICAgfQogfQogCi10ZW1wbGF0ZTw+IEFMV0FZU19J
TkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2TGl0dGxl
LCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKLSAgICAgICAgZGVzdGluYXRp
b25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwotICAgICAgICBkZXN0
aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7Ci0gICAgICAg
IGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKLSAg
ICAgICAgc291cmNlICs9IDI7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQot
Ci10ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSQTE2QmlnLCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKLXsKLSAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Ci0gICAg
ICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKLSAg
ICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOwot
ICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFd
KTsKLSAgICAgICAgc291cmNlICs9IDI7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAg
fQotfQotCiB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRBUjgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CkBAIC02
NDcsMzAgKzQ4MSw2IEBAIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSOCwgdWludDhfdCwKICAgICB9CiB9CiAKLXRlbXBs
YXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEFSMTZMaXR0bGUsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAg
ZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOwotICAg
ICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7
Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNl
WzFdKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChz
b3VyY2VbMF0pOwotICAgICAgICBzb3VyY2UgKz0gMjsKLSAgICAgICAgZGVzdGluYXRpb24gKz0g
NDsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFjazxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSMTZCaWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25z
dCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQotewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKLSAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChz
b3VyY2VbMV0pOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84
KHNvdXJjZVsxXSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdU
bzgoc291cmNlWzFdKTsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJp
Z1RvOChzb3VyY2VbMF0pOwotICAgICAgICBzb3VyY2UgKz0gMjsKLSAgICAgICAgZGVzdGluYXRp
b24gKz0gNDsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIHVucGFj
azxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEE4LCB1aW50OF90LCB1aW50OF90Pihjb25z
dCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQ
ZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgewpAQCAtNjgzLDMwICs0OTMsNiBAQCB0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9p
ZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBOCwgdWludDhfdCwgdQogICAg
IH0KIH0KIAotdGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgdW5wYWNrPEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0QTE2TGl0dGxlLCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWlu
dDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJv
dykKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytp
KSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzBdID0gMHgwOwotICAgICAgICBkZXN0aW5hdGlvblsx
XSA9IDB4MDsKLSAgICAgICAgZGVzdGluYXRpb25bMl0gPSAweDA7Ci0gICAgICAgIGRlc3RpbmF0
aW9uWzNdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKLSAgICAgICAgc291
cmNlICs9IDE7Ci0gICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCB1bnBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRBMTZCaWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQotewotICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKLSAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSAweDA7Ci0gICAgICAgIGRlc3RpbmF0aW9uWzFdID0gMHgwOwotICAgICAgICBk
ZXN0aW5hdGlvblsyXSA9IDB4MDsKLSAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29s
b3IxNkJpZ1RvOChzb3VyY2VbMF0pOwotICAgICAgICBzb3VyY2UgKz0gMTsKLSAgICAgICAgZGVz
dGluYXRpb24gKz0gNDsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHVucGFjazxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4LCB1aW50OF90LCBmbG9h
dD4oY29uc3QgdWludDhfdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBp
eGVsc1BlclJvdykKIHsKICAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAyNTUu
MGY7CkBAIC0xMjM2LDI1ICsxMDIyLDEzIEBAIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lk
IHBhY2s8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRiwgR3JhcGhpY3NDCiBBTFdB
WVNfSU5MSU5FIGJvb2wgSGFzQWxwaGEoaW50IGZvcm1hdCkKIHsKICAgICByZXR1cm4gZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTgKLSAgICAgICAgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2TGl0dGxlCi0gICAgICAgIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkJpZwogICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGCiAgICAgICAgIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBOAogICAgICAgICB8fCBmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjgKLSAgICAgICAgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkExNkxpdHRsZQotICAgICAgICB8fCBmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2QmlnCi0gICAgICAgIHx8IGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSMTZMaXR0bGUKLSAgICAgICAg
fHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVIxNkJpZwogICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTMyRgogICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBOAotICAgICAg
ICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZMaXR0bGUK
LSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2
QmlnCiAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJH
UkE4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJH
UkExNkxpdHRsZQotICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRCR1JBMTZCaWcKICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QVJHQjgKLSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0QVJHQjE2TGl0dGxlCi0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdEFSR0IxNkJpZwogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRBQkdSOAogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMzJGCiAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0CkBAIC0xMjY0LDM1ICsxMDM4LDIxIEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBIYXNBbHBoYShpbnQgZm9ybWF0KQogQUxXQVlTX0lOTElORSBib29s
IEhhc0NvbG9yKGludCBmb3JtYXQpCiB7CiAgICAgcmV0dXJuIGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQkExNkxpdHRsZQotICAgICAgICB8fCBmb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBMTZCaWcKICAgICAgICAgfHwgZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTMyRgogICAgICAgICB8fCBmb3JtYXQg
PT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I4Ci0gICAgICAgIHx8IGZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2TGl0dGxlCi0gICAgICAgIHx8IGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2QmlnCiAgICAgICAgIHx8
IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRgogICAgICAgICB8
fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1I4CiAgICAgICAgIHx8
IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4Ci0gICAgICAgIHx8
IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkExNkxpdHRsZQotICAg
ICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBMTZCaWcK
ICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjgK
LSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjE2
TGl0dGxlCi0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dEFSR0IxNkJpZwogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRBQkdSOAogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFG
b3JtYXRSR0JBNTU1MQogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBNDQ0NAogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0I1NjUKICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UjgKLSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UjE2TGl0dGxlCi0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFIxNkJpZwogICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRSMzJGCiAgICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJBOAotICAgICAgICB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSQTE2TGl0dGxlCi0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJBMTZCaWcKICAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkEzMkYKLSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0QVI4Ci0gICAgICAgIHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdEFSMTZMaXR0bGUKLSAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0QVIxNkJpZzsKKyAgICAgICAgfHwgZm9ybWF0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVI4OwogfQogCiB0ZW1wbGF0ZTxpbnQgRm9ybWF0PgpA
QCAtMTMwOCwyNSArMTA2OCw5IEBAIHN0cnVjdCBJc0Zsb2F0Rm9ybWF0IHsKIHRlbXBsYXRlPGlu
dCBGb3JtYXQ+CiBzdHJ1Y3QgSXMxNmJwcEZvcm1hdCB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
VmFsdWUgPQotICAgICAgICBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0JBMTZMaXR0bGUKLSAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRh
Rm9ybWF0UkdCQTE2QmlnCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdFJHQjE2TGl0dGxlCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjE2QmlnCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdEJHUkExNkxpdHRsZQotICAgICAgICB8fCBGb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRCR1JBMTZCaWcKLSAgICAgICAgfHwgRm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjE2TGl0dGxlCi0gICAgICAgIHx8IEZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0IxNkJpZwotICAgICAgICB8
fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MQorICAgICAg
ICBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1MQogICAgICAg
ICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNDQ0NAotICAg
ICAgICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjUKLSAg
ICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2TGl0dGxl
Ci0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkJp
ZwotICAgICAgICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2
TGl0dGxlCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJBMTZCaWcKLSAgICAgICAgfHwgRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0QVIxNkxpdHRsZQotICAgICAgICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRBUjE2QmlnCi0gICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdEExNkxpdHRsZQotICAgICAgICB8fCBGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRBMTZCaWc7CisgICAgICAgIHx8IEZvcm1hdCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjU2NTsKIH07CiAKIHRlbXBsYXRlPGludCBGb3JtYXQsIGJvb2wg
SXNGbG9hdCA9IElzRmxvYXRGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWUsIGJvb2wgSXMxNmJwcCA9IElz
MTZicHBGb3JtYXQ8Rm9ybWF0Pjo6VmFsdWU+CkBAIC0xMzYwLDEwICsxMTA0LDYgQEAgQUxXQVlT
X0lOTElORSB1bnNpZ25lZCBUZXhlbEJ5dGVzRm9yRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0IGZvcm1hdCkKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0
UkdCQTU1NTE6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0
OgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0I1NjU6Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkxpdHRsZToKLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2QmlnOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRBMTZMaXR0bGU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdEExNkJpZzoKICAgICAgICAgcmV0dXJuIDI7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQjg6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdEJHUjg6CkBAIC0xMzcxLDI0ICsxMTExLDExIEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQg
VGV4ZWxCeXRlc0ZvckZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBmb3JtYXQp
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQkE4OgogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCODoKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0QUJHUjg6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFJBMTZMaXR0bGU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dFJBMTZCaWc6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkE4Ogog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMzJGOgogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBMzJGOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkRhdGFGb3JtYXRBUjE2TGl0dGxlOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRBUjE2QmlnOgogICAgICAgICByZXR1cm4gNDsKLSAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZMaXR0bGU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQjE2QmlnOgotICAgICAgICByZXR1cm4gNjsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkEzMkY6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdFJHQkExNkxpdHRsZToKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTE2QmlnOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3Jt
YXRCR1JBMTZMaXR0bGU6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJH
UkExNkJpZzoKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjE2TGl0
dGxlOgotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCMTZCaWc6CiAg
ICAgICAgIHJldHVybiA4OwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRS
R0IzMkY6CiAgICAgICAgIHJldHVybiAxMjsKQEAgLTE0MDksOCArMTEzNiw4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9uZW50cyA9IDQ7
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9IDQ7Ci0gICAg
ICAgIHVucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4
X3RbbV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqTWF4Qnl0ZXNQZXJDb21wb25lbnRd
KTsKLSAgICAgICAgQVNTRVJUKHVucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSk7Cisg
ICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gYWRvcHRBcnJheVB0cihuZXcg
dWludDhfdFttX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICpNYXhCeXRlc1BlckNvbXBv
bmVudF0pOworICAgICAgICBBU1NFUlQobV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0
KCkpOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZv
cm1hdCBzcmNGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGRzdEZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhT3ApOwpAQCAtMTQzMSw3ICsxMTU4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNvbnN0IGludCBtX3NyY1N0cmlk
ZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0gICAgT3duQXJyYXlQdHI8dWlu
dDhfdD4gdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOworICAgIE93bkFycmF5UHRyPHVpbnQ4
X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwogfTsKIAogdm9pZCBGb3JtYXRDb252
ZXJ0ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgc3JjRm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBkc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYU9wIGFscGhhT3ApCkBAIC0xNDUyLDI1ICsxMTc5LDkgQEAgdm9pZCBGb3JtYXRDb252
ZXJ0ZXI6OmNvbnZlcnQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgc3JjRm9ybWF0LCBH
cmFwaGljc0MKICAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjU2NSkKICAgICAgICAgICAgIEZPUk1BVENPTlZF
UlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjMyRikK
ICAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJHQkE4KQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0Vf
U1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2TGl0dGxlKQotICAg
ICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkdCQTE2QmlnKQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0Vf
U1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCMTZMaXR0bGUpCi0gICAg
ICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6
OkRhdGFGb3JtYXRSR0IxNkJpZykKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NS
Q0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEJHUkExNkxpdHRsZSkKLSAgICAg
ICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6
RGF0YUZvcm1hdEJHUkExNkJpZykKICAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NS
Q0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0I4KQotICAgICAgICAgICAg
Rk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0QVJHQjE2TGl0dGxlKQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9S
TUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjE2QmlnKQogICAgICAgICAgICAg
Rk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0QUJHUjgpCiAgICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUjgpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJU
RVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZMaXR0bGUp
Ci0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250
ZXh0M0Q6OkRhdGFGb3JtYXRSMTZCaWcpCi0gICAgICAgICAgICBGT1JNQVRDT05WRVJURVJfQ0FT
RV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2TGl0dGxlKQotICAg
ICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0UkExNkJpZykKLSAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NS
Q0ZPUk1BVChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSMTZMaXR0bGUpCi0gICAgICAg
ICAgICBGT1JNQVRDT05WRVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRBUjE2QmlnKQotICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9S
TUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2TGl0dGxlKQotICAgICAgICAgICAg
Rk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9y
bWF0QTE2QmlnKQogICAgICAgICAgICAgRk9STUFUQ09OVkVSVEVSX0NBU0VfU1JDRk9STUFUKEdy
YXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QkdSQTgpCiAgICAgICAgICAgICBGT1JNQVRDT05W
RVJURVJfQ0FTRV9TUkNGT1JNQVQoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0JBNTU1
MSkKICAgICAgICAgICAgIEZPUk1BVENPTlZFUlRFUl9DQVNFX1NSQ0ZPUk1BVChHcmFwaGljc0Nv
bnRleHQzRDo6RGF0YUZvcm1hdFJHQkE0NDQ0KQpAQCAtMTU4MCw4ICsxMjkxLDggQEAgQUxXQVlT
X0lOTElORSB2b2lkIEZvcm1hdENvbnZlcnRlcjo6Y29udmVydCgpCiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKCF0cml2aWFsVW5wYWNrICYmICF0cml2aWFsUGFjaykgewogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1faGVpZ2h0OyArK2kpIHsKLSAgICAgICAgICAgIHVucGFjazxT
cmNGb3JtYXQ+KHNyY1Jvd1N0YXJ0LCByZWludGVycHJldF9jYXN0PEludGVybWVkaWF0ZVNyY1R5
cGUqPih1bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBtX3dpZHRoKTsKLSAgICAg
ICAgICAgIHBhY2s8RHN0Rm9ybWF0LCBhbHBoYU9wPihyZWludGVycHJldF9jYXN0PEludGVybWVk
aWF0ZVNyY1R5cGUqPih1bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBkc3RSb3dT
dGFydCwgbV93aWR0aCk7CisgICAgICAgICAgICB1bnBhY2s8U3JjRm9ybWF0PihzcmNSb3dTdGFy
dCwgcmVpbnRlcnByZXRfY2FzdDxJbnRlcm1lZGlhdGVTcmNUeXBlKj4obV91bnBhY2tlZEludGVy
bWVkaWF0ZVNyY0RhdGEuZ2V0KCkpLCBtX3dpZHRoKTsKKyAgICAgICAgICAgIHBhY2s8RHN0Rm9y
bWF0LCBhbHBoYU9wPihyZWludGVycHJldF9jYXN0PEludGVybWVkaWF0ZVNyY1R5cGUqPihtX3Vu
cGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSksIGRzdFJvd1N0YXJ0LCBtX3dpZHRoKTsK
ICAgICAgICAgICAgIHNyY1Jvd1N0YXJ0ICs9IHNyY1N0cmlkZUluRWxlbWVudHM7CiAgICAgICAg
ICAgICBkc3RSb3dTdGFydCArPSBkc3RTdHJpZGVJbkVsZW1lbnRzOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAppbmRleCAzMzY5OTdmYmQ3ZjgzMzFkZTM1MzU3Nzc3YmUwNTdlMTVmN2Q0ODI4Li40ZTVkMTNi
ZTcxOTExM2NmYTkxNWMzNWVjZDg1YTkxYTdiYWFlNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM0LDYgKzM0
LDggQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01OTEs
MTIgKzU5Myw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkKiBwaXhlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKTsKIAotICAgIC8vIEZsaXBzIHRoZSBnaXZlbiBpbWFnZSBkYXRhIHZlcnRpY2FsbHks
IGluLXBsYWNlLgotICAgIHN0YXRpYyB2b2lkIGZsaXBWZXJ0aWNhbGx5KHZvaWQqIGltYWdlRGF0
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB1bnBhY2tBbGlnbm1lbnQpOwogCiAgICAgLy8gQXR0ZW1wdCB0byBlbnVt
ZXJhdGUgYWxsIHBvc3NpYmxlIG5hdGl2ZSBpbWFnZSBmb3JtYXRzIHRvCiAgICAgLy8gcmVkdWNl
IHRoZSBhbW91bnQgb2YgdGVtcG9yYXJ5IGFsbG9jYXRpb25zIGR1cmluZyB0ZXh0dXJlCkBAIC02
NDIsMTkgKzYzOCwxNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDaGVjayBpZiB0aGUgZm9ybWF0IGlz
IG9uZSBvZiB0aGUgZm9ybWF0cyBmcm9tIHRoZSBJbWFnZURhdGEgb3IgRE9NIGVsZW1lbnRzLgog
ICAgIC8vIFRoZSBmb3JtYXRzIGZyb20gSW1hZ2VEYXRhIGlzIGFsd2F5cyBSR0JBOC4KLSAgICAv
LyBUaGUgZm9ybWF0cyBmcm9tIERPTSBlbGVtZW50cyB2YXJ5IHdpdGggR3JhcGhpY3MgcG9ydHMu
IEl0IGNhbiBvbmx5IGJlIFJHQkE4IG9yIEJHUkE4IGZvciBub24tQ0cgcG9ydCB3aGlsZSBtdWNo
IG1vcmUgZm9yIENHIHBvcnQuCisgICAgLy8gVGhlIGZvcm1hdHMgZnJvbSBET00gZWxlbWVudHMg
dmFyeSB3aXRoIEdyYXBoaWNzIHBvcnRzLiBJdCBjYW4gb25seSBiZSBSR0JBOCBvciBCR1JBOCBm
b3Igbm9uLUNHIHBvcnQgd2hpbGUgYSBsaXR0bGUgbW9yZSBmb3IgQ0cgcG9ydC4KICAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIHNyY0Zvcm1hdENvbWVGcm9tRE9NRWxlbWVudE9ySW1hZ2VE
YXRhKERhdGFGb3JtYXQgU3JjRm9ybWF0KQogICAgIHsKICNpZiBVU0UoQ0cpCiAjaWYgQ1BVKEJJ
R19FTkRJQU4pCi0gICAgcmV0dXJuIFNyY0Zvcm1hdCA9PSBEYXRhRm9ybWF0UkdCQTggfHwgU3Jj
Rm9ybWF0ID09IERhdGFGb3JtYXRSR0JBMTZCaWcKLSAgICAgICAgfHwgU3JjRm9ybWF0ID09IERh
dGFGb3JtYXRBUkdCOCB8fCBTcmNGb3JtYXQgPT0gRGF0YUZvcm1hdEFSR0IxNkJpZwotICAgICAg
ICB8fCBTcmNGb3JtYXQgPT0gRGF0YUZvcm1hdFJHQjggfHwgU3JjRm9ybWF0ID09IERhdGFGb3Jt
YXRSR0IxNkJpZzsKKyAgICByZXR1cm4gU3JjRm9ybWF0ID09IERhdGFGb3JtYXRSR0JBOCB8fCBT
cmNGb3JtYXQgPT0gRGF0YUZvcm1hdEFSR0I4IHx8IFNyY0Zvcm1hdCA9PSBEYXRhRm9ybWF0UkdC
ODsKICNlbHNlCi0gICAgcmV0dXJuIFNyY0Zvcm1hdCA9PSBEYXRhRm9ybWF0QkdSQTggfHwgU3Jj
Rm9ybWF0ID09IERhdGFGb3JtYXRBUkdCMTZMaXR0bGUKLSAgICAgICAgfHwgU3JjRm9ybWF0ID09
IERhdGFGb3JtYXRBQkdSOCB8fCBTcmNGb3JtYXQgPT0gRGF0YUZvcm1hdFJHQkExNkxpdHRsZQot
ICAgICAgICB8fCBTcmNGb3JtYXQgPT0gRGF0YUZvcm1hdEJHUjggfHwgU3JjRm9ybWF0ID09IERh
dGFGb3JtYXRSR0IxNkxpdHRsZQotICAgICAgICB8fCBTcmNGb3JtYXQgPT0gRGF0YUZvcm1hdFJH
QkE4IHx8IFNyY0Zvcm1hdCA9PSBEYXRhRm9ybWF0UkdCODsKKyAgICAvLyBUaGF0IExJVFRMRV9F
TkRJQU4gY2FzZSBoYXMgbW9yZSBwb3NzaWJsZSBmb3JtYXRzIHRoYW4gQklHX0VORElBTiBjYXNl
IGlzIGJlY2F1c2Ugc29tZSBkZWNvZGVkIGltYWdlIGRhdGEgaXMgYWN0dWFsbHkgYmlnIGVuZGlh
bgorICAgIC8vIGV2ZW4gb24gbGl0dGxlIGVuZGlhbiBhcmNoaXRlY3R1cmVzLgorICAgIHJldHVy
biBTcmNGb3JtYXQgPT0gRGF0YUZvcm1hdEJHUkE4IHx8IFNyY0Zvcm1hdCA9PSBEYXRhRm9ybWF0
QUJHUjggfHwgU3JjRm9ybWF0ID09IERhdGFGb3JtYXRCR1I4CisgICAgICAgIHx8IFNyY0Zvcm1h
dCA9PSBEYXRhRm9ybWF0UkdCQTggfHwgU3JjRm9ybWF0ID09IERhdGFGb3JtYXRBUkdCOCB8fCBT
cmNGb3JtYXQgPT0gRGF0YUZvcm1hdFJHQjg7CiAjZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIFNy
Y0Zvcm1hdCA9PSBEYXRhRm9ybWF0QkdSQTggfHwgU3JjRm9ybWF0ID09IERhdGFGb3JtYXRSR0JB
ODsKQEAgLTk0MCw2ICs5MzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIENHSW1hZ2VSZWYgbV9jZ0lt
YWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CiAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOworICAgICAgICBPd25BcnJheVB0
cjx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CiAjZWxpZiBQTEFURk9STShRVCkKICAg
ICAgICAgUUltYWdlIG1fcXRJbWFnZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRl
eCA4MmZjNzY5MTk4MzQ0OWRhZDhjNDNhN2Y3YjlkNTFkZjUzNjA2ZThkLi4wNjI3ZDI2NjE4NDEx
OThhYThlM2EwNzNhYjNhOGQyZGZmNTM2Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKICNpbmNsdWRl
ICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNETkVPTi5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKIApAQCAtODks
NiArOTAsMjI5IEBAIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBnZXRTb3Vy
Y2VEYXRhRm9ybWF0KHVuc2lnbmVkIGNvbXBvbmVudHNQZXJQCiAgICAgcmV0dXJuIGZvcm1hdFRh
YmxlW2Zvcm1hdEJhc2VdWyhpczE2Qml0Rm9ybWF0ID8gMiA6IDApICsgKGJpZ0VuZGlhbiA/IDEg
OiAwKV07CiB9CiAKK25hbWVzcGFjZSB7Cit1aW50OF90IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84
KHVpbnQxNl90IHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA+PiA4OworfQorCit1aW50OF90
IGNvbnZlcnRDb2xvcjE2QmlnVG84KHVpbnQxNl90IHZhbHVlKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90Pih2YWx1ZSAmIDB4MDBGRik7Cit9CisKK3RlbXBsYXRlPGludCBmb3Jt
YXQsIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIERzdFR5cGU+CitBTFdBWVNfSU5MSU5F
IHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBOChjb25zdCBTb3VyY2VUeXBlKiwgRHN0VHlw
ZSosIHVuc2lnbmVkKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit0ZW1wbGF0
ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0MTZCaXRGb3JtYXRUb1JHQkE4PEdyYXBoaWNz
Q29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2TGl0dGxlLCB1aW50MTZfdCwgdWludDhfdD4oY29u
c3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
c1BlclJvdykKK3sKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgU0lNRDo6dW5w
YWNrT25lUm93T2ZSR0JBMTZMaXR0bGVUb1JHQkE4KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVs
c1BlclJvdyk7CisjZW5kaWYKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRs
ZVRvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2
TGl0dGxlVG84KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENv
bG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252
ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbM10pOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAg
ICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lO
TElORSB2b2lkIGNvbnZlcnQxNkJpdEZvcm1hdFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0M0Q6OkRh
dGFGb3JtYXRSR0JBMTZCaWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBk
ZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7CisgICAgICAg
IGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKKyAgICAg
ICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMl0pOworICAg
ICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVszXSk7Cisg
ICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30K
KwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JB
ODxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2TGl0dGxlLCB1aW50MTZfdCwgdWlu
dDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIHBpeGVsc1BlclJvdykKK3sKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAg
U0lNRDo6dW5wYWNrT25lUm93T2ZSR0IxNkxpdHRsZVRvUkdCQTgoc291cmNlLCBkZXN0aW5hdGlv
biwgcGl4ZWxzUGVyUm93KTsKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xv
cjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVy
dENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBj
b252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMl0pOworICAgICAgICBkZXN0aW5hdGlvblsz
XSA9IDB4RkY7CisgICAgICAgIHNvdXJjZSArPSAzOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0
OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0
Rm9ybWF0VG9SR0JBODxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2QmlnLCB1aW50
MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0
Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZl
cnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29u
dmVydENvbG9yMTZCaWdUbzgoc291cmNlWzJdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSAw
eEZGOworICAgICAgICBzb3VyY2UgKz0gMzsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIGNvbnZlcnQxNkJpdEZvcm1h
dFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRBUkdCMTZMaXR0bGUsIHVpbnQx
Nl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lD
UykKKyAgICBTSU1EOjp1bnBhY2tPbmVSb3dPZkFSR0IxNkxpdHRsZVRvUkdCQTgoc291cmNlLCBk
ZXN0aW5hdGlvbiwgcGl4ZWxzUGVyUm93KTsKKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKKyAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbM10pOworICAgICAgICBkZXN0
aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAg
IHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBODxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSR0IxNkJpZywgdWludDE2X3QsIHVpbnQ4X3Q+KGNv
bnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291
cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChz
b3VyY2VbMl0pOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84
KHNvdXJjZVszXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdU
bzgoc291cmNlWzBdKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0
MTZCaXRGb3JtYXRUb1JHQkE4PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UjE2TGl0dGxl
LCB1aW50MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBj
b252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsx
XSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0
aW9uWzJdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVz
dGluYXRpb25bM10gPSAweEZGOworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGlu
YXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gQUxXQVlTX0lOTElORSB2b2lkIGNv
bnZlcnQxNkJpdEZvcm1hdFRvUkdCQTg8R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSMTZC
aWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9
IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlv
blszXSA9IDB4RkY7CisgICAgICAgIHNvdXJjZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiAr
PSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2
Qml0Rm9ybWF0VG9SR0JBODxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZMaXR0bGUs
IHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0
aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7CisgICAgICAg
IHNvdXJjZSArPSAyOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBODxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJBMTZCaWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25z
dCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJj
ZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291
cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChz
b3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84
KHNvdXJjZVsxXSk7CisgICAgICAgIHNvdXJjZSArPSAyOworICAgICAgICBkZXN0aW5hdGlvbiAr
PSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2
Qml0Rm9ybWF0VG9SR0JBODxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSMTZMaXR0bGUs
IHVpbnQxNl90LCB1aW50OF90Pihjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNv
bnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOworICAgICAgICBkZXN0
aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAg
IHNvdXJjZSArPSAyOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordGVt
cGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBODxHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEFSMTZCaWcsIHVpbnQxNl90LCB1aW50OF90Pihjb25z
dCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxz
UGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJj
ZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291
cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChz
b3VyY2VbMV0pOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84
KHNvdXJjZVswXSk7CisgICAgICAgIHNvdXJjZSArPSAyOworICAgICAgICBkZXN0aW5hdGlvbiAr
PSA0OworICAgIH0KK30KKwordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHZvaWQgY29udmVydDE2
Qml0Rm9ybWF0VG9SR0JBODxHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkxpdHRsZSwg
dWludDE2X3QsIHVpbnQ4X3Q+KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gMHgw
OworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IDB4MDsKKyAgICAgICAgZGVzdGluYXRpb25bMl0g
PSAweDA7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgo
c291cmNlWzBdKTsKKyAgICAgICAgc291cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9uICs9
IDQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJTkUgdm9pZCBjb252ZXJ0MTZC
aXRGb3JtYXRUb1JHQkE4PEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QTE2QmlnLCB1aW50
MTZfdCwgdWludDhfdD4oY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSAweDA7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzFdID0gMHgwOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IDB4
MDsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2Vb
MF0pOworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAg
ICB9Cit9CisKK3ZvaWQgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBOChHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdCBzcmNGb3JtYXQsIGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3cpCit7CisjZGVmaW5lIENPTlZFUlQx
NkJJVEZPUk1BVFRPUkdCQTgoU3JjRm9ybWF0KSBcCisgICAgY2FzZSBTcmNGb3JtYXQ6IFwKKyAg
ICAgICAgcmV0dXJuIGNvbnZlcnQxNkJpdEZvcm1hdFRvUkdCQTg8U3JjRm9ybWF0Pihzb3VyY2Us
IGRlc3RpbmF0aW9uLCBwaXhlbHNQZXJSb3cpOworCisgICAgc3dpdGNoIChzcmNGb3JtYXQpIHsK
KyAgICAgICAgQ09OVkVSVDE2QklURk9STUFUVE9SR0JBOChHcmFwaGljc0NvbnRleHQzRDo6RGF0
YUZvcm1hdFIxNkxpdHRsZSkKKyAgICAgICAgQ09OVkVSVDE2QklURk9STUFUVE9SR0JBOChHcmFw
aGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFIxNkJpZykKKyAgICAgICAgQ09OVkVSVDE2QklURk9S
TUFUVE9SR0JBOChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdEExNkxpdHRsZSkKKyAgICAg
ICAgQ09OVkVSVDE2QklURk9STUFUVE9SR0JBOChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dEExNkJpZykKKyAgICAgICAgQ09OVkVSVDE2QklURk9STUFUVE9SR0JBOChHcmFwaGljc0NvbnRl
eHQzRDo6RGF0YUZvcm1hdFJBMTZMaXR0bGUpCisgICAgICAgIENPTlZFUlQxNkJJVEZPUk1BVFRP
UkdCQTgoR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSQTE2QmlnKQorICAgICAgICBDT05W
RVJUMTZCSVRGT1JNQVRUT1JHQkE4KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVIxNkxp
dHRsZSkKKyAgICAgICAgQ09OVkVSVDE2QklURk9STUFUVE9SR0JBOChHcmFwaGljc0NvbnRleHQz
RDo6RGF0YUZvcm1hdEFSMTZCaWcpCisgICAgICAgIENPTlZFUlQxNkJJVEZPUk1BVFRPUkdCQTgo
R3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXRSR0IxNkxpdHRsZSkKKyAgICAgICAgQ09OVkVS
VDE2QklURk9STUFUVE9SR0JBOChHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdFJHQjE2Qmln
KQorICAgICAgICBDT05WRVJUMTZCSVRGT1JNQVRUT1JHQkE4KEdyYXBoaWNzQ29udGV4dDNEOjpE
YXRhRm9ybWF0UkdCQTE2TGl0dGxlKQorICAgICAgICBDT05WRVJUMTZCSVRGT1JNQVRUT1JHQkE4
KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0UkdCQTE2QmlnKQorICAgICAgICBDT05WRVJU
MTZCSVRGT1JNQVRUT1JHQkE4KEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0QVJHQjE2TGl0
dGxlKQorICAgICAgICBDT05WRVJUMTZCSVRGT1JNQVRUT1JHQkE4KEdyYXBoaWNzQ29udGV4dDNE
OjpEYXRhRm9ybWF0QVJHQjE2QmlnKQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyN1bmRlZiBDT05WRVJUMTZCSVRGT1JNQVRUT1JHQkE4Cit9CisK
K30KKwogR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjp+SW1hZ2VFeHRyYWN0b3Io
KQogewogfQpAQCAtMjQ5LDcgKzQ3MywyNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAg
IH0KIAogICAgIG1faW1hZ2VTb3VyY2VVbnBhY2tBbGlnbm1lbnQgPSBzcmNVbnBhY2tBbGlnbm1l
bnQ7Ci0KKyAgICAvLyBVc2luZyBhIGJpdG1hcCBjb250ZXh0IGNyZWF0ZWQgYWNjb3JkaW5nIHRv
IGRlc3RpbmF0aW9uIGZvcm1hdCBhbmQgZHJhd2luZyB0aGUgQ0dJbWFnZSB0byB0aGUgYml0bWFw
IGNvbnRleHQgY2FuIGFsc28gZG8gdGhlIGZvcm1hdCBjb252ZXJzaW9uLAorICAgIC8vIGJ1dCBp
dCB3b3VsZCBwcmVtdWx0aXBseSB0aGUgYWxwaGEgY2hhbm5lbCBhcyBhIHNpZGUgZWZmZWN0Lgor
ICAgIC8vIFByZWZlciB0byBtYW5udWFsbHkgQ29udmVydCAxNmJpdCBwZXItY29tcG9uZW50IGZv
cm1hdHMgdG8gUkdCQTggZm9ybWF0cyBpbnN0ZWFkLgorICAgIGlmIChiaXRzUGVyQ29tcG9uZW50
ID09IDE2KSB7CisgICAgICAgIG1fZm9ybWFsaXplZFJHQkE4RGF0YSA9IGFkb3B0QXJyYXlQdHIo
bmV3IHVpbnQ4X3RbbV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDRdKTsKKyAgICAgICAg
Y29uc3QgdWludDE2X3QqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3Qq
PihtX2ltYWdlUGl4ZWxEYXRhKTsKKyAgICAgICAgdWludDhfdCogZGVzdGluYXRpb24gPSBtX2Zv
cm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCk7CisgICAgICAgIGNvbnN0IHB0cmRpZmZfdCBzcmNTdHJp
ZGVJbkVsZW1lbnRzID0gYnl0ZXNQZXJSb3cgLyBzaXplb2YodWludDE2X3QpOworICAgICAgICBj
b25zdCBwdHJkaWZmX3QgZHN0U3RyaWRlSW5FbGVtZW50cyA9IDQgKiBtX2ltYWdlV2lkdGg7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9MDsgaSA8IG1faW1hZ2VIZWlnaHQ7IGkrKykgeworICAg
ICAgICAgICAgY29udmVydDE2Qml0Rm9ybWF0VG9SR0JBOChtX2ltYWdlU291cmNlRm9ybWF0LCBz
b3VyY2UsIGRlc3RpbmF0aW9uLCBtX2ltYWdlV2lkdGgpOworICAgICAgICAgICAgc291cmNlICs9
IHNyY1N0cmlkZUluRWxlbWVudHM7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiArPSBkc3RTdHJp
ZGVJbkVsZW1lbnRzOworICAgICAgICB9CisgICAgICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihtX2Zvcm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCkpOwor
ICAgICAgICBtX2ltYWdlU291cmNlRm9ybWF0ID0gRGF0YUZvcm1hdFJHQkE4OworICAgICAgICBt
X2ltYWdlU291cmNlVW5wYWNrQWxpZ25tZW50ID0gMTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>