<?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>44793</bug_id>
          
          <creation_ts>2010-08-27 13:57:47 -0700</creation_ts>
          <short_desc>Move Shader class from platform/graphics/chromium to platform/graphics/gpu</short_desc>
          <delta_ts>2010-08-27 14:18:35 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>fishd</cc>
    
    <cc>sam</cc>
    
    <cc>senorblanco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270723</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-27 13:57:47 -0700</bug_when>
    <thetext>Move Shader class from platform/graphics/chromium to platform/graphics/gpu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270726</commentid>
    <comment_count>1</comment_count>
      <attachid>65763</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-27 13:59:10 -0700</bug_when>
    <thetext>Created attachment 65763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270729</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-27 14:02:07 -0700</bug_when>
    <thetext>Move this class over just like Texture.

One minor thing I added was making the shader program strings static.  Since they currently point to string literals the &quot;static&quot; keyword on the locals doesn&apos;t do much, but if we ever use another string type it will make a difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270734</commentid>
    <comment_count>3</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-27 14:06:14 -0700</bug_when>
    <thetext>Looks good to me.  Thanks for cleaning this up, James!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270736</commentid>
    <comment_count>4</comment_count>
      <attachid>65763</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-27 14:10:41 -0700</bug_when>
    <thetext>Comment on attachment 65763
Patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270743</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-27 14:18:35 -0700</bug_when>
    <thetext>Committed r66256: &lt;http://trac.webkit.org/changeset/66256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65763</attachid>
            <date>2010-08-27 13:59:10 -0700</date>
            <delta_ts>2010-08-27 14:10:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44793-20100827135908.patch</filename>
            <type>text/plain</type>
            <size>27072</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggNGNjNTliYmE1ZTVhZWRiOTZjM2Q0OWZiNGJjOGZiZDNhMTAyMmI1ZS4uNTEzZDU3N2Ri
