<?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>23214</bug_id>
          
          <creation_ts>2009-01-09 14:02:59 -0800</creation_ts>
          <short_desc>Upstream platform/network/chromium/</short_desc>
          <delta_ts>2009-01-09 14:12:27 -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>Platform</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="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105057</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-09 14:02:59 -0800</bug_when>
    <thetext>Upstream platform/network/chromium/

From here:
http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/WebKit/WebCore/platform/network/chromium/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105058</commentid>
    <comment_count>1</comment_count>
      <attachid>26575</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-09 14:08:31 -0800</bug_when>
    <thetext>Created attachment 26575
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105059</commentid>
    <comment_count>2</comment_count>
      <attachid>26575</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 14:09:31 -0800</bug_when>
    <thetext>Comment on attachment 26575
v1 patch

Looks great!  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105060</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-01-09 14:12:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/39760</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26575</attachid>
            <date>2009-01-09 14:08:31 -0800</date>
            <delta_ts>2009-01-09 14:09:31 -0800</delta_ts>
            <desc>v1 patch</desc>
            <filename>net_1.diff</filename>
            <type>text/plain</type>
            <size>29738</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5NzU5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMDEt
MDkgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMyMTQKKyAgICAgICAgVXBzdHJlYW0gcGxhdGZvcm0vbmV0d29yay9jaHJv
bWl1bS8KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OnNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNocm9taXVtLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1D
b21wYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNo
cm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0VuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vRE5TQ2hyb21pdW0uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5TKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2Nocm9taXVtL05ldHdvcmtTdGF0ZU5vdGlmaWVyQ2hyb21pdW0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6TmV0d29ya1N0YXRlTm90
aWZpZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vTmV0d29ya1N0YXRl
Tm90aWZpZXJQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hyb21p
dW0vUmVzb3VyY2VSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0OjopOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpmcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6c2V0VGFyZ2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OnRhcmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0OjpvcmlnaW5QaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRPcmlnaW5QaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZWN1cml0
eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRTZWN1cml0eUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3Jt
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291
cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291
cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6Z2V0U2Vj
dXJpdHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldFNlY3Vy
aXR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjppc0NvbnRlbnRG
aWx0ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXRJc0NvbnRl
bnRGaWx0ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1VwZGF0
ZVJlc291cmNlUmVzcG9uc2UpOgorCiAyMDA5LTAxLTA5ICBQZXRlciBLYXN0aW5nICA8cGthc3Rp
bmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBHb29nbGUsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKworI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKKworICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7CisgICAgcHVi
bGljOgorICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CisgICAgICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRp
YWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisKKyAgICAgICAg
UmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSGFu
ZGxlLmdldCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VCYXNlOworICAgICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBh
cmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOworCisgICAgICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9zb3VyY2VIYW5k
bGU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IHBs
YXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDaHJvbWl1bS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUNocm9taXVtLmNwcAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsv
Y2hyb21pdW0vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQoreworICAgIHJldHVy
biB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBwbGF0Zm9ybS9uZXR3
b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAkocmV2aXNpb24gMCkKKysr
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
b29raWVKYXIuaCIKKworI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHNldENvb2tpZXMoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHBvbGljeVVSTCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICAvLyBXZSBpZ25vcmUgdGhlIHBvbGljeVVSTCBhbmQg
Y29tcHV0ZSBpdCBkaXJlY3RseSBvdXJzZWx2ZXMgdG8gZW5zdXJlCisgICAgLy8gY29uc2lzdGVu
Y3kgd2l0aCB0aGUgY29va2llcygpIG1ldGhvZCBiZWxvdy4KKyAgICBDaHJvbWl1bUJyaWRnZTo6
c2V0Q29va2llcyh1cmwsIGRvY3VtZW50LT5wb2xpY3lCYXNlVVJMKCksIHZhbHVlKTsKK30KKwor
U3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwp
Cit7CisgICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpjb29raWVzKHVybCwgZG9jdW1lbnQtPnBv
bGljeUJhc2VVUkwoKSk7Cit9CisKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQq
KQoreworICAgIC8vIEZJWE1FOiBGb3Igbm93IGp1c3QgYXNzdW1lIGNvb2tpZXMgYXJlIGFsd2F5
cyBvbi4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9ETlNDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9ETlNDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDAp
CisrKyBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0ROU0Nocm9taXVtLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFj
a3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJETlMuaCIKKworI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQoreworICAgIENocm9taXVtQnJpZGdlOjpwcmVmZXRjaEROUyhob3N0bmFtZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
TmV0d29ya1N0YXRlTm90aWZpZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9OZXR3b3JrU3RhdGVOb3RpZmllckNocm9taXVtLmNwcAkocmV2aXNp
b24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vTmV0d29ya1N0YXRlTm90aWZpZXJD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gQ2hyb21pdW0gZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBuZXR3b3Jr
IHN0YXRlIG5vdGlmaWNhdGlvbnMuIFRoaXMgY2F1c2VzCisvLyBhbiBleHRyYSBETEwgdG8gZ2V0
IGxvYWRlZCBpbnRvIHRoZSByZW5kZXJlciB3aGljaCBjYW4gc2xvdyB0aGluZ3MgZG93biBhCisv
LyBiaXQuIFdlIG1heSB3YW50IGFuIGFsdGVybmF0ZSBkZXNpZ24uCisKK3ZvaWQgTmV0d29ya1N0
YXRlTm90aWZpZXI6OnVwZGF0ZVN0YXRlKCkKK3sKK30KKworTmV0d29ya1N0YXRlTm90aWZpZXI6
Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKKyAgICA6IG1faXNPbkxpbmUodHJ1ZSkKKyAgICAsIG1f
bmV0d29ya1N0YXRlQ2hhbmdlZEZ1bmN0aW9uKDApCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vTmV0d29ya1N0YXRlTm90aWZp
ZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9OZXR3
b3JrU3RhdGVOb3RpZmllclByaXZhdGUuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdv
cmsvY2hyb21pdW0vTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlX2gK
KyNkZWZpbmUgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlX2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgc3RydWN0IE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZSB7fTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbmV0d29yay9j
aHJvbWl1bS9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR29vZ2xlLCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgUmVzb3VyY2VFcnJvcl9oCisjZGVmaW5lIFJlc291cmNlRXJyb3JfaAorCisjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZSB7CisgICAgcHVibGlj
OgorICAgICAgICBSZXNvdXJjZUVycm9yKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
KQorICAgICAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFp
bGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlRXJyb3JCYXNlOworICAg
IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBwbGF0Zm9ybS9u
ZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDApCisrKyBwbGF0
Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBT
YW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCBHb29nbGUsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAorI2RlZmlu
ZSBSZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
RnJhbWU7CisKKyAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVzb3VyY2VSZXF1
ZXN0QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIFRhcmdldFR5cGUgeworICAgICAg
ICAgICAgVGFyZ2V0SXNNYWluRnJhbWUsCisgICAgICAgICAgICBUYXJnZXRJc1N1YkZyYW1lLAor
ICAgICAgICAgICAgVGFyZ2V0SXNTdWJSZXNvdXJjZSwKKyAgICAgICAgICAgIFRhcmdldElzT2Jq
ZWN0LAorICAgICAgICAgICAgVGFyZ2V0SXNNZWRpYQorICAgICAgICB9OworCisgICAgICAgIFJl
c291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkgCisgICAgICAgICAgICA6IFJlc291cmNl
UmVxdWVzdEJhc2UoS1VSTCh1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAg
ICAgLCBtX2ZyYW1lKDApCisgICAgICAgICAgICAsIG1fb3JpZ2luUGlkKDApCisgICAgICAgICAg
ICAsIG1fdGFyZ2V0VHlwZShUYXJnZXRJc1N1YlJlc291cmNlKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBDU3Ry
aW5nJiBzZWN1cml0eUluZm8pIAorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVy
bCwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgICwgbV9mcmFtZSgwKQorICAg
ICAgICAgICAgLCBtX29yaWdpblBpZCgwKQorICAgICAgICAgICAgLCBtX3RhcmdldFR5cGUoVGFy
Z2V0SXNTdWJSZXNvdXJjZSkKKyAgICAgICAgICAgICwgbV9zZWN1cml0eUluZm8oc2VjdXJpdHlJ
bmZvKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29u
c3QgS1VSTCYgdXJsKSAKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICAsIG1fZnJhbWUoMCkKKyAgICAgICAg
ICAgICwgbV9vcmlnaW5QaWQoMCkKKyAgICAgICAgICAgICwgbV90YXJnZXRUeXBlKFRhcmdldElz
U3ViUmVzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVx
dWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQorICAgICAgICAgICAgLCBt
X2ZyYW1lKDApCisgICAgICAgICAgICAsIG1fb3JpZ2luUGlkKDApCisgICAgICAgICAgICAsIG1f
dGFyZ2V0VHlwZShUYXJnZXRJc1N1YlJlc291cmNlKQorICAgICAgICB7CisgICAgICAgICAgICBz
ZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QoKQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwo
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgICwgbV9mcmFtZSgwKQorICAg
ICAgICAgICAgLCBtX29yaWdpblBpZCgwKQorICAgICAgICAgICAgLCBtX3RhcmdldFR5cGUoVGFy
Z2V0SXNTdWJSZXNvdXJjZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgLy8gUHJv
dmlkZXMgY29udGV4dCBmb3IgdGhlIHJlc291cmNlIHJlcXVlc3QuCisgICAgICAgIEZyYW1lKiBm
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKyAgICAgICAgdm9pZCBzZXRGcmFtZShG
cmFtZSogZnJhbWUpIHsgbV9mcmFtZSA9IGZyYW1lOyB9CisKKyAgICAgICAgLy8gV2hhdCB0aGlz
IHJlcXVlc3QgaXMgZm9yLgorICAgICAgICB2b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSB0
eXBlKSB7IG1fdGFyZ2V0VHlwZSA9IHR5cGU7IH0KKyAgICAgICAgVGFyZ2V0VHlwZSB0YXJnZXRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRUeXBlOyB9CisgICAgICAgIAorICAgICAgICAv
LyBUaGUgb3JpZ2luIHBpZCBpcyB0aGUgcHJvY2VzcyBpZCBvZiB0aGUgcHJvY2VzcyBmcm9tIHdo
aWNoIHRoaXMKKyAgICAgICAgLy8gcmVxdWVzdCBvcmlnaW5hdGVkLiBJbiB0aGUgY2FzZSBvZiBv
dXQtb2YtcHJvY2VzcyBwbHVnaW5zLCB0aGlzCisgICAgICAgIC8vIGFsbG93cyB0byBsaW5rIGJh
Y2sgdGhlIHJlcXVlc3QgdG8gdGhlIHBsdWdpbiBwcm9jZXNzIChhcyBpdCBpcworICAgICAgICAv
LyBwcm9jZXNzZWQgdGhyb3VnaCBhIHJlbmRlciB2aWV3IHByb2Nlc3MpLgorICAgICAgICBpbnQg
b3JpZ2luUGlkKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5QaWQ7IH0KKyAgICAgICAgdm9pZCBz
ZXRPcmlnaW5QaWQoaW50IG9yaWdpblBpZCkgeyBtX29yaWdpblBpZCA9IG9yaWdpblBpZDsgfQor
CisgICAgICAgIC8vIE9wYXF1ZSBidWZmZXIgdGhhdCBkZXNjcmliZXMgdGhlIHNlY3VyaXR5IHN0
YXRlIChpbmNsdWRpbmcgU1NMCisgICAgICAgIC8vIGNvbm5lY3Rpb24gc3RhdGUpIGZvciB0aGUg
cmVzb3VyY2UgdGhhdCBzaG91bGQgYmUgcmVwb3J0ZWQgd2hlbiB0aGUKKyAgICAgICAgLy8gcmVz
b3VyY2UgaGFzIGJlZW4gbG9hZGVkLiAgVGhpcyBpcyB1c2VkIHRvIHNpbXVsYXRlIHNlY3VyZQor
ICAgICAgICAvLyBjb25uZWN0aW9uIGZvciByZXF1ZXN0ICh0eXBpY2FsbHkgd2hlbiBzaG93aW5n
IGVycm9yIHBhZ2UsIHNvIHRoZQorICAgICAgICAvLyBlcnJvciBwYWdlIGhhcyB0aGUgZXJyb3Jz
IG9mIHRoZSBwYWdlIHRoYXQgYWN0dWFsbHkgZmFpbGVkKS4gIEVtcHR5CisgICAgICAgIC8vIHN0
cmluZyBpZiBub3QgYSBzZWN1cmUgY29ubmVjdGlvbi4KKyAgICAgICAgQ1N0cmluZyBzZWN1cml0
eUluZm8oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5SW5mbzsgfQorICAgICAgICB2b2lkIHNl
dFNlY3VyaXR5SW5mbyhjb25zdCBDU3RyaW5nJiB2YWx1ZSkgeyBtX3NlY3VyaXR5SW5mbyA9IHZh
bHVlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0QmFzZTsKKworICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkge30KKyAg
ICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9CisKKyAgICAgICAgRnJhbWUq
IG1fZnJhbWU7CisgICAgICAgIGludCBtX29yaWdpblBpZDsKKyAgICAgICAgVGFyZ2V0VHlwZSBt
X3RhcmdldFR5cGU7CisgICAgICAgIENTdHJpbmcgbV9zZWN1cml0eUluZm87CisgICAgfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsv
Y2hyb21pdW0vUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdv
cmsvY2hyb21pdW0vUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAzOTc1OSkKKysrIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDgzICsxLDgxIEBACi0gLyoKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDggR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICAqCi0gICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gICogYXJlIG1ldDoKLSAgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICAqCi0g
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAg
Ki8KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR29vZ2xlLCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CiAKICNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZV9oCiAjZGVmaW5lIFJlc291cmNlUmVzcG9uc2Vf
aAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNl
LmgiCi0KICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2VCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVzb3VyY2VSZXNw
b25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgUmVzb3Vy
Y2VSZXNwb25zZSgpCi0gICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoKSwKLSAgICAgICAg
ICBtX2lzQ29udGVudEZpbHRlcmVkKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZXNvdXJj
ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBs
b25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUpCi0gICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBt
aW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKSwKLSAg
ICAgICAgICBtX2lzQ29udGVudEZpbHRlcmVkKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBj
b25zdCBDU3RyaW5nJiBnZXRTZWN1cml0eUluZm8oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5
SW5mbzsgfQotICAgIHZvaWQgc2V0U2VjdXJpdHlJbmZvKGNvbnN0IENTdHJpbmcmIHNlY3VyaXR5
SW5mbykKLSAgICB7Ci0gICAgICAgIG1fc2VjdXJpdHlJbmZvID0gc2VjdXJpdHlJbmZvOwotICAg
IH0KLQotICAgIGJvb2wgaXNDb250ZW50RmlsdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
dGVudEZpbHRlcmVkOyB9Ci0gICAgdm9pZCBzZXRJc0NvbnRlbnRGaWx0ZXJlZChib29sIGlzQ29u
dGVudEZpbHRlcmVkKQotICAgIHsKLSAgICAgICAgbV9pc0NvbnRlbnRGaWx0ZXJlZCA9IGlzQ29u
dGVudEZpbHRlcmVkOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U7Ci0KLSAgICAvLyBBbiBvcGFxdWUgdmFsdWUgdGhhdCBjb250YWlucyBz
b21lIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgc2VjdXJpdHkgb2YKLSAgICAvLyB0aGUgY29u
bmVjdGlvbiBmb3IgdGhpcyByZXF1ZXN0LCBzdWNoIGFzIFNTTCBjb25uZWN0aW9uIGluZm8gKGVt
cHR5Ci0gICAgLy8gc3RyaW5nIGlmIG5vdCBvdmVyIEhUVFBTKS4KLSAgICBDU3RyaW5nIG1fc2Vj
dXJpdHlJbmZvOwotCi0gICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKQotICAgIHsK
LSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICB9Ci0KLSAgICAvLyBXaGV0aGVyIHRoZSBj
b250ZW50cyBmb3IgdGhpcyByZXNwb25zZSBoYXMgYmVlbiBhbHRlcmVkL2Jsb2NrZWQgKHVzdWFs
bHkKLSAgICAvLyBmb3Igc2VjdXJpdHkgcmVhc29ucy4KLSAgICBib29sIG1faXNDb250ZW50Rmls
dGVyZWQ7Ci19OworICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSgpCisg
ICAgICAgICAgICA6IG1faXNDb250ZW50RmlsdGVyZWQoZmFsc2UpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICAgICAgICAgIDog
UmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRF
bmNvZGluZ05hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgbV9pc0NvbnRlbnRGaWx0ZXJl
ZChmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgQ1N0cmluZyYg
Z2V0U2VjdXJpdHlJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eUluZm87IH0KKyAgICAg
ICAgdm9pZCBzZXRTZWN1cml0eUluZm8oY29uc3QgQ1N0cmluZyYgc2VjdXJpdHlJbmZvKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX3NlY3VyaXR5SW5mbyA9IHNlY3VyaXR5SW5mbzsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgaXNDb250ZW50RmlsdGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzQ29udGVudEZpbHRlcmVkOyB9CisgICAgICAgIHZvaWQgc2V0SXNDb250ZW50RmlsdGVyZWQo
Ym9vbCBpc0NvbnRlbnRGaWx0ZXJlZCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pc0NvbnRl
bnRGaWx0ZXJlZCA9IGlzQ29udGVudEZpbHRlcmVkOworICAgICAgICB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CisKKyAgICAgICAg
Ly8gQW4gb3BhcXVlIHZhbHVlIHRoYXQgY29udGFpbnMgc29tZSBpbmZvcm1hdGlvbiByZWdhcmRp
bmcgdGhlIHNlY3VyaXR5IG9mCisgICAgICAgIC8vIHRoZSBjb25uZWN0aW9uIGZvciB0aGlzIHJl
cXVlc3QsIHN1Y2ggYXMgU1NMIGNvbm5lY3Rpb24gaW5mbyAoZW1wdHkKKyAgICAgICAgLy8gc3Ry
aW5nIGlmIG5vdCBvdmVyIEhUVFBTKS4KKyAgICAgICAgQ1N0cmluZyBtX3NlY3VyaXR5SW5mbzsK
KworICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXaGV0
aGVyIHRoZSBjb250ZW50cyBmb3IgdGhpcyByZXNwb25zZSBoYXMgYmVlbiBhbHRlcmVkL2Jsb2Nr
ZWQgKHVzdWFsbHkKKyAgICAgICAgLy8gZm9yIHNlY3VyaXR5IHJlYXNvbnMuCisgICAgICAgIGJv
b2wgbV9pc0NvbnRlbnRGaWx0ZXJlZDsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gKKyNlbmRpZgo=
</data>
<flag name="review"
          id="12630"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>