<?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>33854</bug_id>
          
          <creation_ts>2010-01-19 11:40:39 -0800</creation_ts>
          <short_desc>Would like a variant of WebHTMLRepresentation&apos;s searchForLabelsBeforeElement that returns more info about where the result was found</short_desc>
          <delta_ts>2010-01-19 20:09:35 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Sullivan">sullivan</reporter>
          <assigned_to name="John Sullivan">sullivan</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>182350</commentid>
    <comment_count>0</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-01-19 11:40:39 -0800</bug_when>
    <thetext>WebHTMLRepresentation&apos;s searchForLabelsBeforeElement SPI function is used to search in the HTML visible content for any string from a given set of strings. It uses some heuristics for computing the result, but does not return any information about how the result was computed. It would be useful to clients of this function if they knew more about how the result was computed, in order to apply higher-level heuristics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182415</commentid>
    <comment_count>1</comment_count>
      <attachid>46943</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-01-19 13:24:31 -0800</bug_when>
    <thetext>Created attachment 46943
Patch that adds variant of searchForLabelsBeforeElement that includes two additional out parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182416</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-19 13:25:44 -0800</bug_when>
    <thetext>Attachment 46943 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/win/WebHTMLRepresentation.cpp:199:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/WebHTMLRepresentation.h:93:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182420</commentid>
    <comment_count>3</comment_count>
      <attachid>46944</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-01-19 13:33:02 -0800</bug_when>
    <thetext>Created attachment 46944