MzAxMmUxZmQ2MjhhOTdlMGE2YTI3ZGIyMWFhYjhmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIyNjksOCArMjI2OSw2IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01lZGlh
UGxheWVyUHJpdmF0ZUNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsYXRmb3JtSWNvbi5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXIuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TaGFkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2ltcGxlRm9udERhdGFDaHJvbWl1bVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NpbXBsZUZvbnREYXRhTGludXguY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFuc3BhcmVuY3lXaW4uY3BwJywKQEAgLTIz
MDAsNiArMjI5OCwxMiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9T
aGFkZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhZGVyLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Tb2xpZEZpbGxTaGFkZXIuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU29saWRGaWxsU2hhZGVyLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXhTaGFkZXIuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4U2hhZGVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1RpbGluZ0RhdGEuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dMRVMyQ2FudmFzLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR0xFUzJDYW52YXMuY3BwCmluZGV4IDZmNTk0ZGYzOGViYjdkMjZjMDM2NTY4
Yzc3YmJkYzJhM2ZjNzBlZDUuLjgyZDRjMGIwMzNhMTRmOTFlNTY2ZjdiNGVlYTA4YjA2NjkyZWJi
ZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJD
YW52YXMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJD
YW52YXMuY3BwCkBAIC0zNiw3ICszNiw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNp
bmNsdWRlICJTaGFkZXIuaCIKKyNpbmNsdWRlICJTb2xpZEZpbGxTaGFkZXIuaCIKKyNpbmNsdWRl
ICJUZXhTaGFkZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlLmgiCiAKICNkZWZpbmUgX1VTRV9NQVRI
X0RFRklORVMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI1ZjI4OWYwNzUzMmM0MTFmOWY5ZWRl
MzBhYmUyN2VlMjgyODQ4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU2hhZGVyLmgiCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJD
b2xvci5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSB2
b2lkIGFmZmluZVRvM3gzKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBmbG9hdCBt
YXRbOV0pCi17Ci0gICAgbWF0WzBdID0gdHJhbnNmb3JtLmEoKTsKLSAgICBtYXRbMV0gPSB0cmFu
c2Zvcm0uYigpOwotICAgIG1hdFsyXSA9IDAuMGY7Ci0gICAgbWF0WzNdID0gdHJhbnNmb3JtLmMo
KTsKLSAgICBtYXRbNF0gPSB0cmFuc2Zvcm0uZCgpOwotICAgIG1hdFs1XSA9IDAuMGY7Ci0gICAg
bWF0WzZdID0gdHJhbnNmb3JtLmUoKTsKLSAgICBtYXRbN10gPSB0cmFuc2Zvcm0uZigpOwotICAg
IG1hdFs4XSA9IDEuMGY7Ci19Ci0KLVNoYWRlcjo6U2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX3Byb2dyYW0ocHJvZ3JhbSkKLXsKLX0KLQotU2hhZGVyOjp+U2hhZGVyKCkKLXsKLSAgICBt
X2NvbnRleHQtPmRlbGV0ZVByb2dyYW0obV9wcm9ncmFtKTsKLX0KLQotc3RhdGljIHVuc2lnbmVk
IGxvYWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHR5cGUsIGNv
bnN0IGNoYXIqIHNoYWRlclNvdXJjZSkKLXsKLSAgICB1bnNpZ25lZCBzaGFkZXIgPSBjb250ZXh0
LT5jcmVhdGVTaGFkZXIodHlwZSk7Ci0gICAgaWYgKCFzaGFkZXIpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgU3RyaW5nIHNoYWRlclNvdXJjZVN0cihzaGFkZXJTb3VyY2UpOwotICAgIGNvbnRl
eHQtPnNoYWRlclNvdXJjZShzaGFkZXIsIHNoYWRlclNvdXJjZVN0cik7Ci0gICAgY29udGV4dC0+
Y29tcGlsZVNoYWRlcihzaGFkZXIpOwotICAgIGludCBjb21waWxlU3RhdHVzOwotICAgIGNvbnRl
eHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVT
LCAmY29tcGlsZVN0YXR1cyk7Ci0gICAgaWYgKCFjb21waWxlU3RhdHVzKSB7Ci0gICAgICAgIFN0
cmluZyBpbmZvTG9nID0gY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOwotICAgICAg
ICBMT0dfRVJST1IoIiVzIiwgaW5mb0xvZy51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgY29udGV4
dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBy
ZXR1cm4gc2hhZGVyOwotfQotCi1zdGF0aWMgdW5zaWduZWQgbG9hZFByb2dyYW0oR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSwgY29uc3Qg
Y2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UpCi17Ci0gICAgdW5zaWduZWQgdmVydGV4U2hhZGVy
ID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwg
dmVydGV4U2hhZGVyU291cmNlKTsKLSAgICBpZiAoIXZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQs
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIGZyYWdtZW50U2hhZGVyU291cmNl
KTsKLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICB1bnNp
Z25lZCBwcm9ncmFtID0gY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOwotICAgIGlmICghcHJvZ3Jh
bSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0s
IHZlcnRleFNoYWRlcik7Ci0gICAgY29udGV4dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIGZyYWdt
ZW50U2hhZGVyKTsKLSAgICBjb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKLSAgICBpbnQg
bGlua1N0YXR1czsKLSAgICBjb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7Ci0gICAgaWYgKCFsaW5rU3RhdHVz
KQotICAgICAgICBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOwotICAgIGNvbnRleHQt
PmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwotICAgIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihm
cmFnbWVudFNoYWRlcik7Ci0gICAgcmV0dXJuIHByb2dyYW07Ci19Ci0KLVNvbGlkRmlsbFNoYWRl
cjo6U29saWRGaWxsU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBw
cm9ncmFtKQotICAgIDogU2hhZGVyKGNvbnRleHQsIHByb2dyYW0pCi17Ci0gICAgbV9tYXRyaXhM
b2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4Iik7
Ci0gICAgbV9jb2xvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJjb2xvciIpOwotICAgIG1fcG9zaXRpb25Mb2NhdGlvbiA9IGNvbnRleHQtPmdldEF0dHJp
YkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOwotfQotCi1UZXhTaGFkZXI6OlRleFNoYWRl
cihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKLSAgICA6IFNo
YWRlcihjb250ZXh0LCBwcm9ncmFtKQotewotICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOwotICAgIG1fdGV4TWF0cml4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJp
eCIpOwotICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiYWxwaGEiKTsKLSAgICBtX3Bvc2l0aW9uTG9jYXRpb24gPSBjb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKTsKLSAgICBtX3NhbXBsZXJMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic2FtcGxlciIpOwotfQot
Ci1QYXNzT3duUHRyPFNvbGlkRmlsbFNoYWRlcj4gU29saWRGaWxsU2hhZGVyOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCi17Ci0gICAgY29uc3QgY2hhciogdmVydGV4U2hhZGVy
U291cmNlID0gCi0gICAgICAgICAgICAidW5pZm9ybSBtYXQzIG1hdHJpeDtcbiIKLSAgICAgICAg
ICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICAgICAiYXR0cmlidXRlIHZlYzMg
cG9zaXRpb247XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAg
IiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQobWF0cml4ICogcG9zaXRpb24sIDEuMCk7XG4iCi0gICAg
ICAgICAgICAifVxuIjsKLSAgICBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0g
ICAgICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAidW5p
Zm9ybSBtYXQzIG1hdHJpeDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7XG4i
Ci0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAgIiAgICBnbF9GcmFn
Q29sb3IgPSBjb2xvcjtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotICAgIHVuc2lnbmVkIHByb2dy
YW0gPSBsb2FkUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hh
ZGVyU291cmNlKTsKLSAgICBpZiAoIXByb2dyYW0pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBuZXcgU29saWRGaWxsU2hhZGVyKGNvbnRleHQsIHByb2dyYW0pOwotfQotCi12b2lkIFNv
bGlkRmlsbFNoYWRlcjo6dXNlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25z
dCBDb2xvciYgY29sb3IpCi17Ci0gICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fcHJvZ3JhbSk7
Ci0KLSAgICBmbG9hdCByZ2JhWzRdOwotICAgIGNvbG9yLmdldFJHQkEocmdiYVswXSwgcmdiYVsx
XSwgcmdiYVsyXSwgcmdiYVszXSk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtNGYobV9jb2xvckxv
Y2F0aW9uLCByZ2JhWzBdICogcmdiYVszXSwgcmdiYVsxXSAqIHJnYmFbM10sIHJnYmFbMl0gKiBy
Z2JhWzNdLCByZ2JhWzNdKTsKLQotICAgIGZsb2F0IG1hdHJpeFs5XTsKLSAgICBhZmZpbmVUbzN4
Myh0cmFuc2Zvcm0sIG1hdHJpeCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KG1f
bWF0cml4TG9jYXRpb24sIGZhbHNlIC8qdHJhbnNwb3NlKi8sIG1hdHJpeCwgMSAvKmNvdW50Ki8p
OwotCi0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fcG9zaXRpb25Mb2NhdGlv
biwgMywgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgMCwgMCk7Ci0KLSAgICBtX2Nv
bnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fcG9zaXRpb25Mb2NhdGlvbik7Ci19Ci0K
LVBhc3NPd25QdHI8VGV4U2hhZGVyPiBUZXhTaGFkZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKLXsKLSAgICBjb25zdCBjaGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAg
ICAgICAidW5pZm9ybSBtYXQzIG1hdHJpeDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0MyB0ZXhN
YXRyaXg7XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcbiIKLSAgICAgICAg
InZhcnlpbmcgdmVjMyB0ZXhDb29yZDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgICB0ZXhDb29yZCA9IHRleE1hdHJpeCAqIHBvc2l0aW9uO1xuIgotICAgICAgICAi
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChtYXRyaXggKiBwb3NpdGlvbiwgMS4wKTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0gICAgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIy
RCBzYW1wbGVyO1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBoYTtcbiIKLSAgICAgICAg
InZhcnlpbmcgdmVjMyB0ZXhDb29yZDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc2FtcGxlciwgdGV4Q29vcmQueHkp
KiB2ZWM0KGFscGhhKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgdW5zaWduZWQgcHJvZ3JhbSA9
IGxvYWRQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IG5ldyBUZXhTaGFkZXIoY29udGV4dCwgcHJvZ3JhbSk7Ci19Ci0KLXZvaWQgVGV4U2hhZGVyOjp1
c2UoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdGV4VHJhbnNmb3JtLCBpbnQgc2FtcGxlciwgZmxvYXQgYWxwaGEpCi17Ci0gICAgbV9jb250
ZXh0LT51c2VQcm9ncmFtKG1fcHJvZ3JhbSk7Ci0gICAgZmxvYXQgbWF0cml4WzldOwotICAgIGFm
ZmluZVRvM3gzKHRyYW5zZm9ybSwgbWF0cml4KTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgzZnYobV9tYXRyaXhMb2NhdGlvbiwgZmFsc2UgLyp0cmFuc3Bvc2UqLywgbWF0cml4LCAxIC8q
Y291bnQqLyk7Ci0KLSAgICBmbG9hdCB0ZXhNYXRyaXhbOV07Ci0gICAgYWZmaW5lVG8zeDModGV4
VHJhbnNmb3JtLCB0ZXhNYXRyaXgpOwotICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdiht
X3RleE1hdHJpeExvY2F0aW9uLCBmYWxzZSAvKnRyYW5zcG9zZSovLCB0ZXhNYXRyaXgsIDEgLypj
b3VudCovKTsKLQotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fc2FtcGxlckxvY2F0aW9uLCBz
YW1wbGVyKTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihtX2FscGhhTG9jYXRpb24sIGFscGhh
KTsKLQotICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3Bvc2l0aW9uTG9jYXRp
b24sIDMsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAsIDApOwotCi0gICAgbV9j
b250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3Bvc2l0aW9uTG9jYXRpb24pOwotCi19
Ci0KLX0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYWRlci5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFkZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5YzUwYTcyNzA4ZTgzMWI5MGY1Y2NjYTk3NmE5MDc2MDZiZGNhZWYKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFkZXIuY3BwCkBAIC0wLDAgKzEs
MTExIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkZXIuaCIKKworI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gc3RhdGljCit2b2lkIFNoYWRlcjo6YWZmaW5lVG8zeDMoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGZsb2F0IG1hdFs5XSkKK3sKKyAgICBtYXRbMF0gPSB0cmFuc2Zvcm0uYSgp
OworICAgIG1hdFsxXSA9IHRyYW5zZm9ybS5iKCk7CisgICAgbWF0WzJdID0gMC4wZjsKKyAgICBt
YXRbM10gPSB0cmFuc2Zvcm0uYygpOworICAgIG1hdFs0XSA9IHRyYW5zZm9ybS5kKCk7CisgICAg
bWF0WzVdID0gMC4wZjsKKyAgICBtYXRbNl0gPSB0cmFuc2Zvcm0uZSgpOworICAgIG1hdFs3XSA9
IHRyYW5zZm9ybS5mKCk7CisgICAgbWF0WzhdID0gMS4wZjsKK30KKworLy8gc3RhdGljCit1bnNp
Z25lZCBTaGFkZXI6OmxvYWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIHR5cGUsIGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBzaGFk
ZXIgPSBjb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAgaWYgKCFzaGFkZXIpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgU3RyaW5nIHNoYWRlclNvdXJjZVN0cihzaGFkZXJTb3VyY2Up
OworICAgIGNvbnRleHQtPnNoYWRlclNvdXJjZShzaGFkZXIsIHNoYWRlclNvdXJjZVN0cik7Cisg
ICAgY29udGV4dC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpOworICAgIGludCBjb21waWxlU3RhdHVz
OworICAgIGNvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TVBJTEVfU1RBVFVTLCAmY29tcGlsZVN0YXR1cyk7CisgICAgaWYgKCFjb21waWxlU3RhdHVzKSB7
CisgICAgICAgIFN0cmluZyBpbmZvTG9nID0gY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFk
ZXIpOworICAgICAgICBMT0dfRVJST1IoIiVzIiwgaW5mb0xvZy51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICByZXR1cm4gc2hhZGVyOworfQorCisvLyBzdGF0aWMKK3Vuc2lnbmVkIFNoYWRl
cjo6bG9hZFByb2dyYW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHZl
cnRleFNoYWRlclNvdXJjZSwgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UpCit7Cisg
ICAgdW5zaWduZWQgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihjb250ZXh0LCBHcmFwaGljc0Nv
bnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291cmNlKTsKKyAgICBpZiAoIXZl
cnRleFNoYWRlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdW5zaWduZWQgZnJhZ21lbnRTaGFk
ZXIgPSBsb2FkU2hhZGVyKGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFE
RVIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKyAgICBpZiAoIWZyYWdtZW50U2hhZGVyKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICB1bnNpZ25lZCBwcm9ncmFtID0gY29udGV4dC0+Y3JlYXRlUHJv
Z3JhbSgpOworICAgIGlmICghcHJvZ3JhbSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY29udGV4
dC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgY29udGV4dC0+YXR0
YWNoU2hhZGVyKHByb2dyYW0sIGZyYWdtZW50U2hhZGVyKTsKKyAgICBjb250ZXh0LT5saW5rUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICBpbnQgbGlua1N0YXR1czsKKyAgICBjb250ZXh0LT5nZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTLCAmbGlua1N0YXR1
cyk7CisgICAgaWYgKCFsaW5rU3RhdHVzKQorICAgICAgICBjb250ZXh0LT5kZWxldGVQcm9ncmFt
KHByb2dyYW0pOworICAgIGNvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAg
IGNvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgcmV0dXJuIHByb2dy
YW07Cit9CisKK1NoYWRlcjo6U2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBwcm9ncmFtKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3Byb2dyYW0o
cHJvZ3JhbSkKK3sKK30KKworU2hhZGVyOjp+U2hhZGVyKCkKK3sKKyAgICBtX2NvbnRleHQtPmRl
bGV0ZVByb2dyYW0obV9wcm9ncmFtKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1NoYWRlci5oCnNpbWlsYXJpdHkgaW5kZXggNzElCmNvcHkgZnJvbSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlci5oCmNvcHkgdG8gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvU2hhZGVyLmgKaW5kZXggNWUwYzhjOTllNWM3OGMzZTE4ZTUxNTRlODEx
MTMwOGMwOTI1ZTkzNC4uZTViZDhkZTVhZjY5ZGJjM2Y2YWVlODdkZGY5OThkMWU5MTVjMzExYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXIuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFkZXIuaApAQCAtNDUsMzggKzQ1
LDE0IEBAIHByb3RlY3RlZDoKICAgICBTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCBwcm9ncmFtKTsKICAgICB+U2hhZGVyKCk7CiAKKyAgICBzdGF0aWMgdm9pZCBhZmZpbmVUbzN4
Myhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBmbG9hdCBtYXRbOV0pOworICAgIHN0YXRpYyB1bnNp
Z25lZCBsb2FkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdHlwZSwgY29uc3Qg
Y2hhciogc2hhZGVyU291cmNlKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgbG9hZFByb2dyYW0oR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGNvbnN0IGNo
YXIqIGZyYWdtZW50U2hhZGVyU291cmNlKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2Nv
bnRleHQ7CiAgICAgdW5zaWduZWQgbV9wcm9ncmFtOwogfTsKIAotY2xhc3MgU29saWRGaWxsU2hh
ZGVyIDogcHVibGljIFNoYWRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U29s
aWRGaWxsU2hhZGVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpOwotICAgIHZv
aWQgdXNlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBDb2xvciYgY29s
b3IpOwotCi1wcml2YXRlOgotICAgIFNvbGlkRmlsbFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSk7Ci0KLSAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsK
LSAgICBpbnQgbV9jb2xvckxvY2F0aW9uOwotICAgIGludCBtX3Bvc2l0aW9uTG9jYXRpb247Ci19
OwotCi1jbGFzcyBUZXhTaGFkZXIgOiBwdWJsaWMgU2hhZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxUZXhTaGFkZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCk7Ci0gICAgdm9pZCB1c2UoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdGV4VHJhbnNmb3JtLCBpbnQgc2FtcGxlciwgZmxvYXQgYWxwaGEp
OwotCi1wcml2YXRlOgotICAgIFRleFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgcHJvZ3JhbSk7Ci0KLSAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsKLSAgICBpbnQg
bV90ZXhNYXRyaXhMb2NhdGlvbjsKLSAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247Ci0gICAgaW50
IG1fYWxwaGFMb2NhdGlvbjsKLSAgICBpbnQgbV9wb3NpdGlvbkxvY2F0aW9uOwotfTsKLQogfQog
CiAjZW5kaWYgLy8gU2hhZGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1NvbGlkRmlsbFNoYWRlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9Tb2xpZEZpbGxTaGFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiYzQ3OTI0OWQ4YjQwZjRhZDM2ZTlj
NzdiMDQxMDdlM2U2NTQ2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9Tb2xpZEZpbGxTaGFkZXIuY3BwCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNvbGlkRmlsbFNoYWRlci5oIgorCisjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NvbGlkRmlsbFNoYWRlcjo6U29saWRGaWxsU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQorICAgIDogU2hhZGVyKGNvbnRleHQsIHByb2dy
YW0pCit7CisgICAgbV9tYXRyaXhMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAibWF0cml4Iik7CisgICAgbV9jb2xvckxvY2F0aW9uID0gY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOworICAgIG1fcG9zaXRpb25Mb2NhdGlv
biA9IGNvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOworfQor
CitQYXNzT3duUHRyPFNvbGlkRmlsbFNoYWRlcj4gU29saWRGaWxsU2hhZGVyOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHZlcnRl
eFNoYWRlclNvdXJjZSA9CisgICAgICAgICAgICAidW5pZm9ybSBtYXQzIG1hdHJpeDtcbiIKKyAg
ICAgICAgICAgICJ1bmlmb3JtIHZlYzQgY29sb3I7XG4iCisgICAgICAgICAgICAiYXR0cmlidXRl
IHZlYzMgcG9zaXRpb247XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgorICAgICAg
ICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQobWF0cml4ICogcG9zaXRpb24sIDEuMCk7XG4i
CisgICAgICAgICAgICAifVxuIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPQorICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAg
ICAgICAgICAgInVuaWZvcm0gbWF0MyBtYXRyaXg7XG4iCisgICAgICAgICAgICAidW5pZm9ybSB2
ZWM0IGNvbG9yO1xuIgorICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKKyAgICAgICAgICAg
ICIgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCisgICAgICAgICAgICAifVxuIjsKKyAgICB1
bnNpZ25lZCBwcm9ncmFtID0gbG9hZFByb2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVyU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7CisgICAgaWYgKCFwcm9ncmFtKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbmV3IFNvbGlkRmlsbFNoYWRlcihjb250ZXh0LCBwcm9ncmFtKTsK
K30KKwordm9pZCBTb2xpZEZpbGxTaGFkZXI6OnVzZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1fY29udGV4dC0+dXNlUHJvZ3Jh
bShtX3Byb2dyYW0pOworCisgICAgZmxvYXQgcmdiYVs0XTsKKyAgICBjb2xvci5nZXRSR0JBKHJn
YmFbMF0sIHJnYmFbMV0sIHJnYmFbMl0sIHJnYmFbM10pOworICAgIG1fY29udGV4dC0+dW5pZm9y
bTRmKG1fY29sb3JMb2NhdGlvbiwgcmdiYVswXSAqIHJnYmFbM10sIHJnYmFbMV0gKiByZ2JhWzNd
LCByZ2JhWzJdICogcmdiYVszXSwgcmdiYVszXSk7CisKKyAgICBmbG9hdCBtYXRyaXhbOV07Cisg
ICAgYWZmaW5lVG8zeDModHJhbnNmb3JtLCBtYXRyaXgpOworICAgIG1fY29udGV4dC0+dW5pZm9y
bU1hdHJpeDNmdihtX21hdHJpeExvY2F0aW9uLCBmYWxzZSAvKnRyYW5zcG9zZSovLCBtYXRyaXgs
IDEgLypjb3VudCovKTsKKworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3Bv
c2l0aW9uTG9jYXRpb24sIDMsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAsIDAp
OworCisgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3Bvc2l0aW9uTG9j
YXRpb24pOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU29saWRGaWxs
U2hhZGVyLmgKc2ltaWxhcml0eSBpbmRleCA3MSUKY29weSBmcm9tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyLmgKY29weSB0byBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9Tb2xpZEZpbGxTaGFkZXIuaAppbmRleCA1ZTBjOGM5OWU1Yzc4YzNlMThlNTE1NGU4
MTExMzA4YzA5MjVlOTM0Li4xMDcxZTczOTI1ZmVhNGExMTYxMTUwYWE3YjkyOTg5MzQ0YWYyNDVj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlci5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NvbGlkRmlsbFNoYWRlci5oCkBA
IC0yOCwyNyArMjgsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTaGFkZXJf
aAotI2RlZmluZSBTaGFkZXJfaAorI2lmbmRlZiBTb2xpZEZpbGxTaGFkZXJfaAorI2RlZmluZSBT
b2xpZEZpbGxTaGFkZXJfaAogCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlICJTaGFkZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQz
RDsKLWNsYXNzIENvbG9yOwotCi1jbGFzcyBTaGFkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewot
cHJvdGVjdGVkOgotICAgIFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dy
YW0pOwotICAgIH5TaGFkZXIoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7
Ci0gICAgdW5zaWduZWQgbV9wcm9ncmFtOwotfTsKLQogY2xhc3MgU29saWRGaWxsU2hhZGVyIDog
cHVibGljIFNoYWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U29saWRGaWxs
U2hhZGVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpOwpAQCAtNjIsMjEgKzQ4
LDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9wb3NpdGlvbkxvY2F0aW9uOwogfTsKIAotY2xhc3Mg
VGV4U2hhZGVyIDogcHVibGljIFNoYWRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8VGV4U2hhZGVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpOwotICAgIHZv
aWQgdXNlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRleFRyYW5zZm9ybSwgaW50IHNhbXBsZXIsIGZsb2F0IGFscGhhKTsKLQotcHJpdmF0
ZToKLSAgICBUZXhTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHBy
b2dyYW0pOwotCi0gICAgaW50IG1fbWF0cml4TG9jYXRpb247Ci0gICAgaW50IG1fdGV4TWF0cml4
TG9jYXRpb247Ci0gICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOwotICAgIGludCBtX2FscGhhTG9j
YXRpb247Ci0gICAgaW50IG1fcG9zaXRpb25Mb2NhdGlvbjsKLX07Ci0KIH0KIAotI2VuZGlmIC8v
IFNoYWRlcl9oCisjZW5kaWYgLy8gU29saWRGaWxsU2hhZGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleFNoYWRlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXhTaGFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhM2VjZGRhMjM1YjljMGIy
MzAzYTA4MWZkMDM0ZmU0NDYyYTVkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXhTaGFkZXIuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleFNoYWRlci5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXhTaGFkZXI6OlRleFNoYWRl
cihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKKyAgICA6IFNo
YWRlcihjb250ZXh0LCBwcm9ncmFtKQoreworICAgIG1fbWF0cml4TG9jYXRpb24gPSBjb250ZXh0
LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpOworICAgIG1fdGV4TWF0cml4
TG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJp
eCIpOworICAgIG1fYWxwaGFMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiYWxwaGEiKTsKKyAgICBtX3Bvc2l0aW9uTG9jYXRpb24gPSBjb250ZXh0LT5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKTsKKyAgICBtX3NhbXBsZXJMb2NhdGlv
biA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAic2FtcGxlciIpOworfQor
CitQYXNzT3duUHRyPFRleFNoYWRlcj4gVGV4U2hhZGVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJj
ZSA9CisgICAgICAgICJ1bmlmb3JtIG1hdDMgbWF0cml4O1xuIgorICAgICAgICAidW5pZm9ybSBt
YXQzIHRleE1hdHJpeDtcbiIKKyAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuIgor
ICAgICAgICAidmFyeWluZyB2ZWMzIHRleENvb3JkO1xuIgorICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgorICAgICAgICAiICAgIHRleENvb3JkID0gdGV4TWF0cml4ICogcG9zaXRpb247XG4iCisg
ICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KG1hdHJpeCAqIHBvc2l0aW9uLCAxLjApO1xu
IgorICAgICAgICAifVxuIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPQorICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgICAgICJ1
bmlmb3JtIHNhbXBsZXIyRCBzYW1wbGVyO1xuIgorICAgICAgICAidW5pZm9ybSBmbG9hdCBhbHBo
YTtcbiIKKyAgICAgICAgInZhcnlpbmcgdmVjMyB0ZXhDb29yZDtcbiIKKyAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKKyAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc2FtcGxl
ciwgdGV4Q29vcmQueHkpKiB2ZWM0KGFscGhhKTtcbiIKKyAgICAgICAgIn1cbiI7CisgICAgdW5z
aWduZWQgcHJvZ3JhbSA9IGxvYWRQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlclNvdXJjZSwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOworICAgIGlmICghcHJvZ3JhbSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG5ldyBUZXhTaGFkZXIoY29udGV4dCwgcHJvZ3JhbSk7Cit9CisKK3Zv
aWQgVGV4U2hhZGVyOjp1c2UoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdGV4VHJhbnNmb3JtLCBpbnQgc2FtcGxlciwgZmxvYXQgYWxwaGEp
Cit7CisgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fcHJvZ3JhbSk7CisgICAgZmxvYXQgbWF0
cml4WzldOworICAgIGFmZmluZVRvM3gzKHRyYW5zZm9ybSwgbWF0cml4KTsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzZnYobV9tYXRyaXhMb2NhdGlvbiwgZmFsc2UgLyp0cmFuc3Bvc2Uq
LywgbWF0cml4LCAxIC8qY291bnQqLyk7CisKKyAgICBmbG9hdCB0ZXhNYXRyaXhbOV07CisgICAg
YWZmaW5lVG8zeDModGV4VHJhbnNmb3JtLCB0ZXhNYXRyaXgpOworICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDNmdihtX3RleE1hdHJpeExvY2F0aW9uLCBmYWxzZSAvKnRyYW5zcG9zZSovLCB0
ZXhNYXRyaXgsIDEgLypjb3VudCovKTsKKworICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fc2Ft
cGxlckxvY2F0aW9uLCBzYW1wbGVyKTsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihtX2FscGhh
TG9jYXRpb24sIGFscGhhKTsKKworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlciht
X3Bvc2l0aW9uTG9jYXRpb24sIDMsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAs
IDApOworCisgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3Bvc2l0aW9u
TG9jYXRpb24pOworCit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2hhZGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXhT
aGFkZXIuaApzaW1pbGFyaXR5IGluZGV4IDc0JQpyZW5hbWUgZnJvbSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlci5oCnJlbmFtZSB0byBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXhTaGFkZXIuaAppbmRleCA1ZTBjOGM5OWU1Yzc4YzNlMThlNTE1NGU4MTEx
MzA4YzA5MjVlOTM0Li41MzU5OTdkNTVlOTYwNjE2ZmYxNTZlY2VkMDFiZTVkNWRlOWNhMDdmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlci5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleFNoYWRlci5oCkBAIC0yOCw0MCAr
MjgsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTaGFkZXJfaAotI2RlZmlu
ZSBTaGFkZXJfaAorI2lmbmRlZiBUZXhTaGFkZXJfaAorI2RlZmluZSBUZXhTaGFkZXJfaAogCi0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNpbmNsdWRlICJTaGFkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBZmZp
bmVUcmFuc2Zvcm07Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIENvbG9yOwotCi1j
bGFzcyBTaGFkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHJvdGVjdGVkOgotICAgIFNoYWRl
cihHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOwotICAgIH5TaGFkZXIoKTsK
LQotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgdW5zaWduZWQgbV9wcm9n
cmFtOwotfTsKLQotY2xhc3MgU29saWRGaWxsU2hhZGVyIDogcHVibGljIFNoYWRlciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiBjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpOwotICAgIHZvaWQgdXNlKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zdCBDb2xvciYgY29sb3IpOwotCi1wcml2YXRlOgotICAgIFNvbGlk
RmlsbFNoYWRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSk7
Ci0KLSAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsKLSAgICBpbnQgbV9jb2xvckxvY2F0aW9uOwot
ICAgIGludCBtX3Bvc2l0aW9uTG9jYXRpb247Ci19OwotCiBjbGFzcyBUZXhTaGFkZXIgOiBwdWJs
aWMgU2hhZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxUZXhTaGFkZXI+IGNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCk7CkBAIC03OSw0ICs1Miw0IEBAIHByaXZh
dGU6CiAKIH0KIAotI2VuZGlmIC8vIFNoYWRlcl9oCisjZW5kaWYgLy8gVGV4U2hhZGVyX2gK
</data>
<flag name="review"
          id="54625"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>