Revised patch that replaces line-ending &quot;( &quot;s with &quot;(&quot; to make style checking script happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182481</commentid>
    <comment_count>4</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-01-19 15:26:16 -0800</bug_when>
    <thetext>Committed r53500: &lt;http://trac.webkit.org/changeset/53500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182499</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 16:28:35 -0800</bug_when>
    <thetext>This broke the Tiger build:
http://build.webkit.org/builders/Tiger%20Intel%20Release/builds/7925/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182593</commentid>
    <comment_count>6</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-01-19 20:09:35 -0800</bug_when>
    <thetext>Fixed Tiger build in r53519.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46943</attachid>
            <date>2010-01-19 13:24:31 -0800</date>
            <delta_ts>2010-01-19 13:33:02 -0800</delta_ts>
            <desc>Patch that adds variant of searchForLabelsBeforeElement that includes two additional out parameters</desc>
            <filename>searchForLabelsBeforeElement_patch.txt</filename>
            <type>text/plain</type>
            <size>25273</size>
            <attacher name="John Sullivan">sullivan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDEtMTkgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODU0CisgICAgICAgIFdvdWxkIGxpa2UgYSB2YXJpYW50IG9mIFdlYkhUTUxSZXByZXNlbnRh
dGlvbidzIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQgdGhhdCByZXR1cm5zIAorICAgICAg
ICBtb3JlIGluZm8gYWJvdXQgd2hlcmUgdGhlIHJlc3VsdCB3YXMgZm91bmQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
anVzdCBhZGRzIGEgY291cGxlIG9mIG91dCBwYXJhbWV0ZXJzIGZvciB0aGUgYmVuZWZpdCBvZiBX
ZWJLaXQgY2xpZW50cy4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgIFVw
ZGF0ZWQgbWFuZ2xlZCBzaWduYXR1cmUgZm9yIGV4cG9ydC4KKworICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bCk6CisgICAgICAgIE5vdyBmaWxscyBpbiBhbiBvdXQgcGFyYW1ldGVyIHdpdGggdGhlIG51bWJl
ciBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBjZWxsLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQpOgorICAgICAgICBOb3cg
ZmlsbHMgaW4gYW4gb3V0IHBhcmFtZXRlciB3aXRoIHRoZSBkaXN0YW5jZSBhcyBhIG51bWJlciBv
ZiBjaGFyYWN0ZXJzLCBhbmQgYW5vdGhlcgorICAgICAgICB3aXRoIGEgYm9vbCBmb3Igd2hldGhl
ciB0aGUgcmVzdWx0IHdhcyBpbiBhIHRhYmxlIGNlbGwgYWJvdmUgdGhlIGN1cnJlbnQgY2VsbCAo
b3RoZXJ3aXNlCisgICAgICAgIGl0IHdhcyBmb3VuZCBpbiB0aGUgdGV4dCBiZWZvcmUgdGhpcyBl
bGVtZW50IGFuZCBhZnRlciB0aGUgcHJldmlvdXMgZWxlbWVudCBvciBzdGFydCBvZiBmb3JtKS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgVXBkYXRlZCBzaWduYXR1cmVzLgor
CisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6c2VhcmNoRm9yTlNMYWJlbHNBYm92ZUNlbGwpOgorICAgICAgICBTYW1lIGFzIGFib3ZlLiBU
aGlzIGlzIGEgcGFyYWxsZWwgY29weSBvZiB0aGUgZnVuY3Rpb24gdXNpbmcgTWFjLXNwZWNpZmlj
IGRhdGEgc3RydWN0dXJlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJl
bHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgRGl0dG8KKwogMjAxMC0wMS0xOSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJDb3JlL1dlYkNv
cmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw3ICs1MjAsNyBAQCBfX1pON1dlYkNv
cmU1RnJhbWUyM3Zpc2libGVQb3NpdGlvbkZvclBvCiBfX1pON1dlYkNvcmU1RnJhbWUyNGNvbXB1
dGVBbmRTZXRUeXBpbmdTdHlsZUVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFj
dGlvbkUKIF9fWk43V2ViQ29yZTVGcmFtZTI0c2V0RXhjbHVkZUZyb21UZXh0U2VhcmNoRWIKIF9f
Wk43V2ViQ29yZTVGcmFtZTI1bWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudEVQN05TQXJyYXlQTlNf
N0VsZW1lbnRFCi1fX1pON1dlYkNvcmU1RnJhbWUyOHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1l
bnRFUDdOU0FycmF5UE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlNUZyYW1lMjhzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50RVA3TlNBcnJheVBOU183RWxlbWVudEVQbVBiCiBfX1pON1dlYkNv
cmU1RnJhbWUzNHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWRFYgogX19aTjdXZWJD
b3JlNUZyYW1lNGluaXRFdgogX19aTjdXZWJDb3JlNUZyYW1lNnNjcmlwdEV2CkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJ
KHJldmlzaW9uIDUzNDg2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogY3JlYXRlUmVn
RXhwRm8KICAgICByZXR1cm4gbmV3IFJlZ3VsYXJFeHByZXNzaW9uKHBhdHRlcm4sIFRleHRDYXNl
SW5zZW5zaXRpdmUpOwogfQogCi1TdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bChSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwLCBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbCkK
K1N0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNzaW9u
KiByZWdFeHAsIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBjZWxsLCBzaXplX3QqIHJlc3VsdERpc3Rh
bmNlRnJvbVN0YXJ0T2ZDZWxsKQogewogICAgIFJlbmRlck9iamVjdCogY2VsbFJlbmRlcmVyID0g
Y2VsbC0+cmVuZGVyZXIoKTsKIApAQCAtNDI5LDIzICs0MjksMzAgQEAgU3RyaW5nIEZyYW1lOjpz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUgogCiAgICAgICAgICAgICBpZiAoYWJvdmVDZWxsKSB7
CiAgICAgICAgICAgICAgICAgLy8gc2VhcmNoIHdpdGhpbiB0aGUgYWJvdmUgY2VsbCB3ZSBmb3Vu
ZCBmb3IgYSBtYXRjaAorICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGhTZWFyY2hlZCA9IDA7
ICAgIAogICAgICAgICAgICAgICAgIGZvciAoTm9kZSogbiA9IGFib3ZlQ2VsbC0+Zmlyc3RDaGls
ZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShhYm92ZUNlbGwpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5nID0gbi0+bm9kZVZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9zID0gcmVnRXhwLT5zZWFyY2hSZXYobm9kZVN0
cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID49IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocG9zID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpyZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCA9IGxlbmd0aFNlYXJj
aGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlU3RyaW5nLnN1YnN0
cmluZyhwb3MsIHJlZ0V4cC0+bWF0Y2hlZExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFNlYXJjaGVkICs9IG5vZGVTdHJp
bmcubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gQW55IHJlYXNvbiBpbiBwcmFj
dGljZSB0byBzZWFyY2ggYWxsIGNlbGxzIGluIHRoYXQgYXJlIGFib3ZlIGNlbGw/CisgICAgaWYg
KHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKQorICAgICAgICAqcmVzdWx0RGlzdGFuY2VG
cm9tU3RhcnRPZkNlbGwgPSBub3RGb3VuZDsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFiZWxzLCBFbGVtZW50KiBlbGVtZW50KQorU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQq
IGVsZW1lbnQsIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJv
dmUpCiB7CiAgICAgT3duUHRyPFJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoY3JlYXRlUmVnRXhw
Rm9yTGFiZWxzKGxhYmVscykpOwogICAgIC8vIFdlIHN0b3Agc2VhcmNoaW5nIGFmdGVyIHdlJ3Zl
IHNlZW4gdGhpcyBtYW55IGNoYXJzCkBAIC00NTcsNiArNDY0LDExIEBAIFN0cmluZyBGcmFtZTo6
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICBIVE1MVGFibGVDZWxsRWxlbWVudCogc3Rh
cnRpbmdUYWJsZUNlbGwgPSAwOwogICAgIGJvb2wgc2VhcmNoZWRDZWxsQWJvdmUgPSBmYWxzZTsK
IAorICAgIGlmIChyZXN1bHREaXN0YW5jZSkKKyAgICAgICAgKnJlc3VsdERpc3RhbmNlID0gbm90
Rm91bmQ7CisgICAgaWYgKHJlc3VsdElzSW5DZWxsQWJvdmUpCisgICAgICAgICpyZXN1bHRJc0lu
Q2VsbEFib3ZlID0gZmFsc2U7CisgICAgCiAgICAgLy8gd2FsayBiYWNrd2FyZHMgaW4gdGhlIG5v
ZGUgdHJlZSwgdW50aWwgYW5vdGhlciBlbGVtZW50LCBvciBmb3JtLCBvciBlbmQgb2YgdHJlZQog
ICAgIGludCB1bnNpZ25lZCBsZW5ndGhTZWFyY2hlZCA9IDA7CiAgICAgTm9kZSogbjsKQEAgLTQ3
Miw5ICs0ODQsMTIgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZQog
ICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUodGRUYWcpICYmICFzdGFydGluZ1RhYmxl
Q2VsbCkgewogICAgICAgICAgICAgc3RhcnRpbmdUYWJsZUNlbGwgPSBzdGF0aWNfY2FzdDxIVE1M
VGFibGVDZWxsRWxlbWVudCo+KG4pOwogICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUo
dHJUYWcpICYmIHN0YXJ0aW5nVGFibGVDZWxsKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVzdWx0
ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdUYWJsZUNl
bGwpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgU3Ry
aW5nIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAuZ2V0KCksIHN0YXJ0
aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKKyAg
ICAgICAgICAgICAgICAgICAgKnJlc3VsdElzSW5DZWxsQWJvdmUgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZWFyY2hl
ZENlbGxBYm92ZSA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYm
IG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09
IFZJU0lCTEUpIHsKICAgICAgICAgICAgIC8vIEZvciBlYWNoIHRleHQgY2h1bmssIHJ1biB0aGUg
cmVnZXhwCkBAIC00ODMsMTYgKzQ5OCwyNSBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVs
c0JlZm9yZUVsZW1lCiAgICAgICAgICAgICBpZiAobGVuZ3RoU2VhcmNoZWQgKyBub2RlU3RyaW5n
Lmxlbmd0aCgpID4gbWF4Q2hhcnNTZWFyY2hlZCkKICAgICAgICAgICAgICAgICBub2RlU3RyaW5n
ID0gbm9kZVN0cmluZy5yaWdodChjaGFyc1NlYXJjaGVkVGhyZXNob2xkIC0gbGVuZ3RoU2VhcmNo
ZWQpOwogICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC0+c2VhcmNoUmV2KG5vZGVTdHJpbmcp
OwotICAgICAgICAgICAgaWYgKHBvcyA+PSAwKQorICAgICAgICAgICAgaWYgKHBvcyA+PSAwKSB7
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNlKQorICAgICAgICAgICAgICAgICAg
ICAqcmVzdWx0RGlzdGFuY2UgPSBsZW5ndGhTZWFyY2hlZDsKICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAtPm1hdGNoZWRMZW5ndGgoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBsZW5ndGhTZWFyY2hlZCArPSBub2RlU3RyaW5nLmxl
bmd0aCgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gSWYgd2Ugc3RhcnRlZCBpbiBhIGNl
bGwsIGJ1dCBiYWlsZWQgYmVjYXVzZSB3ZSBmb3VuZCB0aGUgc3RhcnQgb2YgdGhlIGZvcm0gb3Ig
dGhlCiAgICAgLy8gcHJldmlvdXMgZWxlbWVudCwgd2Ugc3RpbGwgbWlnaHQgbmVlZCB0byBzZWFy
Y2ggdGhlIHJvdyBhYm92ZSB1cyBmb3IgYSBsYWJlbC4KLSAgICBpZiAoc3RhcnRpbmdUYWJsZUNl
bGwgJiYgIXNlYXJjaGVkQ2VsbEFib3ZlKQotICAgICAgICAgcmV0dXJuIHNlYXJjaEZvckxhYmVs
c0Fib3ZlQ2VsbChyZWdFeHAuZ2V0KCksIHN0YXJ0aW5nVGFibGVDZWxsKTsKKyAgICBpZiAoc3Rh
cnRpbmdUYWJsZUNlbGwgJiYgIXNlYXJjaGVkQ2VsbEFib3ZlKSB7CisgICAgICAgICBTdHJpbmcg
cmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdU
YWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKKyAgICAgICAgICAgICAg
ICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJl
dmlzaW9uIDUzNDg2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2MCw4ICsyNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU2VsZWN0aW9u
Q29udHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0OwogCi0gICAgICAgIFN0cmlu
ZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVD
ZWxsRWxlbWVudCopOwotICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVu
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7CisgICAgICAgIFN0cmlu
ZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVD
ZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOworICAg
ICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFiZWxzLCBFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5jZSwgYm9vbCogcmVz
dWx0SXNJbkNlbGxBYm92ZSk7CiAgICAgICAgIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqKTsKIAogICAgICAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZy
YW1lUG9pbnQpOwpAQCAtMjcyLDggKzI3Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAv
LyA9PT0gdW5kZWNpZGVkLCB3b3VsZCBsaWtlIHRvIGNvbnNpZGVyIG1vdmluZyB0byBhbm90aGVy
IGNsYXNzCiAKICAgICBwdWJsaWM6Ci0gICAgICAgIE5TU3RyaW5nKiBzZWFyY2hGb3JOU0xhYmVs
c0Fib3ZlQ2VsbChSZWd1bGFyRXhwcmVzc2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kik7Ci0g
ICAgICAgIE5TU3RyaW5nKiBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxh
YmVscywgRWxlbWVudCopOworICAgICAgICBOU1N0cmluZyogc2VhcmNoRm9yTlNMYWJlbHNBYm92
ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCog
cmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOworICAgICAgICBOU1N0cmluZyogc2VhcmNo
Rm9yTGFiZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3Qq
IHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAgICAgTlNT
dHJpbmcqIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoTlNBcnJheSogbGFiZWxzLCBFbGVtZW50
Kik7CiAKICAgICAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9w
YWdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1l
TWFjLm1tCShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Np
b24qIHJlZ0V4cEZvckxhYmVsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTlNTdHJpbmcqIEZy
YW1lOjpzZWFyY2hGb3JOU0xhYmVsc0Fib3ZlQ2VsbChSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhw
LCBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbCkKK05TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9y
TlNMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cCwgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCiB7
CiAgICAgUmVuZGVyT2JqZWN0KiBjZWxsUmVuZGVyZXIgPSBjZWxsLT5yZW5kZXJlcigpOwogCkBA
IC0xNTcsMjMgKzE1NywzMCBAQCBOU1N0cmluZyogRnJhbWU6OnNlYXJjaEZvck5TTGFiZWxzQWJv
dmVDCiAKICAgICAgICAgICAgIGlmIChhYm92ZUNlbGwpIHsKICAgICAgICAgICAgICAgICAvLyBz
ZWFyY2ggd2l0aGluIHRoZSBhYm92ZSBjZWxsIHdlIGZvdW5kIGZvciBhIG1hdGNoCisgICAgICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aFNlYXJjaGVkID0gMDsgICAgCiAgICAgICAgICAgICAgICAg
Zm9yIChOb2RlKiBuID0gYWJvdmVDZWxsLT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJz
ZU5leHROb2RlKGFib3ZlQ2VsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG4tPmlzVGV4
dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZWFj
aCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIG5vZGVTdHJpbmcgPSBuLT5ub2RlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBwb3MgPSByZWdFeHAtPnNlYXJjaFJldihub2RlU3RyaW5nKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChwb3MgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3Mg
Pj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHREaXN0YW5jZUZy
b21TdGFydE9mQ2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdERp
c3RhbmNlRnJvbVN0YXJ0T2ZDZWxsID0gbGVuZ3RoU2VhcmNoZWQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywgcmVnRXhwLT5tYXRj
aGVkTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgbGVuZ3RoU2VhcmNoZWQgKz0gbm9kZVN0cmluZy5sZW5ndGgoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KICAgICAvLyBBbnkgcmVhc29uIGluIHByYWN0aWNlIHRvIHNlYXJjaCBhbGwgY2Vs
bHMgaW4gdGhhdCBhcmUgYWJvdmUgY2VsbD8KKyAgICBpZiAocmVzdWx0RGlzdGFuY2VGcm9tU3Rh
cnRPZkNlbGwpCisgICAgICAgICpyZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCA9IG5vdEZv
dW5kOwogICAgIHJldHVybiBuaWw7CiB9CiAKLU5TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9yTGFi
ZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqIGVsZW1lbnQpCitOU1N0
cmluZyogRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoTlNBcnJheSogbGFiZWxz
LCBFbGVtZW50KiBlbGVtZW50LCBzaXplX3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJ
c0luQ2VsbEFib3ZlKQogewogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHAgPSByZWdFeHBG
b3JMYWJlbHMobGFiZWxzKTsKICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyBhZnRlciB3ZSd2ZSBz
ZWVuIHRoaXMgbWFueSBjaGFycwpAQCAtMTg0LDYgKzE5MSwxMSBAQCBOU1N0cmluZyogRnJhbWU6
OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgLy8gSWYgdGhlIHN0YXJ0aW5nIGVsZW1lbnQg
aXMgd2l0aGluIGEgdGFibGUsIHRoZSBjZWxsIHRoYXQgY29udGFpbnMgaXQKICAgICBIVE1MVGFi
bGVDZWxsRWxlbWVudCogc3RhcnRpbmdUYWJsZUNlbGwgPSAwOwogICAgIGJvb2wgc2VhcmNoZWRD
ZWxsQWJvdmUgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAocmVzdWx0RGlzdGFuY2UpCisgICAgICAg
ICpyZXN1bHREaXN0YW5jZSA9IG5vdEZvdW5kOworICAgIGlmIChyZXN1bHRJc0luQ2VsbEFib3Zl
KQorICAgICAgICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9IGZhbHNlOwogCiAgICAgLy8gd2FsayBi
YWNrd2FyZHMgaW4gdGhlIG5vZGUgdHJlZSwgdW50aWwgYW5vdGhlciBlbGVtZW50LCBvciBmb3Jt
LCBvciBlbmQgb2YgdHJlZQogICAgIGludCB1bnNpZ25lZCBsZW5ndGhTZWFyY2hlZCA9IDA7CkBA
IC0yMDAsOSArMjEyLDEyIEBAIE5TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3Jl
RWwKICAgICAgICAgfSBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKHRkVGFnKSAmJiAhc3RhcnRpbmdU
YWJsZUNlbGwpIHsKICAgICAgICAgICAgIHN0YXJ0aW5nVGFibGVDZWxsID0gc3RhdGljX2Nhc3Q8
SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihuKTsKICAgICAgICAgfSBlbHNlIGlmIChuLT5oYXNUYWdO
YW1lKHRyVGFnKSAmJiBzdGFydGluZ1RhYmxlQ2VsbCkgewotICAgICAgICAgICAgTlNTdHJpbmcq
IHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAsIHN0YXJ0aW5nVGFibGVD
ZWxsKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgW3Jlc3VsdCBsZW5ndGhdID4gMCkKKyAg
ICAgICAgICAgIE5TU3RyaW5nKiByZXN1bHQgPSBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwocmVn
RXhwLCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOworICAgICAgICAgICAgaWYg
KHJlc3VsdCAmJiBbcmVzdWx0IGxlbmd0aF0gPiAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdElzSW5DZWxsQWJvdmUpCisgICAgICAgICAgICAgICAgICAgICpyZXN1bHRJc0luQ2VsbEFi
b3ZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2VhcmNoZWRDZWxsQWJvdmUgPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
aWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0
eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgICAgICAvLyBGb3IgZWFj
aCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cApAQCAtMjExLDkgKzIyNiwxMSBAQCBOU1N0cmlu
ZyogRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgICAgICAgICBpZiAobGVuZ3Ro
U2VhcmNoZWQgKyBub2RlU3RyaW5nLmxlbmd0aCgpID4gbWF4Q2hhcnNTZWFyY2hlZCkKICAgICAg
ICAgICAgICAgICBub2RlU3RyaW5nID0gbm9kZVN0cmluZy5yaWdodChjaGFyc1NlYXJjaGVkVGhy
ZXNob2xkIC0gbGVuZ3RoU2VhcmNoZWQpOwogICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC0+
c2VhcmNoUmV2KG5vZGVTdHJpbmcpOwotICAgICAgICAgICAgaWYgKHBvcyA+PSAwKQorICAgICAg
ICAgICAgaWYgKHBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNl
KQorICAgICAgICAgICAgICAgICAgICAqcmVzdWx0RGlzdGFuY2UgPSBsZW5ndGhTZWFyY2hlZDsK
ICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAt
Pm1hdGNoZWRMZW5ndGgoKSk7Ci0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxlbmd0aFNl
YXJjaGVkICs9IG5vZGVTdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjEs
OSArMjM4LDEyIEBAIE5TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWwKICAg
ICAvLyBJZiB3ZSBzdGFydGVkIGluIGEgY2VsbCwgYnV0IGJhaWxlZCBiZWNhdXNlIHdlIGZvdW5k
IHRoZSBzdGFydCBvZiB0aGUgZm9ybSBvciB0aGUKICAgICAvLyBwcmV2aW91cyBlbGVtZW50LCB3
ZSBzdGlsbCBtaWdodCBuZWVkIHRvIHNlYXJjaCB0aGUgcm93IGFib3ZlIHVzIGZvciBhIGxhYmVs
LgogICAgIGlmIChzdGFydGluZ1RhYmxlQ2VsbCAmJiAhc2VhcmNoZWRDZWxsQWJvdmUpIHsKLSAg
ICAgICAgTlNTdHJpbmcqIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAs
IHN0YXJ0aW5nVGFibGVDZWxsKTsKLSAgICAgICAgaWYgKHJlc3VsdCAmJiBbcmVzdWx0IGxlbmd0
aF0gPiAwKQorICAgICAgICBOU1N0cmluZyogcmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVD
ZWxsKHJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKKyAgICAgICAg
aWYgKHJlc3VsdCAmJiBbcmVzdWx0IGxlbmd0aF0gPiAwKSB7CisgICAgICAgICAgICBpZiAocmVz
dWx0SXNJbkNlbGxBYm92ZSkKKyAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIHJldHVybiBuaWw7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTAxLTE5ICBK
b2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg1NAorICAgICAgICBXb3VsZCBsaWtlIGEg
dmFyaWFudCBvZiBXZWJIVE1MUmVwcmVzZW50YXRpb24ncyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVF
bGVtZW50IHRoYXQgcmV0dXJucyAKKyAgICAgICAgbW9yZSBpbmZvIGFib3V0IHdoZXJlIHRoZSBy
ZXN1bHQgd2FzIGZvdW5kCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5oOgorICAgICAgICBEZWNs
YXJlIC1zZWFyY2hGb3JMYWJlbHM6YmVmb3JlRWxlbWVudDpyZXN1bHREaXN0YW5jZTpyZXN1bHRJ
c0luQ2VsbEFib3ZlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIHNlYXJjaEZvckxh
YmVsczpiZWZvcmVFbGVtZW50Ol0pOgorICAgICAgICBOb3cgY2FsbHMgdGhyb3VnaCB0byBzZWFy
Y2hGb3JMYWJlbHM6YmVmb3JlRWxlbWVudDpyZXN1bHREaXN0YW5jZTpyZXN1bHRJc0luQ2VsbEFi
b3ZlLgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gc2VhcmNoRm9yTGFiZWxzOmJl
Zm9yZUVsZW1lbnQ6cmVzdWx0RGlzdGFuY2U6cmVzdWx0SXNJbkNlbGxBYm92ZTpdKToKKyAgICAg
ICAgTmV3IG1ldGhvZCwgY2FsbHMgdGhyb3VnaCB0byBXZWJDb3JlLgorCiAyMDEwLTAxLTE5ICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
Um9iZW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5o
CShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsMTEgQEAKIC0gKERPTUVsZW1lbnQg
Kilmb3JtRm9yRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7CiAtIChET01FbGVtZW50ICop
Y3VycmVudEZvcm07CiAtIChOU0FycmF5ICopY29udHJvbHNJbkZvcm06KERPTUVsZW1lbnQgKilm
b3JtOwotLSAoTlNTdHJpbmcgKilzZWFyY2hGb3JMYWJlbHM6KE5TQXJyYXkgKilsYWJlbHMgYmVm
b3JlRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7CistIChOU1N0cmluZyAqKXNlYXJjaEZv
ckxhYmVsczooTlNBcnJheSAqKWxhYmVscyBiZWZvcmVFbGVtZW50OihET01FbGVtZW50ICopZWxl
bWVudCByZXN1bHREaXN0YW5jZTooTlNVSW50ZWdlciopb3V0RGlzdGFuY2UgcmVzdWx0SXNJbkNl
bGxBYm92ZTooQk9PTCopb3V0SXNJbkNlbGxBYm92ZTsKIC0gKE5TU3RyaW5nICopbWF0Y2hMYWJl
bHM6KE5TQXJyYXkgKilsYWJlbHMgYWdhaW5zdEVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50
OwogCisvLyBEZXByZWNhdGVkIFNQSQorLSAoTlNTdHJpbmcgKilzZWFyY2hGb3JMYWJlbHM6KE5T
QXJyYXkgKilsYWJlbHMgYmVmb3JlRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7IC8vIFVz
ZSAtc2VhcmNoRm9yTGFiZWxzOmJlZm9yZUVsZW1lbnQ6cmVzdWx0RGlzdGFuY2U6cmVzdWx0SXNJ
bkNlbGxBYm92ZToKKworCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0JKHJldmlzaW9uIDUzNDg2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNywy
NyBAQCBzdGF0aWMgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50RnJvCiAKIC0gKE5TU3Ry
aW5nICopc2VhcmNoRm9yTGFiZWxzOihOU0FycmF5ICopbGFiZWxzIGJlZm9yZUVsZW1lbnQ6KERP
TUVsZW1lbnQgKillbGVtZW50CiB7Ci0gICAgcmV0dXJuIGNvcmUoW19wcml2YXRlLT5kYXRhU291
cmNlIHdlYkZyYW1lXSktPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjb3Jl
KGVsZW1lbnQpKTsKKyAgICByZXR1cm4gW3NlbGYgc2VhcmNoRm9yTGFiZWxzOmxhYmVscyBiZWZv
cmVFbGVtZW50OmVsZW1lbnQgcmVzdWx0RGlzdGFuY2U6MCByZXN1bHRJc0luQ2VsbEFib3ZlOjBd
OworfQorCistIChOU1N0cmluZyAqKXNlYXJjaEZvckxhYmVsczooTlNBcnJheSAqKWxhYmVscyBi
ZWZvcmVFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudCByZXN1bHREaXN0YW5jZTooTlNVSW50
ZWdlciopb3V0RGlzdGFuY2UgcmVzdWx0SXNJbkNlbGxBYm92ZTooQk9PTCopb3V0SXNJbkNlbGxB
Ym92ZQoreworICAgIHNpemVfdCBkaXN0YW5jZTsKKyAgICBib29sIGlzSW5DZWxsQWJvdmU7Cisg
ICAgCisgICAgTlNTdHJpbmcgKnJlc3VsdCA9IGNvcmUoW19wcml2YXRlLT5kYXRhU291cmNlIHdl
YkZyYW1lXSktPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjb3JlKGVsZW1l
bnQpLCAmZGlzdGFuY2UsICZpc0luQ2VsbEFib3ZlKTsKKyAgICAKKyAgICBpZiAob3V0RGlzdGFu
Y2UpIHsKKyAgICAgICAgaWYgKGRpc3RhbmNlID09IG5vdEZvdW5kKQorICAgICAgICAgICAgKm91
dERpc3RhbmNlID0gTlNOb3RGb3VuZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm91dERp
c3RhbmNlID0gZGlzdGFuY2U7CisgICAgfQorCisgICAgaWYgKG91dElzSW5DZWxsQWJvdmUpCisg
ICAgICAgICpvdXRJc0luQ2VsbEFib3ZlID0gaXNJbkNlbGxBYm92ZTsKKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiAtIChOU1N0cmluZyAqKW1hdGNoTGFiZWxzOihOU0FycmF5ICopbGFi
ZWxzIGFnYWluc3RFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudApJbmRleDogV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDUzNDg2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNiBAQAorMjAxMC0wMS0xOSAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NTQK
KyAgICAgICAgV291bGQgbGlrZSBhIHZhcmlhbnQgb2YgV2ViSFRNTFJlcHJlc2VudGF0aW9uJ3Mg
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudCB0aGF0IHJldHVybnMgCisgICAgICAgIG1vcmUg
aW5mbyBhYm91dCB3aGVyZSB0aGUgcmVzdWx0IHdhcyBmb3VuZAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSFRNTFJlcHJl
c2VudGF0aW9uLmlkbDoKKyAgICAgICAgQ3JlYXRlZCB2YXJpYW50IG9mIHNlYXJjaEZvckxhYmVs
cyB0aGF0IGluY2x1ZGVzIGFkZGl0aW9uYWwgaW4vb3V0IHBhcmFtZXRlcnMgcmVzdWx0RGlzdGFu
Y2UgYW5kIHJlc3VsdElzSW5DZWxsQWJvdmUuCisgICAgICAgIAorICAgICAgICAqIEludGVyZmFj
ZXMvV2ViS2l0LmlkbDoKKyAgICAgICAgVG91Y2hlZCBpbiBvcmRlciB0byBnZXQgb3RoZXIgaWRs
IGNoYW5nZSB0byBwcm9wYWdhdGUgY29ycmVjdGx5LgorCisgICAgICAgICogV2ViSFRNTFJlcHJl
c2VudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZGVwcmVjYXRl
ZFNlYXJjaEZvckxhYmVscyk6CisgICAgICAgIFJlbmFtZWQgc2luY2UgaURMIGRvZXNuJ3Qgc3Vw
cG9ydCB0d28gZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGlmZmVyZW50IHNpZ25h
dHVyZXMuCisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OnNlYXJjaEZvckxhYmVscyk6
CisgICAgICAgIEltcGxlbWVudGVkIHZhcmlhbnQgb2Ygc2VhcmNoRm9yTGFiZWxzIHRoYXQgaW5j
bHVkZXMgYWRkaXRpb25hbCBpbi9vdXQgcGFyYW1ldGVycyByZXN1bHREaXN0YW5jZSBhbmQgcmVz
dWx0SXNJbkNlbGxBYm92ZS4KKworICAgICAgICAqIFdlYkhUTUxSZXByZXNlbnRhdGlvbi5oOgor
ICAgICAgICBEZWNsYXJlZCB2YXJpYW50IG9mIHNlYXJjaEZvckxhYmVscyB0aGF0IGluY2x1ZGVz
IGFkZGl0aW9uYWwgaW4vb3V0IHBhcmFtZXRlcnMgcmVzdWx0RGlzdGFuY2UgYW5kIHJlc3VsdElz
SW5DZWxsQWJvdmUuCisKIDIwMTAtMDEtMTkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTM0
ODYpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3OCwx
MyArMTI3OCwxNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjplbGVtZW50SXNQYXNzd29yZChJRE9NCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Jl
Zm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVscywgSURPTUVsZW1lbnQq
IGJlZm9yZUVsZW1lbnQsIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZv
ckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCB1bnNpZ25lZCBjTGFiZWxz
LCBJRE9NRWxlbWVudCogYmVmb3JlRWxlbWVudCwgdW5zaWduZWQqIG91dFJlc3VsdERpc3RhbmNl
LCBCT09MKiBvdXRSZXN1bHRJc0luQ2VsbEFib3ZlLCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAgICAgfQogCisgICAgaWYgKG91dFJlc3VsdERpc3RhbmNlKQorICAgICAg
ICAqb3V0UmVzdWx0RGlzdGFuY2UgPSAwOworICAgIGlmIChvdXRSZXN1bHRJc0luQ2VsbEFib3Zl
KQorICAgICAgICAqb3V0UmVzdWx0SXNJbkNlbGxBYm92ZSA9IEZBTFNFOwogICAgICpyZXN1bHQg
PSAwOwogCiAgICAgaWYgKCFjTGFiZWxzKQpAQCAtMTMwMywxMSArMTMwNywxOCBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFCiAgICAgaWYgKCFjb3JlRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyBsYWJlbCA9IGNvcmVGcmFtZS0+
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChsYWJlbFN0cmluZ3MsIGNvcmVFbGVtZW50KTsK
KyAgICBzaXplX3QgcmVzdWx0RGlzdGFuY2U7CisgICAgYm9vbCByZXN1bHRJc0luQ2VsbEFib3Zl
OworICAgIFN0cmluZyBsYWJlbCA9IGNvcmVGcmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxl
bWVudChsYWJlbFN0cmluZ3MsIGNvcmVFbGVtZW50LCAmcmVzdWx0RGlzdGFuY2UsICZyZXN1bHRJ
c0luQ2VsbEFib3ZlKTsKICAgICAKICAgICAqcmVzdWx0ID0gU3lzQWxsb2NTdHJpbmdMZW4obGFi
ZWwuY2hhcmFjdGVycygpLCBsYWJlbC5sZW5ndGgoKSk7CiAgICAgaWYgKGxhYmVsLmxlbmd0aCgp
ICYmICEqcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKKyAgICBpZiAob3V0
UmVzdWx0RGlzdGFuY2UpCisgICAgICAgICpvdXRSZXN1bHREaXN0YW5jZSA9IHJlc3VsdERpc3Rh
bmNlOworICAgIGlmIChvdXRSZXN1bHRJc0luQ2VsbEFib3ZlKQorICAgICAgICAqb3V0UmVzdWx0
SXNJbkNlbGxBYm92ZSA9IHJlc3VsdElzSW5DZWxsQWJvdmU7CisKICAgICByZXR1cm4gU19PSzsK
IH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViRnJhbWUuaAkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgSFJFU1VMVCBm
b3JtRm9yRWxlbWVudChJRE9NRWxlbWVudCogZWxlbWVudCwgSURPTUVsZW1lbnQqKiBmb3JtKTsK
ICAgICBIUkVTVUxUIGNvbnRyb2xzSW5Gb3JtKElET01FbGVtZW50KiBmb3JtLCBJRE9NRWxlbWVu
dCoqIGNvbnRyb2xzLCBpbnQqIGNDb250cm9scyk7CiAgICAgSFJFU1VMVCBlbGVtZW50SXNQYXNz
d29yZChJRE9NRWxlbWVudCogZWxlbWVudCwgYm9vbCogcmVzdWx0KTsKLSAgICBIUkVTVUxUIHNl
YXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVs
cywgSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VM
VCBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgdW5zaWdu
ZWQgY0xhYmVscywgSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIHVuc2lnbmVkKiByZXN1bHRE
aXN0YW5jZSwgQk9PTCogcmVzdWx0SXNJbkNlbGxBYm92ZSwgQlNUUiogcmVzdWx0KTsKICAgICBI
UkVTVUxUIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQg
Y0xhYmVscywgSURPTUVsZW1lbnQqIGFnYWluc3RFbGVtZW50LCBCU1RSKiByZXN1bHQpOwogICAg
IEhSRVNVTFQgY2FuUHJvdmlkZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCk7CiAKSW5kZXg6
IFdlYktpdC93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAJKHJldmlzaW9uIDUzNDg2KQorKysgV2Vi
S2l0L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYs
MTMgKzE5NiwxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlCiAg
ICAgcmV0dXJuIG1fZnJhbWUtPmNvbnRyb2xzSW5Gb3JtKGZvcm0sIGNvbnRyb2xzLCBjQ29udHJv
bHMpOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50
YXRpb246OnNlYXJjaEZvckxhYmVscyggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhU
TUxSZXByZXNlbnRhdGlvbjo6ZGVwcmVjYXRlZFNlYXJjaEZvckxhYmVscyggCiAgICAgICAgIC8q
IFtzaXplX2lzXVtpbl0gKi8gQlNUUiogbGFiZWxzLAogICAgICAgICAvKiBbaW5dICovIGludCBj
TGFiZWxzLAogICAgICAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBiZWZvcmVFbGVtZW50LAog
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4g
bV9mcmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChsYWJlbHMsIGNMYWJlbHMsIGJl
Zm9yZUVsZW1lbnQsIHJlc3VsdCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnNlYXJjaEZvckxhYmVs
c0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjTGFiZWxzLCBiZWZvcmVFbGVtZW50LCAwLCAwLCByZXN1
bHQpOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50
YXRpb246Om1hdGNoTGFiZWxzKCAKQEAgLTIxNCw2ICsyMTQsMTEgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZQogICAgIHJldHVybiBtX2ZyYW1lLT5tYXRjaExhYmVs
c0FnYWluc3RFbGVtZW50KGxhYmVscywgY0xhYmVscywgYWdhaW5zdEVsZW1lbnQsIHJlc3VsdCk7
CiB9CiAKK0hSRVNVTFQgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzZWFyY2hGb3JMYWJlbHMoQlNU
UiogbGFiZWxzLCB1bnNpZ25lZCBjTGFiZWxzLCBJRE9NRWxlbWVudCogYmVmb3JlRWxlbWVudCwg
dW5zaWduZWQqIHJlc3VsdERpc3RhbmNlLCBCT09MKiByZXN1bHRJc0luQ2VsbEFib3ZlLCBCU1RS
KiByZXN1bHQpCit7CisgICAgcmV0dXJuIG1fZnJhbWUtPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVs
ZW1lbnQobGFiZWxzLCBjTGFiZWxzLCBiZWZvcmVFbGVtZW50LCByZXN1bHREaXN0YW5jZSwgcmVz
dWx0SXNJbkNlbGxBYm92ZSwgcmVzdWx0KTsKK30KKwogLy8gSVdlYkRvY3VtZW50UmVwcmVzZW50
YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6c2V0RGF0YVNvdXJjZSggCkluZGV4OiBXZWJLaXQvd2luL1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9u
LmgJKHJldmlzaW9uIDUzNDg2KQorKysgV2ViS2l0L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksOCBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtv
dXRdW2luXSAqLyBJRE9NRWxlbWVudCoqIGNvbnRyb2xzLAogICAgICAgICAvKiBbb3V0XVtpbl0g
Ki8gaW50KiBjQ29udHJvbHMpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZWFyY2hGb3JMYWJlbHMoIAorICAgIC8qIERlcHJlY2F0ZWQuIFVzZSB0aGUgdmFy
aWFudCB0aGF0IGluY2x1ZGVzIHJlc3VsdERpc3RhbmNlIGFuZCByZXN1bHRJc0luQ2VsbEFib3Zl
IGluc3RlYWQuICovCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlcHJl
Y2F0ZWRTZWFyY2hGb3JMYWJlbHMoIAogICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIEJTVFIg
KmxhYmVscywKICAgICAgICAgLyogW2luXSAqLyBpbnQgY0xhYmVscywKICAgICAgICAgLyogW2lu
XSAqLyBJRE9NRWxlbWVudCAqYmVmb3JlRWxlbWVudCwKQEAgLTEwMSw2ICsxMDIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQgKmFnYWluc3RFbGVtZW50LAogICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7CiAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2VhcmNoRm9yTGFiZWxzKEJTVFIqIGxhYmVscywgdW5z
aWduZWQgY0xhYmVscywgSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIHVuc2lnbmVkKiByZXN1
bHREaXN0YW5jZSwgQk9PTCogcmVzdWx0SXNJbkNlbGxBYm92ZSwgQlNUUiogcmVzdWx0KTsKKyAg
ICAKICAgICAvLyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbgogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXREYXRhU291cmNlKCAKICAgICAgICAgLyogW2luXSAqLyBJ
V2ViRGF0YVNvdXJjZSogZGF0YVNvdXJjZSk7CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkhUTUxSZXByZXNlbnRhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0lXZWJIVE1MUmVwcmVzZW50YXRpb24uaWRsCShyZXZpc2lvbiA1MzQ4NikKKysrIFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSFRNTFJlcHJlc2VudGF0aW9uLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtOTUsMTEgKzk1LDE3IEBAIGludGVyZmFjZSBJV2ViSFRNTFJlcHJlc2VudGF0aW9u
IDogSVVua24KIAogICAgIC8qCiAgICAgICAgIC0gKE5TU3RyaW5nICopc2VhcmNoRm9yTGFiZWxz
OihOU0FycmF5ICopbGFiZWxzIGJlZm9yZUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50Owor
ICAgICAgICBEZXByZWNhdGVkOiB1c2UgdGhlIHZhcmlhbnQgdGhhdCBpbmNsdWRlcyByZXN1bHRE
aXN0YW5jZSBhbmQgcmVzdWx0SXNJbkNlbGxBYm92ZSBpbnN0ZWFkLgogICAgICovCi0gICAgSFJF
U1VMVCBzZWFyY2hGb3JMYWJlbHMoW2luLCBzaXplX2lzKGNMYWJlbHMpXSBCU1RSKiBsYWJlbHMs
IFtpbl0gaW50IGNMYWJlbHMsIFtpbl0gSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIFtvdXQs
IHJldHZhbF0gQlNUUiogcmVzdWx0KTsKKyAgICBIUkVTVUxUIGRlcHJlY2F0ZWRTZWFyY2hGb3JM
YWJlbHMoW2luLCBzaXplX2lzKGNMYWJlbHMpXSBCU1RSKiBsYWJlbHMsIFtpbl0gaW50IGNMYWJl
bHMsIFtpbl0gSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIFtvdXQsIHJldHZhbF0gQlNUUiog
cmVzdWx0KTsKIAogICAgIC8qCiAgICAgICAgIC0gKE5TU3RyaW5nICopbWF0Y2hMYWJlbHM6KE5T
QXJyYXkgKilsYWJlbHMgYWdhaW5zdEVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50OwogICAg
ICovCiAgICAgSFJFU1VMVCBtYXRjaExhYmVscyhbaW4sIHNpemVfaXMoY0xhYmVscyldIEJTVFIq
IGxhYmVscywgW2luXSBpbnQgY0xhYmVscywgW2luXSBJRE9NRWxlbWVudCogYWdhaW5zdEVsZW1l
bnQsIFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKKworICAgIC8qCisgICAgICAgIC0gKE5T
U3RyaW5nICopc2VhcmNoRm9yTGFiZWxzOihOU0FycmF5ICopbGFiZWxzIGJlZm9yZUVsZW1lbnQ6
KERPTUVsZW1lbnQgKillbGVtZW50IHJlc3VsdERpc3RhbmNlOihOU1VJbnRlZ2VyKilvdXREaXN0
YW5jZSByZXN1bHRJc0luQ2VsbEFib3ZlOihCT09MKilvdXRJc0luQ2VsbEFib3ZlOworICAgICov
CisgICAgSFJFU1VMVCBzZWFyY2hGb3JMYWJlbHMoW2luLCBzaXplX2lzKGNMYWJlbHMpXSBCU1RS
KiBsYWJlbHMsIFtpbl0gdW5zaWduZWQgY0xhYmVscywgW2luXSBJRE9NRWxlbWVudCogYmVmb3Jl
RWxlbWVudCwgW291dF0gdW5zaWduZWQqIHJlc3VsdERpc3RhbmNlLCBbb3V0XSBCT09MKiByZXN1
bHRJc0luQ2VsbEFib3ZlLCBbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7CiB9CkluZGV4OiBX
ZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L0ludGVyZmFjZXMvV2ViS2l0LmlkbAkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJLaXQvd2luL0lu
dGVyZmFjZXMvV2ViS2l0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDQgKzI5MywzIEBAIGxp
YnJhcnkgV2ViS2l0CiAgICAgICAgIFtkZWZhdWx0XSBpbnRlcmZhY2UgSVdlYkdlb2xvY2F0aW9u
UG9zaXRpb247CiAgICAgfQogfQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46944</attachid>
            <date>2010-01-19 13:33:02 -0800</date>
            <delta_ts>2010-01-19 15:13:16 -0800</delta_ts>
            <desc>Revised patch that replaces line-ending &quot;( &quot;s with &quot;(&quot; to make style checking script happy.</desc>
            <filename>searchForLabelsBeforeElement_patch2.txt</filename>
            <type>text/plain</type>
            <size>34442</size>
            <attacher name="John Sullivan">sullivan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDEtMTkgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODU0CisgICAgICAgIFdvdWxkIGxpa2UgYSB2YXJpYW50IG9mIFdlYkhUTUxSZXByZXNlbnRh
dGlvbidzIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQgdGhhdCByZXR1cm5zIAorICAgICAg
ICBtb3JlIGluZm8gYWJvdXQgd2hlcmUgdGhlIHJlc3VsdCB3YXMgZm91bmQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
anVzdCBhZGRzIGEgY291cGxlIG9mIG91dCBwYXJhbWV0ZXJzIGZvciB0aGUgYmVuZWZpdCBvZiBX
ZWJLaXQgY2xpZW50cy4KKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgIFVw
ZGF0ZWQgbWFuZ2xlZCBzaWduYXR1cmUgZm9yIGV4cG9ydC4KKworICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bCk6CisgICAgICAgIE5vdyBmaWxscyBpbiBhbiBvdXQgcGFyYW1ldGVyIHdpdGggdGhlIG51bWJl
ciBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBjZWxsLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQpOgorICAgICAgICBOb3cg
ZmlsbHMgaW4gYW4gb3V0IHBhcmFtZXRlciB3aXRoIHRoZSBkaXN0YW5jZSBhcyBhIG51bWJlciBv
ZiBjaGFyYWN0ZXJzLCBhbmQgYW5vdGhlcgorICAgICAgICB3aXRoIGEgYm9vbCBmb3Igd2hldGhl
ciB0aGUgcmVzdWx0IHdhcyBpbiBhIHRhYmxlIGNlbGwgYWJvdmUgdGhlIGN1cnJlbnQgY2VsbCAo
b3RoZXJ3aXNlCisgICAgICAgIGl0IHdhcyBmb3VuZCBpbiB0aGUgdGV4dCBiZWZvcmUgdGhpcyBl
bGVtZW50IGFuZCBhZnRlciB0aGUgcHJldmlvdXMgZWxlbWVudCBvciBzdGFydCBvZiBmb3JtKS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgVXBkYXRlZCBzaWduYXR1cmVzLgor
CisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6c2VhcmNoRm9yTlNMYWJlbHNBYm92ZUNlbGwpOgorICAgICAgICBTYW1lIGFzIGFib3ZlLiBU
aGlzIGlzIGEgcGFyYWxsZWwgY29weSBvZiB0aGUgZnVuY3Rpb24gdXNpbmcgTWFjLXNwZWNpZmlj
IGRhdGEgc3RydWN0dXJlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWFyY2hGb3JMYWJl
bHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgRGl0dG8KKwogMjAxMC0wMS0xOSAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFJvYmVuLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJDb3JlL1dlYkNv
cmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw3ICs1MjAsNyBAQCBfX1pON1dlYkNv
cmU1RnJhbWUyM3Zpc2libGVQb3NpdGlvbkZvclBvCiBfX1pON1dlYkNvcmU1RnJhbWUyNGNvbXB1
dGVBbmRTZXRUeXBpbmdTdHlsZUVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFj
dGlvbkUKIF9fWk43V2ViQ29yZTVGcmFtZTI0c2V0RXhjbHVkZUZyb21UZXh0U2VhcmNoRWIKIF9f
Wk43V2ViQ29yZTVGcmFtZTI1bWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudEVQN05TQXJyYXlQTlNf
N0VsZW1lbnRFCi1fX1pON1dlYkNvcmU1RnJhbWUyOHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1l
bnRFUDdOU0FycmF5UE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlNUZyYW1lMjhzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50RVA3TlNBcnJheVBOU183RWxlbWVudEVQbVBiCiBfX1pON1dlYkNv
cmU1RnJhbWUzNHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWRFYgogX19aTjdXZWJD
b3JlNUZyYW1lNGluaXRFdgogX19aTjdXZWJDb3JlNUZyYW1lNnNjcmlwdEV2CkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJ
KHJldmlzaW9uIDUzNDg2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogY3JlYXRlUmVn
RXhwRm8KICAgICByZXR1cm4gbmV3IFJlZ3VsYXJFeHByZXNzaW9uKHBhdHRlcm4sIFRleHRDYXNl
SW5zZW5zaXRpdmUpOwogfQogCi1TdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bChSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwLCBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbCkK
K1N0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNzaW9u
KiByZWdFeHAsIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBjZWxsLCBzaXplX3QqIHJlc3VsdERpc3Rh
bmNlRnJvbVN0YXJ0T2ZDZWxsKQogewogICAgIFJlbmRlck9iamVjdCogY2VsbFJlbmRlcmVyID0g
Y2VsbC0+cmVuZGVyZXIoKTsKIApAQCAtNDI5LDIzICs0MjksMzAgQEAgU3RyaW5nIEZyYW1lOjpz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUgogCiAgICAgICAgICAgICBpZiAoYWJvdmVDZWxsKSB7
CiAgICAgICAgICAgICAgICAgLy8gc2VhcmNoIHdpdGhpbiB0aGUgYWJvdmUgY2VsbCB3ZSBmb3Vu
ZCBmb3IgYSBtYXRjaAorICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGhTZWFyY2hlZCA9IDA7
ICAgIAogICAgICAgICAgICAgICAgIGZvciAoTm9kZSogbiA9IGFib3ZlQ2VsbC0+Zmlyc3RDaGls
ZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShhYm92ZUNlbGwpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBub2RlU3RyaW5nID0gbi0+bm9kZVZhbHVlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9zID0gcmVnRXhwLT5zZWFyY2hSZXYobm9kZVN0
cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID49IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocG9zID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpyZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCA9IGxlbmd0aFNlYXJj
aGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlU3RyaW5nLnN1YnN0
cmluZyhwb3MsIHJlZ0V4cC0+bWF0Y2hlZExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFNlYXJjaGVkICs9IG5vZGVTdHJp
bmcubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLy8gQW55IHJlYXNvbiBpbiBwcmFj
dGljZSB0byBzZWFyY2ggYWxsIGNlbGxzIGluIHRoYXQgYXJlIGFib3ZlIGNlbGw/CisgICAgaWYg
KHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKQorICAgICAgICAqcmVzdWx0RGlzdGFuY2VG
cm9tU3RhcnRPZkNlbGwgPSBub3RGb3VuZDsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFiZWxzLCBFbGVtZW50KiBlbGVtZW50KQorU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQq
IGVsZW1lbnQsIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJv
dmUpCiB7CiAgICAgT3duUHRyPFJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoY3JlYXRlUmVnRXhw
Rm9yTGFiZWxzKGxhYmVscykpOwogICAgIC8vIFdlIHN0b3Agc2VhcmNoaW5nIGFmdGVyIHdlJ3Zl
IHNlZW4gdGhpcyBtYW55IGNoYXJzCkBAIC00NTcsNiArNDY0LDExIEBAIFN0cmluZyBGcmFtZTo6
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICBIVE1MVGFibGVDZWxsRWxlbWVudCogc3Rh
cnRpbmdUYWJsZUNlbGwgPSAwOwogICAgIGJvb2wgc2VhcmNoZWRDZWxsQWJvdmUgPSBmYWxzZTsK
IAorICAgIGlmIChyZXN1bHREaXN0YW5jZSkKKyAgICAgICAgKnJlc3VsdERpc3RhbmNlID0gbm90
Rm91bmQ7CisgICAgaWYgKHJlc3VsdElzSW5DZWxsQWJvdmUpCisgICAgICAgICpyZXN1bHRJc0lu
Q2VsbEFib3ZlID0gZmFsc2U7CisgICAgCiAgICAgLy8gd2FsayBiYWNrd2FyZHMgaW4gdGhlIG5v
ZGUgdHJlZSwgdW50aWwgYW5vdGhlciBlbGVtZW50LCBvciBmb3JtLCBvciBlbmQgb2YgdHJlZQog
ICAgIGludCB1bnNpZ25lZCBsZW5ndGhTZWFyY2hlZCA9IDA7CiAgICAgTm9kZSogbjsKQEAgLTQ3
Miw5ICs0ODQsMTIgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZQog
ICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUodGRUYWcpICYmICFzdGFydGluZ1RhYmxl
Q2VsbCkgewogICAgICAgICAgICAgc3RhcnRpbmdUYWJsZUNlbGwgPSBzdGF0aWNfY2FzdDxIVE1M
VGFibGVDZWxsRWxlbWVudCo+KG4pOwogICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUo
dHJUYWcpICYmIHN0YXJ0aW5nVGFibGVDZWxsKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVzdWx0
ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdUYWJsZUNl
bGwpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgU3Ry
aW5nIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAuZ2V0KCksIHN0YXJ0
aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKKyAg
ICAgICAgICAgICAgICAgICAgKnJlc3VsdElzSW5DZWxsQWJvdmUgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZWFyY2hl
ZENlbGxBYm92ZSA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYm
IG4tPnJlbmRlcmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09
IFZJU0lCTEUpIHsKICAgICAgICAgICAgIC8vIEZvciBlYWNoIHRleHQgY2h1bmssIHJ1biB0aGUg
cmVnZXhwCkBAIC00ODMsMTYgKzQ5OCwyNSBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVs
c0JlZm9yZUVsZW1lCiAgICAgICAgICAgICBpZiAobGVuZ3RoU2VhcmNoZWQgKyBub2RlU3RyaW5n
Lmxlbmd0aCgpID4gbWF4Q2hhcnNTZWFyY2hlZCkKICAgICAgICAgICAgICAgICBub2RlU3RyaW5n
ID0gbm9kZVN0cmluZy5yaWdodChjaGFyc1NlYXJjaGVkVGhyZXNob2xkIC0gbGVuZ3RoU2VhcmNo
ZWQpOwogICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC0+c2VhcmNoUmV2KG5vZGVTdHJpbmcp
OwotICAgICAgICAgICAgaWYgKHBvcyA+PSAwKQorICAgICAgICAgICAgaWYgKHBvcyA+PSAwKSB7
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNlKQorICAgICAgICAgICAgICAgICAg
ICAqcmVzdWx0RGlzdGFuY2UgPSBsZW5ndGhTZWFyY2hlZDsKICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAtPm1hdGNoZWRMZW5ndGgoKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBsZW5ndGhTZWFyY2hlZCArPSBub2RlU3RyaW5nLmxl
bmd0aCgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gSWYgd2Ugc3RhcnRlZCBpbiBhIGNl
bGwsIGJ1dCBiYWlsZWQgYmVjYXVzZSB3ZSBmb3VuZCB0aGUgc3RhcnQgb2YgdGhlIGZvcm0gb3Ig
dGhlCiAgICAgLy8gcHJldmlvdXMgZWxlbWVudCwgd2Ugc3RpbGwgbWlnaHQgbmVlZCB0byBzZWFy
Y2ggdGhlIHJvdyBhYm92ZSB1cyBmb3IgYSBsYWJlbC4KLSAgICBpZiAoc3RhcnRpbmdUYWJsZUNl
bGwgJiYgIXNlYXJjaGVkQ2VsbEFib3ZlKQotICAgICAgICAgcmV0dXJuIHNlYXJjaEZvckxhYmVs
c0Fib3ZlQ2VsbChyZWdFeHAuZ2V0KCksIHN0YXJ0aW5nVGFibGVDZWxsKTsKKyAgICBpZiAoc3Rh
cnRpbmdUYWJsZUNlbGwgJiYgIXNlYXJjaGVkQ2VsbEFib3ZlKSB7CisgICAgICAgICBTdHJpbmcg
cmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdU
YWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKKyAgICAgICAgICAgICAg
ICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJl
dmlzaW9uIDUzNDg2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2MCw4ICsyNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU2VsZWN0aW9u
Q29udHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0OwogCi0gICAgICAgIFN0cmlu
ZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVD
ZWxsRWxlbWVudCopOwotICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVu
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7CisgICAgICAgIFN0cmlu
ZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVD
ZWxsRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOworICAg
ICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFiZWxzLCBFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5jZSwgYm9vbCogcmVz
dWx0SXNJbkNlbGxBYm92ZSk7CiAgICAgICAgIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RFbGVt
ZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqKTsKIAogICAgICAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZy
YW1lUG9pbnQpOwpAQCAtMjcyLDggKzI3Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAv
LyA9PT0gdW5kZWNpZGVkLCB3b3VsZCBsaWtlIHRvIGNvbnNpZGVyIG1vdmluZyB0byBhbm90aGVy
IGNsYXNzCiAKICAgICBwdWJsaWM6Ci0gICAgICAgIE5TU3RyaW5nKiBzZWFyY2hGb3JOU0xhYmVs
c0Fib3ZlQ2VsbChSZWd1bGFyRXhwcmVzc2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kik7Ci0g
ICAgICAgIE5TU3RyaW5nKiBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxh
YmVscywgRWxlbWVudCopOworICAgICAgICBOU1N0cmluZyogc2VhcmNoRm9yTlNMYWJlbHNBYm92
ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qLCBIVE1MVGFibGVDZWxsRWxlbWVudCosIHNpemVfdCog
cmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpOworICAgICAgICBOU1N0cmluZyogc2VhcmNo
Rm9yTGFiZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3Qq
IHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAgICAgTlNT
dHJpbmcqIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoTlNBcnJheSogbGFiZWxzLCBFbGVtZW50
Kik7CiAKICAgICAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9w
YWdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1l
TWFjLm1tCShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Np
b24qIHJlZ0V4cEZvckxhYmVsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTlNTdHJpbmcqIEZy
YW1lOjpzZWFyY2hGb3JOU0xhYmVsc0Fib3ZlQ2VsbChSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhw
LCBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbCkKK05TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9y
TlNMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cCwgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCiB7
CiAgICAgUmVuZGVyT2JqZWN0KiBjZWxsUmVuZGVyZXIgPSBjZWxsLT5yZW5kZXJlcigpOwogCkBA
IC0xNTcsMjMgKzE1NywzMCBAQCBOU1N0cmluZyogRnJhbWU6OnNlYXJjaEZvck5TTGFiZWxzQWJv
dmVDCiAKICAgICAgICAgICAgIGlmIChhYm92ZUNlbGwpIHsKICAgICAgICAgICAgICAgICAvLyBz
ZWFyY2ggd2l0aGluIHRoZSBhYm92ZSBjZWxsIHdlIGZvdW5kIGZvciBhIG1hdGNoCisgICAgICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aFNlYXJjaGVkID0gMDsgICAgCiAgICAgICAgICAgICAgICAg
Zm9yIChOb2RlKiBuID0gYWJvdmVDZWxsLT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJz
ZU5leHROb2RlKGFib3ZlQ2VsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG4tPmlzVGV4
dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZWFj
aCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIG5vZGVTdHJpbmcgPSBuLT5ub2RlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBwb3MgPSByZWdFeHAtPnNlYXJjaFJldihub2RlU3RyaW5nKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChwb3MgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3Mg
Pj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHREaXN0YW5jZUZy
b21TdGFydE9mQ2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdERp
c3RhbmNlRnJvbVN0YXJ0T2ZDZWxsID0gbGVuZ3RoU2VhcmNoZWQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywgcmVnRXhwLT5tYXRj
aGVkTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgbGVuZ3RoU2VhcmNoZWQgKz0gbm9kZVN0cmluZy5sZW5ndGgoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KICAgICAvLyBBbnkgcmVhc29uIGluIHByYWN0aWNlIHRvIHNlYXJjaCBhbGwgY2Vs
bHMgaW4gdGhhdCBhcmUgYWJvdmUgY2VsbD8KKyAgICBpZiAocmVzdWx0RGlzdGFuY2VGcm9tU3Rh
cnRPZkNlbGwpCisgICAgICAgICpyZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCA9IG5vdEZv
dW5kOwogICAgIHJldHVybiBuaWw7CiB9CiAKLU5TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9yTGFi
ZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqIGVsZW1lbnQpCitOU1N0
cmluZyogRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoTlNBcnJheSogbGFiZWxz
LCBFbGVtZW50KiBlbGVtZW50LCBzaXplX3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJ
c0luQ2VsbEFib3ZlKQogewogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHAgPSByZWdFeHBG
b3JMYWJlbHMobGFiZWxzKTsKICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyBhZnRlciB3ZSd2ZSBz
ZWVuIHRoaXMgbWFueSBjaGFycwpAQCAtMTg0LDYgKzE5MSwxMSBAQCBOU1N0cmluZyogRnJhbWU6
OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgLy8gSWYgdGhlIHN0YXJ0aW5nIGVsZW1lbnQg
aXMgd2l0aGluIGEgdGFibGUsIHRoZSBjZWxsIHRoYXQgY29udGFpbnMgaXQKICAgICBIVE1MVGFi
bGVDZWxsRWxlbWVudCogc3RhcnRpbmdUYWJsZUNlbGwgPSAwOwogICAgIGJvb2wgc2VhcmNoZWRD
ZWxsQWJvdmUgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAocmVzdWx0RGlzdGFuY2UpCisgICAgICAg
ICpyZXN1bHREaXN0YW5jZSA9IG5vdEZvdW5kOworICAgIGlmIChyZXN1bHRJc0luQ2VsbEFib3Zl
KQorICAgICAgICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9IGZhbHNlOwogCiAgICAgLy8gd2FsayBi
YWNrd2FyZHMgaW4gdGhlIG5vZGUgdHJlZSwgdW50aWwgYW5vdGhlciBlbGVtZW50LCBvciBmb3Jt
LCBvciBlbmQgb2YgdHJlZQogICAgIGludCB1bnNpZ25lZCBsZW5ndGhTZWFyY2hlZCA9IDA7CkBA
IC0yMDAsOSArMjEyLDEyIEBAIE5TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3Jl
RWwKICAgICAgICAgfSBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKHRkVGFnKSAmJiAhc3RhcnRpbmdU
YWJsZUNlbGwpIHsKICAgICAgICAgICAgIHN0YXJ0aW5nVGFibGVDZWxsID0gc3RhdGljX2Nhc3Q8
SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihuKTsKICAgICAgICAgfSBlbHNlIGlmIChuLT5oYXNUYWdO
YW1lKHRyVGFnKSAmJiBzdGFydGluZ1RhYmxlQ2VsbCkgewotICAgICAgICAgICAgTlNTdHJpbmcq
IHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAsIHN0YXJ0aW5nVGFibGVD
ZWxsKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgW3Jlc3VsdCBsZW5ndGhdID4gMCkKKyAg
ICAgICAgICAgIE5TU3RyaW5nKiByZXN1bHQgPSBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwocmVn
RXhwLCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOworICAgICAgICAgICAgaWYg
KHJlc3VsdCAmJiBbcmVzdWx0IGxlbmd0aF0gPiAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdElzSW5DZWxsQWJvdmUpCisgICAgICAgICAgICAgICAgICAgICpyZXN1bHRJc0luQ2VsbEFi
b3ZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
fQogICAgICAgICAgICAgc2VhcmNoZWRDZWxsQWJvdmUgPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
aWYgKG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5yZW5kZXJlcigpICYmIG4tPnJlbmRlcmVyKCktPnN0
eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CiAgICAgICAgICAgICAvLyBGb3IgZWFj
aCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cApAQCAtMjExLDkgKzIyNiwxMSBAQCBOU1N0cmlu
ZyogRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgICAgICAgICBpZiAobGVuZ3Ro
U2VhcmNoZWQgKyBub2RlU3RyaW5nLmxlbmd0aCgpID4gbWF4Q2hhcnNTZWFyY2hlZCkKICAgICAg
ICAgICAgICAgICBub2RlU3RyaW5nID0gbm9kZVN0cmluZy5yaWdodChjaGFyc1NlYXJjaGVkVGhy
ZXNob2xkIC0gbGVuZ3RoU2VhcmNoZWQpOwogICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC0+
c2VhcmNoUmV2KG5vZGVTdHJpbmcpOwotICAgICAgICAgICAgaWYgKHBvcyA+PSAwKQorICAgICAg
ICAgICAgaWYgKHBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNl
KQorICAgICAgICAgICAgICAgICAgICAqcmVzdWx0RGlzdGFuY2UgPSBsZW5ndGhTZWFyY2hlZDsK
ICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAt
Pm1hdGNoZWRMZW5ndGgoKSk7Ci0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxlbmd0aFNl
YXJjaGVkICs9IG5vZGVTdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjEs
OSArMjM4LDEyIEBAIE5TU3RyaW5nKiBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWwKICAg
ICAvLyBJZiB3ZSBzdGFydGVkIGluIGEgY2VsbCwgYnV0IGJhaWxlZCBiZWNhdXNlIHdlIGZvdW5k
IHRoZSBzdGFydCBvZiB0aGUgZm9ybSBvciB0aGUKICAgICAvLyBwcmV2aW91cyBlbGVtZW50LCB3
ZSBzdGlsbCBtaWdodCBuZWVkIHRvIHNlYXJjaCB0aGUgcm93IGFib3ZlIHVzIGZvciBhIGxhYmVs
LgogICAgIGlmIChzdGFydGluZ1RhYmxlQ2VsbCAmJiAhc2VhcmNoZWRDZWxsQWJvdmUpIHsKLSAg
ICAgICAgTlNTdHJpbmcqIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAs
IHN0YXJ0aW5nVGFibGVDZWxsKTsKLSAgICAgICAgaWYgKHJlc3VsdCAmJiBbcmVzdWx0IGxlbmd0
aF0gPiAwKQorICAgICAgICBOU1N0cmluZyogcmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVD
ZWxsKHJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKKyAgICAgICAg
aWYgKHJlc3VsdCAmJiBbcmVzdWx0IGxlbmd0aF0gPiAwKSB7CisgICAgICAgICAgICBpZiAocmVz
dWx0SXNJbkNlbGxBYm92ZSkKKyAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIHJldHVybiBuaWw7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEwLTAxLTE5ICBK
b2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg1NAorICAgICAgICBXb3VsZCBsaWtlIGEg
dmFyaWFudCBvZiBXZWJIVE1MUmVwcmVzZW50YXRpb24ncyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVF
bGVtZW50IHRoYXQgcmV0dXJucyAKKyAgICAgICAgbW9yZSBpbmZvIGFib3V0IHdoZXJlIHRoZSBy
ZXN1bHQgd2FzIGZvdW5kCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5oOgorICAgICAgICBEZWNs
YXJlIC1zZWFyY2hGb3JMYWJlbHM6YmVmb3JlRWxlbWVudDpyZXN1bHREaXN0YW5jZTpyZXN1bHRJ
c0luQ2VsbEFib3ZlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIHNlYXJjaEZvckxh
YmVsczpiZWZvcmVFbGVtZW50Ol0pOgorICAgICAgICBOb3cgY2FsbHMgdGhyb3VnaCB0byBzZWFy
Y2hGb3JMYWJlbHM6YmVmb3JlRWxlbWVudDpyZXN1bHREaXN0YW5jZTpyZXN1bHRJc0luQ2VsbEFi
b3ZlLgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gc2VhcmNoRm9yTGFiZWxzOmJl
Zm9yZUVsZW1lbnQ6cmVzdWx0RGlzdGFuY2U6cmVzdWx0SXNJbkNlbGxBYm92ZTpdKToKKyAgICAg
ICAgTmV3IG1ldGhvZCwgY2FsbHMgdGhyb3VnaCB0byBXZWJDb3JlLgorCiAyMDEwLTAxLTE5ICBE
YXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
Um9iZW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5o
CShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsMTEgQEAKIC0gKERPTUVsZW1lbnQg
Kilmb3JtRm9yRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7CiAtIChET01FbGVtZW50ICop
Y3VycmVudEZvcm07CiAtIChOU0FycmF5ICopY29udHJvbHNJbkZvcm06KERPTUVsZW1lbnQgKilm
b3JtOwotLSAoTlNTdHJpbmcgKilzZWFyY2hGb3JMYWJlbHM6KE5TQXJyYXkgKilsYWJlbHMgYmVm
b3JlRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7CistIChOU1N0cmluZyAqKXNlYXJjaEZv
ckxhYmVsczooTlNBcnJheSAqKWxhYmVscyBiZWZvcmVFbGVtZW50OihET01FbGVtZW50ICopZWxl
bWVudCByZXN1bHREaXN0YW5jZTooTlNVSW50ZWdlciopb3V0RGlzdGFuY2UgcmVzdWx0SXNJbkNl
bGxBYm92ZTooQk9PTCopb3V0SXNJbkNlbGxBYm92ZTsKIC0gKE5TU3RyaW5nICopbWF0Y2hMYWJl
bHM6KE5TQXJyYXkgKilsYWJlbHMgYWdhaW5zdEVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50
OwogCisvLyBEZXByZWNhdGVkIFNQSQorLSAoTlNTdHJpbmcgKilzZWFyY2hGb3JMYWJlbHM6KE5T
QXJyYXkgKilsYWJlbHMgYmVmb3JlRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7IC8vIFVz
ZSAtc2VhcmNoRm9yTGFiZWxzOmJlZm9yZUVsZW1lbnQ6cmVzdWx0RGlzdGFuY2U6cmVzdWx0SXNJ
bkNlbGxBYm92ZToKKworCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0JKHJldmlzaW9uIDUzNDg2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNywy
NyBAQCBzdGF0aWMgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50RnJvCiAKIC0gKE5TU3Ry
aW5nICopc2VhcmNoRm9yTGFiZWxzOihOU0FycmF5ICopbGFiZWxzIGJlZm9yZUVsZW1lbnQ6KERP
TUVsZW1lbnQgKillbGVtZW50CiB7Ci0gICAgcmV0dXJuIGNvcmUoW19wcml2YXRlLT5kYXRhU291
cmNlIHdlYkZyYW1lXSktPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjb3Jl
KGVsZW1lbnQpKTsKKyAgICByZXR1cm4gW3NlbGYgc2VhcmNoRm9yTGFiZWxzOmxhYmVscyBiZWZv
cmVFbGVtZW50OmVsZW1lbnQgcmVzdWx0RGlzdGFuY2U6MCByZXN1bHRJc0luQ2VsbEFib3ZlOjBd
OworfQorCistIChOU1N0cmluZyAqKXNlYXJjaEZvckxhYmVsczooTlNBcnJheSAqKWxhYmVscyBi
ZWZvcmVFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudCByZXN1bHREaXN0YW5jZTooTlNVSW50
ZWdlciopb3V0RGlzdGFuY2UgcmVzdWx0SXNJbkNlbGxBYm92ZTooQk9PTCopb3V0SXNJbkNlbGxB
Ym92ZQoreworICAgIHNpemVfdCBkaXN0YW5jZTsKKyAgICBib29sIGlzSW5DZWxsQWJvdmU7Cisg
ICAgCisgICAgTlNTdHJpbmcgKnJlc3VsdCA9IGNvcmUoW19wcml2YXRlLT5kYXRhU291cmNlIHdl
YkZyYW1lXSktPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjb3JlKGVsZW1l
bnQpLCAmZGlzdGFuY2UsICZpc0luQ2VsbEFib3ZlKTsKKyAgICAKKyAgICBpZiAob3V0RGlzdGFu
Y2UpIHsKKyAgICAgICAgaWYgKGRpc3RhbmNlID09IG5vdEZvdW5kKQorICAgICAgICAgICAgKm91
dERpc3RhbmNlID0gTlNOb3RGb3VuZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm91dERp
c3RhbmNlID0gZGlzdGFuY2U7CisgICAgfQorCisgICAgaWYgKG91dElzSW5DZWxsQWJvdmUpCisg
ICAgICAgICpvdXRJc0luQ2VsbEFib3ZlID0gaXNJbkNlbGxBYm92ZTsKKyAgICAKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiAtIChOU1N0cmluZyAqKW1hdGNoTGFiZWxzOihOU0FycmF5ICopbGFi
ZWxzIGFnYWluc3RFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudApJbmRleDogV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDUzNDg2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNiBAQAorMjAxMC0wMS0xOSAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NTQK
KyAgICAgICAgV291bGQgbGlrZSBhIHZhcmlhbnQgb2YgV2ViSFRNTFJlcHJlc2VudGF0aW9uJ3Mg
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudCB0aGF0IHJldHVybnMgCisgICAgICAgIG1vcmUg
aW5mbyBhYm91dCB3aGVyZSB0aGUgcmVzdWx0IHdhcyBmb3VuZAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSFRNTFJlcHJl
c2VudGF0aW9uLmlkbDoKKyAgICAgICAgQ3JlYXRlZCB2YXJpYW50IG9mIHNlYXJjaEZvckxhYmVs
cyB0aGF0IGluY2x1ZGVzIGFkZGl0aW9uYWwgaW4vb3V0IHBhcmFtZXRlcnMgcmVzdWx0RGlzdGFu
Y2UgYW5kIHJlc3VsdElzSW5DZWxsQWJvdmUuCisgICAgICAgIAorICAgICAgICAqIEludGVyZmFj
ZXMvV2ViS2l0LmlkbDoKKyAgICAgICAgVG91Y2hlZCBpbiBvcmRlciB0byBnZXQgb3RoZXIgaWRs
IGNoYW5nZSB0byBwcm9wYWdhdGUgY29ycmVjdGx5LgorCisgICAgICAgICogV2ViSFRNTFJlcHJl
c2VudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZGVwcmVjYXRl
ZFNlYXJjaEZvckxhYmVscyk6CisgICAgICAgIFJlbmFtZWQgc2luY2UgaURMIGRvZXNuJ3Qgc3Vw
cG9ydCB0d28gZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGlmZmVyZW50IHNpZ25h
dHVyZXMuCisgICAgICAgIChXZWJIVE1MUmVwcmVzZW50YXRpb246OnNlYXJjaEZvckxhYmVscyk6
CisgICAgICAgIEltcGxlbWVudGVkIHZhcmlhbnQgb2Ygc2VhcmNoRm9yTGFiZWxzIHRoYXQgaW5j
bHVkZXMgYWRkaXRpb25hbCBpbi9vdXQgcGFyYW1ldGVycyByZXN1bHREaXN0YW5jZSBhbmQgcmVz
dWx0SXNJbkNlbGxBYm92ZS4KKworICAgICAgICAqIFdlYkhUTUxSZXByZXNlbnRhdGlvbi5oOgor
ICAgICAgICBEZWNsYXJlZCB2YXJpYW50IG9mIHNlYXJjaEZvckxhYmVscyB0aGF0IGluY2x1ZGVz
IGFkZGl0aW9uYWwgaW4vb3V0IHBhcmFtZXRlcnMgcmVzdWx0RGlzdGFuY2UgYW5kIHJlc3VsdElz
SW5DZWxsQWJvdmUuCisKIDIwMTAtMDEtMTkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTM0
ODYpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3OCwx
MyArMTI3OCwxNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjplbGVtZW50SXNQYXNzd29yZChJRE9NCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKLUhSRVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Jl
Zm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVscywgSURPTUVsZW1lbnQq
IGJlZm9yZUVsZW1lbnQsIEJTVFIqIHJlc3VsdCkKK0hSRVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZv
ckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCB1bnNpZ25lZCBjTGFiZWxz
LCBJRE9NRWxlbWVudCogYmVmb3JlRWxlbWVudCwgdW5zaWduZWQqIG91dFJlc3VsdERpc3RhbmNl
LCBCT09MKiBvdXRSZXN1bHRJc0luQ2VsbEFib3ZlLCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAgICAgfQogCisgICAgaWYgKG91dFJlc3VsdERpc3RhbmNlKQorICAgICAg
ICAqb3V0UmVzdWx0RGlzdGFuY2UgPSAwOworICAgIGlmIChvdXRSZXN1bHRJc0luQ2VsbEFib3Zl
KQorICAgICAgICAqb3V0UmVzdWx0SXNJbkNlbGxBYm92ZSA9IEZBTFNFOwogICAgICpyZXN1bHQg
PSAwOwogCiAgICAgaWYgKCFjTGFiZWxzKQpAQCAtMTMwMywxMSArMTMwNywxOCBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFCiAgICAgaWYgKCFjb3JlRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyBsYWJlbCA9IGNvcmVGcmFtZS0+
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChsYWJlbFN0cmluZ3MsIGNvcmVFbGVtZW50KTsK
KyAgICBzaXplX3QgcmVzdWx0RGlzdGFuY2U7CisgICAgYm9vbCByZXN1bHRJc0luQ2VsbEFib3Zl
OworICAgIFN0cmluZyBsYWJlbCA9IGNvcmVGcmFtZS0+c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxl
bWVudChsYWJlbFN0cmluZ3MsIGNvcmVFbGVtZW50LCAmcmVzdWx0RGlzdGFuY2UsICZyZXN1bHRJ
c0luQ2VsbEFib3ZlKTsKICAgICAKICAgICAqcmVzdWx0ID0gU3lzQWxsb2NTdHJpbmdMZW4obGFi
ZWwuY2hhcmFjdGVycygpLCBsYWJlbC5sZW5ndGgoKSk7CiAgICAgaWYgKGxhYmVsLmxlbmd0aCgp
ICYmICEqcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKKyAgICBpZiAob3V0
UmVzdWx0RGlzdGFuY2UpCisgICAgICAgICpvdXRSZXN1bHREaXN0YW5jZSA9IHJlc3VsdERpc3Rh
bmNlOworICAgIGlmIChvdXRSZXN1bHRJc0luQ2VsbEFib3ZlKQorICAgICAgICAqb3V0UmVzdWx0
SXNJbkNlbGxBYm92ZSA9IHJlc3VsdElzSW5DZWxsQWJvdmU7CisKICAgICByZXR1cm4gU19PSzsK
IH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViRnJhbWUuaAkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgSFJFU1VMVCBm
b3JtRm9yRWxlbWVudChJRE9NRWxlbWVudCogZWxlbWVudCwgSURPTUVsZW1lbnQqKiBmb3JtKTsK
ICAgICBIUkVTVUxUIGNvbnRyb2xzSW5Gb3JtKElET01FbGVtZW50KiBmb3JtLCBJRE9NRWxlbWVu
dCoqIGNvbnRyb2xzLCBpbnQqIGNDb250cm9scyk7CiAgICAgSFJFU1VMVCBlbGVtZW50SXNQYXNz
d29yZChJRE9NRWxlbWVudCogZWxlbWVudCwgYm9vbCogcmVzdWx0KTsKLSAgICBIUkVTVUxUIHNl
YXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVs
cywgSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VM
VCBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgdW5zaWdu
ZWQgY0xhYmVscywgSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIHVuc2lnbmVkKiByZXN1bHRE
aXN0YW5jZSwgQk9PTCogcmVzdWx0SXNJbkNlbGxBYm92ZSwgQlNUUiogcmVzdWx0KTsKICAgICBI
UkVTVUxUIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQg
Y0xhYmVscywgSURPTUVsZW1lbnQqIGFnYWluc3RFbGVtZW50LCBCU1RSKiByZXN1bHQpOwogICAg
IEhSRVNVTFQgY2FuUHJvdmlkZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCk7CiAKSW5kZXg6
IFdlYktpdC93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAJKHJldmlzaW9uIDUzNDg2KQorKysgV2Vi
S2l0L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMs
NyArMTAzLDcgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudAogCiAv
LyBJV2ViSFRNTFJlcHJlc2VudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpzdXBwb3J0ZWRNSU1FVHlwZXMoIAorSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246OnN1cHBvcnRlZE1J
TUVUeXBlcygKICAgICAgICAgLyogW291dF1baW5dICovIEJTVFIqIC8qdHlwZXMqLywKICAgICAg
ICAgLyogW291dF1baW5dICovIGludCogLypjVHlwZXMqLykKIHsKQEAgLTExMSw3ICsxMTEsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlCiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyggCitIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXMoCiAgICAgICAgIC8qIFtvdXRdW2luXSAqLyBCU1RSKiAvKnR5cGVzKi8sCiAgICAgICAgIC8q
IFtvdXRdW2luXSAqLyBpbnQqIC8qY1R5cGVzKi8pCiB7CkBAIC0xMTksNyArMTE5LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZQogICAgIHJldHVybiBFX05PVElN
UEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRh
dGlvbjo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJIVE1MUmVwcmVzZW50YXRpb246OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKAogICAgICAg
ICAvKiBbb3V0XVtpbl0gKi8gQlNUUiogLyp0eXBlcyovLAogICAgICAgICAvKiBbb3V0XVtpbl0g
Ki8gaW50KiAvKmNUeXBlcyovKQogewpAQCAtMTI3LDcgKzEyNyw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAg
IAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246OmF0dHJp
YnV0ZWRTdHJpbmdGcm9tRE9NTm9kZXMoIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJI
VE1MUmVwcmVzZW50YXRpb246OmF0dHJpYnV0ZWRTdHJpbmdGcm9tRE9NTm9kZXMoCiAgICAgICAg
IC8qIFtpbl0gKi8gSURPTU5vZGUqIC8qc3RhcnROb2RlKi8sCiAgICAgICAgIC8qIFtpbl0gKi8g
aW50IC8qc3RhcnRPZmZzZXQqLywKICAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogLyplbmRO
b2RlKi8sCkBAIC0xMzgsNyArMTM4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJI
VE1MUmVwcmVzZQogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZWxlbWVudFdpdGhOYW1lKCAKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjplbGVtZW50V2l0
aE5hbWUoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAogICAgICAgICAvKiBbaW5dICov
IElET01FbGVtZW50KiBmb3JtLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbGVt
ZW50KiogZWxlbWVudCkKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkhUTUxSZXByZXNlCiAgICAgcmV0dXJuIG1fZnJhbWUtPmVsZW1lbnRXaXRoTmFtZShu
YW1lLCBmb3JtLCBlbGVtZW50KTsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViSFRNTFJlcHJlc2VudGF0aW9uOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZSggCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZWxlbWVudERvZXNBdXRv
Q29tcGxldGUoCiAgICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1lbnQqIGVsZW1lbnQsCiAgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewpAQCAtMTU5LDcgKzE1OSw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UKICAgICByZXR1cm4g
aHI7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRh
dGlvbjo6ZWxlbWVudElzUGFzc3dvcmQoIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJI
VE1MUmVwcmVzZW50YXRpb246OmVsZW1lbnRJc1Bhc3N3b3JkKAogICAgICAgICAvKiBbaW5dICov
IElET01FbGVtZW50KiBlbGVtZW50LAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IHJlc3VsdCkKIHsKQEAgLTE2OSw3ICsxNjksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkhUTUxSZXByZXNlCiAgICAgcmV0dXJuIGhyOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246OmZvcm1Gb3JFbGVtZW50KCAKK0hSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpmb3JtRm9yRWxlbWVu
dCgKICAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCogZWxlbWVudCwKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCoqIGZvcm0pCiB7CkBAIC0xNzksNyArMTc5LDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZQogICAgIHJldHVybiBt
X2ZyYW1lLT5mb3JtRm9yRWxlbWVudChlbGVtZW50LCBmb3JtKTsKIH0KICAgICAKLUhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjdXJyZW50Rm9ybSggCitI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3VycmVudEZv
cm0oCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQqKiBmb3JtKQogewog
ICAgIGlmICghbV9mcmFtZSkKQEAgLTE4OCw3ICsxODgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkhUTUxSZXByZXNlCiAgICAgcmV0dXJuIG1fZnJhbWUtPmN1cnJlbnRGb3JtKGZv
cm0pOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50
YXRpb246OmNvbnRyb2xzSW5Gb3JtKCAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjpjb250cm9sc0luRm9ybSgKICAgICAgICAgLyogW2luXSAqLyBJRE9N
RWxlbWVudCogZm9ybSwKICAgICAgICAgLyogW291dF1baW5dICovIElET01FbGVtZW50KiogY29u
dHJvbHMsCiAgICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNDb250cm9scykKQEAgLTE5Niwx
NiArMTk2LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UKICAg
ICByZXR1cm4gbV9mcmFtZS0+Y29udHJvbHNJbkZvcm0oZm9ybSwgY29udHJvbHMsIGNDb250cm9s
cyk7CiB9CiAgICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRh
dGlvbjo6c2VhcmNoRm9yTGFiZWxzKCAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjpkZXByZWNhdGVkU2VhcmNoRm9yTGFiZWxzKAogICAgICAgICAvKiBb
c2l6ZV9pc11baW5dICovIEJTVFIqIGxhYmVscywKICAgICAgICAgLyogW2luXSAqLyBpbnQgY0xh
YmVscywKICAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCogYmVmb3JlRWxlbWVudCwKICAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIG1f
ZnJhbWUtPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjTGFiZWxzLCBiZWZv
cmVFbGVtZW50LCByZXN1bHQpOworICAgIHJldHVybiBtX2ZyYW1lLT5zZWFyY2hGb3JMYWJlbHNC
ZWZvcmVFbGVtZW50KGxhYmVscywgY0xhYmVscywgYmVmb3JlRWxlbWVudCwgMCwgMCwgcmVzdWx0
KTsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjptYXRjaExhYmVscyggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXBy
ZXNlbnRhdGlvbjo6bWF0Y2hMYWJlbHMoCiAgICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gQlNU
UiogbGFiZWxzLAogICAgICAgICAvKiBbaW5dICovIGludCBjTGFiZWxzLAogICAgICAgICAvKiBb
aW5dICovIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVudCwKQEAgLTIxNCwxNiArMjE0LDIxIEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UKICAgICByZXR1cm4gbV9m
cmFtZS0+bWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChsYWJlbHMsIGNMYWJlbHMsIGFnYWluc3RF
bGVtZW50LCByZXN1bHQpOwogfQogCitIUkVTVUxUIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6c2Vh
cmNoRm9yTGFiZWxzKEJTVFIqIGxhYmVscywgdW5zaWduZWQgY0xhYmVscywgSURPTUVsZW1lbnQq
IGJlZm9yZUVsZW1lbnQsIHVuc2lnbmVkKiByZXN1bHREaXN0YW5jZSwgQk9PTCogcmVzdWx0SXNJ
bkNlbGxBYm92ZSwgQlNUUiogcmVzdWx0KQoreworICAgIHJldHVybiBtX2ZyYW1lLT5zZWFyY2hG
b3JMYWJlbHNCZWZvcmVFbGVtZW50KGxhYmVscywgY0xhYmVscywgYmVmb3JlRWxlbWVudCwgcmVz
dWx0RGlzdGFuY2UsIHJlc3VsdElzSW5DZWxsQWJvdmUsIHJlc3VsdCk7Cit9CisKIC8vIElXZWJE
b2N1bWVudFJlcHJlc2VudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJIVE1MUmVwcmVzZW50YXRpb246OnNldERhdGFTb3VyY2UoIAorSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246OnNldERhdGFTb3VyY2UoCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UqIC8qZGF0YVNvdXJjZSovKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAgICAgCi1IUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6cmVjZWl2ZWREYXRhKCAK
K0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpyZWNlaXZl
ZERhdGEoCiAgICAgICAgIC8qIFtpbl0gKi8gSVN0cmVhbSogLypkYXRhKi8sCiAgICAgICAgIC8q
IFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UqIC8qZGF0YVNvdXJjZSovKQogewpAQCAtMjMxLDcgKzIz
Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UKICAgICByZXR1
cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1M
UmVwcmVzZW50YXRpb246OnJlY2VpdmVkRXJyb3IoIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJIVE1MUmVwcmVzZW50YXRpb246OnJlY2VpdmVkRXJyb3IoCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkVycm9yKiAvKmVycm9yKi8sCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkRhdGFTb3Vy
Y2UqIC8qZGF0YVNvdXJjZSovKQogewpAQCAtMjM5LDE0ICsyNDQsMTQgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZQogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAg
ICAgCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Zmlu
aXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2UoIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJIVE1MUmVwcmVzZW50YXRpb246OmZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlKAogICAg
ICAgICAvKiBbaW5dICovIElXZWJEYXRhU291cmNlKiAvKmRhdGFTb3VyY2UqLykKIHsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogICAgIAotSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNhblByb3ZpZGVE
b2N1bWVudFNvdXJjZSggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6Y2FuUHJvdmlkZURvY3VtZW50U291cmNlKAogICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCkKIHsKICAgICBib29sIGNhblByb3ZpZGVTb3VyY2U7CkBAIC0y
NTUsNyArMjYwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIVE1MUmVwcmVzZQog
ICAgIHJldHVybiBocjsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjpkb2N1bWVudFNvdXJjZSggCitIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6ZG9jdW1lbnRTb3VyY2UoCiAgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogc291cmNlKQogewogICAgIGlmICghc291cmNlKQpAQCAtMzA2
LDcgKzMxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRNTFJlcHJlc2UKICAg
ICByZXR1cm4gU19PSzsKIH0KICAgICAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjp0aXRsZSggCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhU
TUxSZXByZXNlbnRhdGlvbjo6dGl0bGUoCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogLypkb2NUaXRsZSovKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogV2Vi
S2l0L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5oCShyZXZpc2lvbiA1MzQ4NikKKysrIFdlYktpdC93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDg0ICs0NSw4NyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7
CiAKICAgICAvLyBJV2ViSFRNTFJlcHJlc2VudGF0aW9uCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHN1cHBvcnRlZE1JTUVUeXBlcyggCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHN1cHBvcnRlZE1JTUVUeXBlcygKICAgICAgICAgLyogW291dF1b
aW5dICovIEJTVFIqIHR5cGVzLAogICAgICAgICAvKiBbb3V0XVtpbl0gKi8gaW50KiBjVHlwZXMp
OwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlcyggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKAogICAgICAgICAvKiBbb3V0XVtpbl0gKi8gQlNU
UiogdHlwZXMsCiAgICAgICAgIC8qIFtvdXRdW2luXSAqLyBpbnQqIGNUeXBlcyk7CiAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoCiAgICAgICAgIC8qIFtvdXRdW2luXSAqLyBCU1RSKiB0eXBlcywKICAgICAg
ICAgLyogW291dF1baW5dICovIGludCogY1R5cGVzKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlZFN0cmluZ0Zyb21ET01Ob2RlcyggCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZWRTdHJpbmdGcm9tRE9N
Tm9kZXMoCiAgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIHN0YXJ0Tm9kZSwKICAgICAgICAg
LyogW2luXSAqLyBpbnQgc3RhcnRPZmZzZXQsCiAgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUq
IGVuZE5vZGUsCiAgICAgICAgIC8qIFtpbl0gKi8gaW50IGVuZE9mZnNldCwKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRGF0YU9iamVjdCoqIGF0dHJpYnV0ZWRTdHJpbmcpOwogICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbGVtZW50V2l0aE5hbWUoIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbGVtZW50V2l0aE5hbWUoCiAg
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAogICAgICAgICAvKiBbaW5dICovIElET01FbGVt
ZW50KiBmb3JtLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbGVtZW50KiogZWxl
bWVudCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZWxlbWVudERvZXNBdXRvQ29tcGxldGUoCiAgICAgICAgIC8qIFtpbl0gKi8gSURPTUVsZW1l
bnQqIGVsZW1lbnQsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsK
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZWxlbWVudElzUGFz
c3dvcmQoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBlbGVtZW50SXNQ
YXNzd29yZCgKICAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCogZWxlbWVudCwKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmb3JtRm9yRWxlbWVudCggCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZvcm1Gb3JFbGVtZW50KAogICAgICAgICAvKiBbaW5d
ICovIElET01FbGVtZW50KiBlbGVtZW50LAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01FbGVtZW50KiogZm9ybSk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGN1cnJlbnRGb3JtKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY3VycmVudEZvcm0oCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQq
KiBmb3JtKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY29u
dHJvbHNJbkZvcm0oIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjb250
cm9sc0luRm9ybSgKICAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCogZm9ybSwKICAgICAg
ICAgLyogW291dF1baW5dICovIElET01FbGVtZW50KiogY29udHJvbHMsCiAgICAgICAgIC8qIFtv
dXRdW2luXSAqLyBpbnQqIGNDb250cm9scyk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNlYXJjaEZvckxhYmVscyggCisgICAgLyogRGVwcmVjYXRlZC4gVXNl
IHRoZSB2YXJpYW50IHRoYXQgaW5jbHVkZXMgcmVzdWx0RGlzdGFuY2UgYW5kIHJlc3VsdElzSW5D
ZWxsQWJvdmUgaW5zdGVhZC4gKi8KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGVwcmVjYXRlZFNlYXJjaEZvckxhYmVscygKICAgICAgICAgLyogW3NpemVfaXNdW2luXSAq
LyBCU1RSICpsYWJlbHMsCiAgICAgICAgIC8qIFtpbl0gKi8gaW50IGNMYWJlbHMsCiAgICAgICAg
IC8qIFtpbl0gKi8gSURPTUVsZW1lbnQgKmJlZm9yZUVsZW1lbnQsCiAgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbWF0Y2hMYWJlbHMoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBtYXRjaExhYmVscygKICAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBCU1RS
ICpsYWJlbHMsCiAgICAgICAgIC8qIFtpbl0gKi8gaW50IGNMYWJlbHMsCiAgICAgICAgIC8qIFtp
bl0gKi8gSURPTUVsZW1lbnQgKmFnYWluc3RFbGVtZW50LAogICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2VhcmNoRm9yTGFiZWxzKEJTVFIqIGxhYmVscywgdW5zaWduZWQgY0xhYmVscywgSURP
TUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQsIHVuc2lnbmVkKiByZXN1bHREaXN0YW5jZSwgQk9PTCog
cmVzdWx0SXNJbkNlbGxBYm92ZSwgQlNUUiogcmVzdWx0KTsKKyAgICAKICAgICAvLyBJV2ViRG9j
dW1lbnRSZXByZXNlbnRhdGlvbgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXREYXRhU291cmNlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2V0RGF0YVNvdXJjZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViRGF0YVNvdXJjZSogZGF0YVNv
dXJjZSk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlY2Vp
dmVkRGF0YSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlY2VpdmVk
RGF0YSgKICAgICAgICAgLyogW2luXSAqLyBJU3RyZWFtKiBkYXRhLAogICAgICAgICAvKiBbaW5d
ICovIElXZWJEYXRhU291cmNlKiBkYXRhU291cmNlKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVjZWl2ZWRFcnJvciggCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJlY2VpdmVkRXJyb3IoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdl
YkVycm9yKiBlcnJvciwKICAgICAgICAgLyogW2luXSAqLyBJV2ViRGF0YVNvdXJjZSogZGF0YVNv
dXJjZSk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpbmlz
aGVkTG9hZGluZ1dpdGhEYXRhU291cmNlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2UoCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2UpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UoIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UoCiAg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZG9jdW1lbnRTb3VyY2UoIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkb2N1bWVudFNvdXJjZSgKICAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzb3VyY2UpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aXRsZSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHRpdGxlKAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGRvY1Rp
dGxlKTsKIAogcHJvdGVjdGVkOgpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJIVE1M
UmVwcmVzZW50YXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmlkbAkocmV2aXNpb24gNTM0ODYpCisrKyBXZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYkhUTUxSZXByZXNlbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDExICs5NSwxNyBAQCBpbnRlcmZhY2UgSVdlYkhUTUxSZXByZXNlbnRhdGlvbiA6IElVbmtu
CiAKICAgICAvKgogICAgICAgICAtIChOU1N0cmluZyAqKXNlYXJjaEZvckxhYmVsczooTlNBcnJh
eSAqKWxhYmVscyBiZWZvcmVFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudDsKKyAgICAgICAg
RGVwcmVjYXRlZDogdXNlIHRoZSB2YXJpYW50IHRoYXQgaW5jbHVkZXMgcmVzdWx0RGlzdGFuY2Ug
YW5kIHJlc3VsdElzSW5DZWxsQWJvdmUgaW5zdGVhZC4KICAgICAqLwotICAgIEhSRVNVTFQgc2Vh
cmNoRm9yTGFiZWxzKFtpbiwgc2l6ZV9pcyhjTGFiZWxzKV0gQlNUUiogbGFiZWxzLCBbaW5dIGlu
dCBjTGFiZWxzLCBbaW5dIElET01FbGVtZW50KiBiZWZvcmVFbGVtZW50LCBbb3V0LCByZXR2YWxd
IEJTVFIqIHJlc3VsdCk7CisgICAgSFJFU1VMVCBkZXByZWNhdGVkU2VhcmNoRm9yTGFiZWxzKFtp
biwgc2l6ZV9pcyhjTGFiZWxzKV0gQlNUUiogbGFiZWxzLCBbaW5dIGludCBjTGFiZWxzLCBbaW5d
IElET01FbGVtZW50KiBiZWZvcmVFbGVtZW50LCBbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7
CiAKICAgICAvKgogICAgICAgICAtIChOU1N0cmluZyAqKW1hdGNoTGFiZWxzOihOU0FycmF5ICop
bGFiZWxzIGFnYWluc3RFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudDsKICAgICAqLwogICAg
IEhSRVNVTFQgbWF0Y2hMYWJlbHMoW2luLCBzaXplX2lzKGNMYWJlbHMpXSBCU1RSKiBsYWJlbHMs
IFtpbl0gaW50IGNMYWJlbHMsIFtpbl0gSURPTUVsZW1lbnQqIGFnYWluc3RFbGVtZW50LCBbb3V0
LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7CisKKyAgICAvKgorICAgICAgICAtIChOU1N0cmluZyAq
KXNlYXJjaEZvckxhYmVsczooTlNBcnJheSAqKWxhYmVscyBiZWZvcmVFbGVtZW50OihET01FbGVt
ZW50ICopZWxlbWVudCByZXN1bHREaXN0YW5jZTooTlNVSW50ZWdlciopb3V0RGlzdGFuY2UgcmVz
dWx0SXNJbkNlbGxBYm92ZTooQk9PTCopb3V0SXNJbkNlbGxBYm92ZTsKKyAgICAqLworICAgIEhS
RVNVTFQgc2VhcmNoRm9yTGFiZWxzKFtpbiwgc2l6ZV9pcyhjTGFiZWxzKV0gQlNUUiogbGFiZWxz
LCBbaW5dIHVuc2lnbmVkIGNMYWJlbHMsIFtpbl0gSURPTUVsZW1lbnQqIGJlZm9yZUVsZW1lbnQs
IFtvdXRdIHVuc2lnbmVkKiByZXN1bHREaXN0YW5jZSwgW291dF0gQk9PTCogcmVzdWx0SXNJbkNl
bGxBYm92ZSwgW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogfQpJbmRleDogV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL1dlYktpdC5pZGwJKHJldmlzaW9uIDUzNDg2KQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L1dlYktpdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw0ICsyOTMsMyBAQCBsaWJyYXJ5IFdl
YktpdAogICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNlIElXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OwogICAgIH0KIH0KLQo=
</data>
<flag name="review"
          id="29287"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>