<?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>132617</bug_id>
          
          <creation_ts>2014-05-06 10:47:19 -0700</creation_ts>
          <short_desc>Eliminate BlobStorageData</short_desc>
          <delta_ts>2014-05-06 15:11:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007005</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-06 10:47:19 -0700</bug_when>
    <thetext>BlobStorageData is an entirely useless wrapper around BlobData that confuses ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007007</commentid>
    <comment_count>1</comment_count>
      <attachid>230919</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-06 10:51:00 -0700</bug_when>
    <thetext>Created attachment 230919
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007008</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-06 10:52:41 -0700</bug_when>
    <thetext>Attachment 230919 did not pass style-queue:


ERROR: Source/WebCore/platform/network/BlobResourceHandle.h:55:  The parameter name &quot;blobData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/BlobResourceHandle.h:55:  The parameter name &quot;request&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/BlobResourceHandle.h:55:  The parameter name &quot;error&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/network/BlobResourceHandle.h:55:  The parameter name &quot;response&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007031</commentid>
    <comment_count>3</comment_count>
      <attachid>230921</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-06 11:59:22 -0700</bug_when>
    <thetext>Created attachment 230921
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007097</commentid>
    <comment_count>4</comment_count>
      <attachid>230921</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-06 15:11:36 -0700</bug_when>
    <thetext>Comment on attachment 230921
patch for landing

Clearing flags on attachment: 230921

Committed r168382: &lt;http://trac.webkit.org/changeset/168382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007098</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-06 15:11:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230919</attachid>
            <date>2014-05-06 10:51:00 -0700</date>
            <delta_ts>2014-05-06 11:59:22 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>BlobStorageData.txt</filename>
            <type>text/plain</type>
            <size>29071</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODM2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA1LTA2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBCbG9iU3Rv
cmFnZURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMjYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkRhdGE6OkJsb2JEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdl
SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxl
QmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJs
b2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0Qmxv
YkRhdGFGcm9tVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmJsb2JT
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZSk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmRvU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpnZXRTaXplRm9yTmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmRpZEdldFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JS
ZXNvdXJjZUhhbmRsZTo6cmVhZFN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNl
SGFuZGxlOjpyZWFkRGF0YVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFu
ZGxlOjpyZWFkRmlsZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxl
OjpyZWFkQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpyZWFk
RGF0YUFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZp
bGVBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJl
c3BvbnNlT25TdWNjZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBlbmRCbG9iUmVzb2x2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRk
RW5jb2RlZEJsb2JUb1NvdXBNZXNzYWdlQm9keSk6CisKIDIwMTQtMDUtMDYgIEFuZHJlaSBCdWN1
ciAgPGFidWN1ckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBPcHRpbWl6ZSB0
aGUgbnVtYmVyIG9mIHJlZ2lvbnMgaW52YWxpZGF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjgzNTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTU2Nyw3ICsxOTU2Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JSZWdpc3RyeS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVnaXN0cnlJbXBsLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JSZXNvdXJjZUhhbmRsZS5o
IiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iU3Rv
cmFnZURhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcQ29va2llU3RvcmFnZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cbmV0d29ya1xDcmVkZW50aWFsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRpYWxTdG9yYWdlLmgiIC8+CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxNjgzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTg2NTksOSArODY1OSw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JSZXNvdXJj
ZUhhbmRsZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29y
a1xCbG9iU3RvcmFnZURhdGEuaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcQ29va2llU3RvcmFnZS5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0
d29yazwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY4MzUyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQ2LDcgKzExNDYsNiBAQAogCQkyRURFRjFGNTEyMUIwRUZDMDA3MjZE
QjIgLyogQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRURFRjFFRjEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkVERUYxRjYx
MjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjAxMjFCMEVGQzAwNzI2REIyIC8q
IEJsb2JSZWdpc3RyeUltcGwuY3BwICovOyB9OwogCQkyRURFRjFGNzEyMUIwRUZDMDA3MjZEQjIg
LyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkVERUYxRjExMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyRURF
RjFGODEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0b3JhZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRURFRjFGMjEyMUIwRUZDMDA3MjZEQjIg
LyogQmxvYlN0b3JhZ2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMkVERjM2OUMxMjJDOTRCNDAwMkY3RDRFIC8qIEZpbGVSZWFkZXJTeW5j
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREYz
NjlBMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5jcHAgKi87IH07CiAJCTJFREYz
NjlEMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERjM2OUIxMjJDOTRCNDAwMkY3RDRFIC8q
IEZpbGVSZWFkZXJTeW5jLmggKi87IH07CiAJCTJFREYzNjlGMTIyQzk0QzgwMDJGN0Q0RSAvKiBG
aWxlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRURGMzY5RTEyMkM5NEM4MDAyRjdENEUgLyogRmlsZUV4Y2VwdGlvbi5oICovOyB9OwpA
QCAtODA2Miw3ICs4MDYxLDYgQEAKIAkJMkVERUYxRUYxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JS
ZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iUmVnaXN0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVERUYxRjAxMjFCMEVGQzAwNzI2REIy
IC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQmxvYlJlZ2lzdHJ5SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFREVGMUYxMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JSZWdpc3RyeUltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMkVERUYxRjIxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JTdG9yYWdl
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iU3RvcmFnZURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVERjM2OUExMjJDOTRCNDAwMkY3RDRF
IC8qIEZpbGVSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEZpbGVSZWFkZXJTeW5jLmNwcDsgcGF0aCA9IGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRURGMzY5QjEyMkM5NEI0MDAyRjdENEUg
LyogRmlsZVJlYWRlclN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmls
ZVJlYWRlclN5bmMuaDsgcGF0aCA9IGZpbGVhcGkvRmlsZVJlYWRlclN5bmMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVERjM2OUUxMjJDOTRDODAwMkY3RDRFIC8qIEZpbGVFeGNl
cHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZUV4Y2VwdGlvbi5o
OyBwYXRoID0gZmlsZWFwaS9GaWxlRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjA2NCw3ICsxNjA2Miw2IEBACiAJCQkJMkVERUYxRjExMjFCMEVGQzAwNzI2REIy
IC8qIEJsb2JSZWdpc3RyeUltcGwuaCAqLywKIAkJCQkyRUI0QkNEMDEyMUYwM0UzMDBFQzQ4ODUg
LyogQmxvYlJlc291cmNlSGFuZGxlLmNwcCAqLywKIAkJCQkyRUI0QkNEMTEyMUYwM0UzMDBFQzQ4
ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggKi8sCi0JCQkJMkVERUYxRjIxMjFCMEVGQzAwNzI2
REIyIC8qIEJsb2JTdG9yYWdlRGF0YS5oICovLAogCQkJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3
MSAvKiBDb29raWVTdG9yYWdlLmggKi8sCiAJCQkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVk
ZW50aWFsLmggKi8sCkBAIC0yMzEwNCw3ICsyMzEwMSw2IEBACiAJCQkJMkVERUYxRjUxMjFCMEVG
QzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERUYxRjcx
MjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTJFREVGMUY4MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iU3RvcmFnZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RjM2RDNCMThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFG
RDFGNyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlCRTA4MjQ1RTU5MDAx
RTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHJldmlzaW9uIDE2ODM1MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNTQsMTAgKzE1NSwxMiBAQCBwcml2YXRlOgog
CiB0eXBlZGVmIFZlY3RvcjxCbG9iRGF0YUl0ZW0+IEJsb2JEYXRhSXRlbUxpc3Q7CiAKLWNsYXNz
IEJsb2JEYXRhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIEJsb2JEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8QmxvYkRhdGE+IHsKIHB1YmxpYzoKLSAgICBCbG9iRGF0YSgp
IHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JEYXRhPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iRGF0YSk7CisgICAgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFR5cGU7IH0KICAg
ICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYpOwpAQCAtMTcyLDEwICsxNzUsOCBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7
Ci0gICAgZnJpZW5kIGNsYXNzIEJsb2JTdG9yYWdlRGF0YTsKIAotICAgIC8vIFRoaXMgaXMgb25s
eSBleHBvc2VkIHRvIEJsb2JTdG9yYWdlRGF0YS4KLSAgICB2b2lkIGFwcGVuZERhdGEoY29uc3Qg
UmF3RGF0YSYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOworICAgIEJsb2JE
YXRhKCkgeyB9CiAKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9jb250
ZW50RGlzcG9zaXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAJKHJldmlzaW9uIDE2ODM1MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDkgQEAKIAogI2lmIEVOQUJMRShCTE9CKQogCisjaW5jbHVkZSAi
QmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUGFydC5oIgogI2luY2x1ZGUgIkJsb2JSZXNvdXJj
ZUhhbmRsZS5oIgotI2luY2x1ZGUgIkJsb2JTdG9yYWdlRGF0YS5oIgogI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBjcmVhdGUKIAogc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVu
dGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
VmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIEJsb2JTdG9yYWdlRGF0YSogYmxvYkRhdGEgPSBz
dGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRh
RnJvbVVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNf
Y2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVS
TChyZXF1ZXN0LnVybCgpKTsKICAgICBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoYmxvYkRhdGEsIHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9
CiAKQEAgLTg3LDcgKzg3LDcgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQmxvYlJlZ2lz
dHJ5SQogICAgIHJldHVybiBoYW5kbGUucmVsZWFzZSgpOwogfQogCi12b2lkIEJsb2JSZWdpc3Ry
eUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9yYWdlRGF0
YSwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcg
bG9uZyBsZW5ndGgpCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhC
bG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zLCBsb25nIGxv
bmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGggIT0gQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7CiAKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW0KICAgICAgICAgbG9uZyBsb25nIGN1cnJl
bnRMZW5ndGggPSBpdGVyLT5sZW5ndGggLSBvZmZzZXQ7CiAgICAgICAgIGxvbmcgbG9uZyBuZXdM
ZW5ndGggPSBjdXJyZW50TGVuZ3RoID4gbGVuZ3RoID8gbGVuZ3RoIDogY3VycmVudExlbmd0aDsK
ICAgICAgICAgaWYgKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpEYXRhKQotICAgICAgICAg
ICAgYmxvYlN0b3JhZ2VEYXRhLT5tX2RhdGEuYXBwZW5kRGF0YShpdGVyLT5kYXRhLCBpdGVyLT5v
ZmZzZXQgKyBvZmZzZXQsIG5ld0xlbmd0aCk7CisgICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5k
RGF0YShpdGVyLT5kYXRhLCBpdGVyLT5vZmZzZXQgKyBvZmZzZXQsIG5ld0xlbmd0aCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGl0ZXItPnR5cGUgPT0gQmxvYkRhdGFJdGVt
OjpGaWxlKTsKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUo
aXRlci0+cGF0aCwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShp
dGVyLT5wYXRoLCBpdGVyLT5vZmZzZXQgKyBvZmZzZXQsIG5ld0xlbmd0aCwgaXRlci0+ZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggLT0gbmV3TGVu
Z3RoOwogICAgICAgICBvZmZzZXQgPSAwOwpAQCAtMTIyLDE1ICsxMjIsMTYgQEAgdm9pZCBCbG9i
UmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwogCi0gICAg
UmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gYmxvYlN0b3JhZ2VEYXRhID0gQmxvYlN0b3JhZ2VEYXRh
OjpjcmVhdGUoY29udGVudFR5cGUpOworICAgIFJlZlB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBC
bG9iRGF0YTo6Y3JlYXRlKCk7CisgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKGNvbnRlbnRU
eXBlKTsKIAogICAgIC8vIEZJWE1FOiBGYWN0b3Igb3V0IHNpemUgYW5kIG1vZGlmaWNhdGlvbiB0
cmFja2luZyBmb3IgYSBjbGVhbmVyIGltcGxlbWVudGF0aW9uLgogICAgIEZpbGVNZXRhZGF0YSBt
ZXRhZGF0YTsKICAgICBpZiAoIWdldEZpbGVNZXRhZGF0YShwYXRoLCBtZXRhZGF0YSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZEZpbGUocGF0
aCwgMCwgbWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lKTsKLSAgICBt
X2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JTdG9yYWdlRGF0YSk7CisgICAgYmxvYkRhdGEt
PmFwcGVuZEZpbGUocGF0aCwgMCwgbWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0YS5tb2RpZmljYXRp
b25UaW1lKTsKKyAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JEYXRhLnJlbGVhc2Uo
KSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtMTM4LDcgKzEzOSw4IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCbG9iUmVnaXN0cnlJbXBsOjpyZWcKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAotICAgIFJlZlB0cjxC
bG9iU3RvcmFnZURhdGE+IGJsb2JTdG9yYWdlRGF0YSA9IEJsb2JTdG9yYWdlRGF0YTo6Y3JlYXRl
KGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6
OmNyZWF0ZSgpOworICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShjb250ZW50VHlwZSk7CiAK
ICAgICAvLyBUaGUgYmxvYiBkYXRhIGlzIHN0b3JlZCBpbiB0aGUgImNhbm9uaWNhbCIgd2F5LiBU
aGF0IGlzLCBpdCBvbmx5IGNvbnRhaW5zIGEgbGlzdCBvZiBEYXRhIGFuZCBGaWxlIGl0ZW1zLgog
ICAgIC8vIDEpIFRoZSBEYXRhIGl0ZW0gaXMgZGVub3RlZCBieSB0aGUgcmF3IGRhdGEgYW5kIHRo
ZSByYW5nZS4KQEAgLTE1Myw3ICsxNTUsNyBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lz
dHJ5SW1wbDo6cmVnCiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcGFydFNpemUgPSBw
YXJ0LmRhdGEoKS5zaXplKCk7CiAgICAgICAgICAgICBSZWZQdHI8UmF3RGF0YT4gcmF3RGF0YSA9
IFJhd0RhdGE6OmNyZWF0ZShwYXJ0Lm1vdmVEYXRhKCkpOwogICAgICAgICAgICAgc2l6ZSArPSBw
YXJ0U2l6ZTsKLSAgICAgICAgICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZERhdGEo
cmF3RGF0YS5yZWxlYXNlKCksIDAsIHBhcnRTaXplKTsKKyAgICAgICAgICAgIGJsb2JEYXRhLT5h
cHBlbmREYXRhKHJhd0RhdGEucmVsZWFzZSgpLCAwLCBwYXJ0U2l6ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEJsb2JQYXJ0OjpCbG9iOiB7CkBAIC0xNjEs
MjIgKzE2MywyMSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
cGFydFNpemUgPSBibG9iU2l6ZShwYXJ0LnVybCgpKTsgLy8gQXMgYSBzaWRlIGVmZmVjdCwgdGhp
cyBjYWxjdWxhdGVzIHNpemVzIG9mIGFsbCBmaWxlcyBpbiB0aGUgYmxvYi4KICAgICAgICAgICAg
IHNpemUgKz0gcGFydFNpemU7Ci0gICAgICAgICAgICBhcHBlbmRTdG9yYWdlSXRlbXMoYmxvYlN0
b3JhZ2VEYXRhLmdldCgpLCBtX2Jsb2JzLmdldChwYXJ0LnVybCgpLnN0cmluZygpKS0+aXRlbXMo
KSwgMCwgcGFydFNpemUpOworICAgICAgICAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKGJsb2JEYXRh
LmdldCgpLCBtX2Jsb2JzLmdldChwYXJ0LnVybCgpLnN0cmluZygpKS0+aXRlbXMoKSwgMCwgcGFy
dFNpemUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgYmxvYlN0b3JhZ2VEYXRhKTsKKyAgICBt
X2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JEYXRhLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJu
IHNpemU7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAotICAg
IFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IHNyYyA9IG1fYmxvYnMuZ2V0KHNyY1VSTC5zdHJpbmco
KSk7CisgICAgQmxvYkRhdGEqIHNyYyA9IGdldEJsb2JEYXRhRnJvbVVSTChzcmNVUkwpOwogICAg
IGlmICghc3JjKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4Niw4ICsxODcsOCBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBCbG9iU3RvcmFnZURhdGEqIG9yaWdpbmFsU3Rv
cmFnZURhdGEgPSBtX2Jsb2JzLmdldChzcmNVUkwuc3RyaW5nKCkpOwotICAgIGlmICghb3JpZ2lu
YWxTdG9yYWdlRGF0YSkKKyAgICBCbG9iRGF0YSogb3JpZ2luYWxEYXRhID0gZ2V0QmxvYkRhdGFG
cm9tVVJMKHNyY1VSTCk7CisgICAgaWYgKCFvcmlnaW5hbERhdGEpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG9yaWdpbmFsU2l6ZSA9IGJsb2JTaXplKHNyY1VS
TCk7CkBAIC0yMTIsMTEgKzIxMywxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5
SW1wbDo6cmVnCiAgICAgICAgIGVuZCA9IG9yaWdpbmFsU2l6ZTsKIAogICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBuZXdMZW5ndGggPSBlbmQgLSBzdGFydDsKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VE
YXRhPiBuZXdTdG9yYWdlRGF0YSA9IEJsb2JTdG9yYWdlRGF0YTo6Y3JlYXRlKG9yaWdpbmFsU3Rv
cmFnZURhdGEtPmNvbnRlbnRUeXBlKCkpOworICAgIFJlZlB0cjxCbG9iRGF0YT4gbmV3RGF0YSA9
IEJsb2JEYXRhOjpjcmVhdGUoKTsKKyAgICBuZXdEYXRhLT5zZXRDb250ZW50VHlwZShvcmlnaW5h
bERhdGEtPmNvbnRlbnRUeXBlKCkpOwogCi0gICAgYXBwZW5kU3RvcmFnZUl0ZW1zKG5ld1N0b3Jh
Z2VEYXRhLmdldCgpLCBvcmlnaW5hbFN0b3JhZ2VEYXRhLT5pdGVtcygpLCBzdGFydCwgbmV3TGVu
Z3RoKTsKKyAgICBhcHBlbmRTdG9yYWdlSXRlbXMobmV3RGF0YS5nZXQoKSwgb3JpZ2luYWxEYXRh
LT5pdGVtcygpLCBzdGFydCwgbmV3TGVuZ3RoKTsKIAotICAgIG1fYmxvYnMuc2V0KHVybC5zdHJp
bmcoKSwgbmV3U3RvcmFnZURhdGEucmVsZWFzZSgpKTsKKyAgICBtX2Jsb2JzLnNldCh1cmwuc3Ry
aW5nKCksIG5ld0RhdGEucmVsZWFzZSgpKTsKICAgICByZXR1cm4gbmV3TGVuZ3RoOwogfQogCkBA
IC0yMjYsNyArMjI4LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVS
TAogICAgIG1fYmxvYnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiB9CiAKLUJsb2JTdG9yYWdlRGF0
YSogQmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKSBj
b25zdAorQmxvYkRhdGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJl
dHVybiBtX2Jsb2JzLmdldCh1cmwuc3RyaW5nKCkpOwpAQCAtMjM1LDEyICsyMzcsMTIgQEAgQmxv
YlN0b3JhZ2VEYXRhKiBCbG9iUmVnaXN0cnlJbXBsOjpnZXRCbAogdW5zaWduZWQgbG9uZyBsb25n
IEJsb2JSZWdpc3RyeUltcGw6OmJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgQmxvYlN0b3JhZ2VEYXRhKiBzdG9yYWdlRGF0YSA9IG1f
YmxvYnMuZ2V0KHVybC5zdHJpbmcoKSk7Ci0gICAgaWYgKCFzdG9yYWdlRGF0YSkKKyAgICBCbG9i
RGF0YSogZGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOworICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0ID0gMDsKLSAg
ICBmb3IgKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSA6IHN0b3JhZ2VEYXRhLT5pdGVtcygpKSB7
CisgICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBkYXRhLT5pdGVtcygpKSB7CiAg
ICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSB7CiAg
ICAgICAgICAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgICAgICAgICBpZiAoIWdldEZp
bGVNZXRhZGF0YShpdGVtLnBhdGgsIG1ldGFkYXRhKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCShyZXZpc2lvbiAxNjgz
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRlZiBCbG9iUmVnaXN0cnlJ
bXBsX2gKICNkZWZpbmUgQmxvYlJlZ2lzdHJ5SW1wbF9oCiAKKyNpbmNsdWRlICJCbG9iRGF0YS5o
IgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgIkJsb2JTdG9yYWdlRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsMTIgKzUwLDEyIEBA
IGNsYXNzIEJsb2JSZWdpc3RyeUltcGwgZmluYWwgOiBwdWJsaWMgQmwKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5CbG9iUmVnaXN0cnlJbXBsKCk7CiAKLSAgICBCbG9iU3RvcmFnZURhdGEqIGdldEJs
b2JEYXRhRnJvbVVSTChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBCbG9iRGF0YSogZ2V0QmxvYkRh
dGFGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVt
cyhCbG9iU3RvcmFnZURhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9m
ZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CisgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxv
YkRhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmKTsKIAotICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPj4gbV9ibG9iczsKKyAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEJsb2JEYXRhPj4gbV9ibG9iczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDE2ODM1MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkJsb2JSZXNvdXJjZUhhbmRsZS5oIgogCiAjaW5jbHVk
ZSAiQXN5bmNGaWxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiQmxvYlN0b3JhZ2VEYXRhLmgiCisjaW5j
bHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBCbG9iUmVzb3VyY2VTeW5jaHJvbm91c0xvYWRlcjo6ZGlkRgogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogLy8gQmxvYlJlc291cmNlSGFuZGxlCiAKLVBhc3NSZWZQdHI8QmxvYlJlc291cmNl
SGFuZGxlPiBCbG9iUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUFzeW5jKEJsb2JTdG9yYWdlRGF0YSog
YmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGNsaWVudCkKK1Bhc3NSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBCbG9iUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUFzeW5jKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KQogewogICAgIC8v
IEZJWE1FOiBTaG91bGQgcHJvYmFibHkgY2FsbCBkaWRGYWlsKCkgaW5zdGVhZCBvZiBibG9ja2lu
ZyB0aGUgbG9hZCB3aXRob3V0IGV4cGxhbmF0aW9uLgogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nh
c2UocmVxdWVzdC5odHRwTWV0aG9kKCksICJHRVQiKSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBQYXNz
UmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gQmxvYlJlc291CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBCbG9iUmVzb3VyY2VIYW5kbGUoYmxvYkRhdGEsIHJlcXVlc3QsIGNsaWVudCwgdHJ1ZSkp
OwogfQogCi12b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVj
dG9yPGNoYXI+JiBkYXRhKQordm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
VmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UocmVxdWVz
dC5odHRwTWV0aG9kKCksICJHRVQiKSkgewogICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3Io
d2ViS2l0QmxvYlJlc291cmNlRG9tYWluLCBtZXRob2ROb3RBbGxvd2VkLCByZXNwb25zZS51cmwo
KSwgIlJlcXVlc3QgbWV0aG9kIG11c3QgYmUgR0VUIik7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9p
ZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bgogICAgIGhhbmRsZS0+c3RhcnQo
KTsKIH0KIAotQmxvYlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoUGFzc1JlZlB0
cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgYXN5bmMpCitCbG9iUmVzb3Vy
Y2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9v
bCBhc3luYykKICAgICA6IFJlc291cmNlSGFuZGxlKDAsIHJlcXVlc3QsIGNsaWVudCwgZmFsc2Us
IGZhbHNlKQogICAgICwgbV9ibG9iRGF0YShibG9iRGF0YSkKICAgICAsIG1fYXN5bmMoYXN5bmMp
CkBAIC0yMjQsNiArMjI0LDggQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIAog
dm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmRvU3RhcnQoKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKICAgICAvLyBEbyBub3QgY29udGludWUgaWYgdGhlIHJlcXVlc3QgaXMgYWJv
cnRlZCBvciBhbiBlcnJvciBvY2N1cnMuCiAgICAgaWYgKG1fYWJvcnRlZCB8fCBtX2Vycm9yQ29k
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU1LDYgKzI1Nyw4IEBAIHZvaWQgQmxvYlJlc291cmNl
SGFuZGxlOjpkb1N0YXJ0KCkKIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmdldFNpemVGb3JO
ZXh0KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gRG8gd2UgZmlu
aXNoIHZhbGlkYXRpbmcgYW5kIGNvdW50aW5nIHNpemUgZm9yIGFsbCBpdGVtcz8KICAgICBpZiAo
bV9zaXplSXRlbUNvdW50ID49IG1fYmxvYkRhdGEtPml0ZW1zKCkuc2l6ZSgpKSB7CiAgICAgICAg
IHNlZWsoKTsKQEAgLTI4Nyw2ICsyOTEsOCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6Z2V0
U2l6ZUZvck5leHQoCiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpkaWRHZXRTaXplKGxvbmcg
bG9uZyBzaXplKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICAvLyBEbyBu
b3QgY29udGludWUgaWYgdGhlIHJlcXVlc3QgaXMgYWJvcnRlZCBvciBhbiBlcnJvciBvY2N1cnMu
CiAgICAgaWYgKG1fYWJvcnRlZCB8fCBtX2Vycm9yQ29kZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MzE2LDYgKzMyMiw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpkaWRHZXRTaXplKGxvbmcK
IAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnNlZWsoKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKICAgICAvLyBDb252ZXJ0IGZyb20gdGhlIHN1ZmZpeCBsZW5ndGggdG8gdGhl
IHJhbmdlLgogICAgIGlmIChtX3JhbmdlU3VmZml4TGVuZ3RoICE9IHBvc2l0aW9uTm90U3BlY2lm
aWVkKSB7CiAgICAgICAgIG1fcmFuZ2VPZmZzZXQgPSBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtIG1f
cmFuZ2VTdWZmaXhMZW5ndGg7CkBAIC0zNDUsNiArMzUzLDggQEAgdm9pZCBCbG9iUmVzb3VyY2VI
YW5kbGU6OnNlZWsoKQogCiBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkU3luYyhjaGFyKiBi
dWYsIGludCBsZW5ndGgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIEFT
U0VSVCghbV9hc3luYyk7CiAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhp
cyk7CiAKQEAgLTM5MSw2ICs0MDEsOCBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkU3lu
YyhjaGFyKiBiCiAKIGludCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWREYXRhU3luYyhjb25zdCBC
bG9iRGF0YUl0ZW0mIGl0ZW0sIGNoYXIqIGJ1ZiwgaW50IGxlbmd0aCkKIHsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCiAgICAgQVNTRVJUKCFtX2FzeW5jKTsKIAogICAgIGxvbmcgbG9u
ZyByZW1haW5pbmcgPSBpdGVtLmxlbmd0aCAtIG1fY3VycmVudEl0ZW1SZWFkU2l6ZTsKQEAgLTQx
MSw2ICs0MjMsOCBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YVN5bmMoY29uCiAK
IGludCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRGaWxlU3luYyhjb25zdCBCbG9iRGF0YUl0ZW0m
IGl0ZW0sIGNoYXIqIGJ1ZiwgaW50IGxlbmd0aCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCiAgICAgQVNTRVJUKCFtX2FzeW5jKTsKIAogICAgIGlmICghbV9maWxlT3BlbmVkKSB7
CkBAIC00NDQsNiArNDU4LDcgQEAgaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZpbGVTeW5j
KGNvbgogCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEFzeW5jKCkKIHsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2FzeW5jKTsKIAogICAgIC8vIERvIG5v
dCBjb250aW51ZSBpZiB0aGUgcmVxdWVzdCBpcyBhYm9ydGVkIG9yIGFuIGVycm9yIG9jY3Vycy4K
QEAgLTQ2Nyw2ICs0ODIsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEFzeW5jKCkK
IAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWREYXRhQXN5bmMoY29uc3QgQmxvYkRhdGFJ
dGVtJiBpdGVtKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
YXN5bmMpOwogICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOwogCkBA
IC00NzksNiArNDk1LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWREYXRhQXN5bmMo
YwogCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZEZpbGVBc3luYyhjb25zdCBCbG9iRGF0
YUl0ZW0mIGl0ZW0pCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9hc3luYyk7CiAKICAgICBpZiAobV9maWxlT3BlbmVkKSB7CkBAIC01NzcsNiArNTk0LDggQEAg
dm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlKAogCiB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2VPblN1Y2Nlc3MoKQogeworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ID0gbV9yYW5nZU9mZnNldCAh
PSBwb3NpdGlvbk5vdFNwZWNpZmllZDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGZp
cnN0UmVxdWVzdCgpLnVybCgpLCBtX2Jsb2JEYXRhLT5jb250ZW50VHlwZSgpLCBtX3RvdGFsUmVt
YWluaW5nU2l6ZSwgU3RyaW5nKCksIFN0cmluZygpKTsKICAgICByZXNwb25zZS5zZXRFeHBlY3Rl
ZENvbnRlbnRMZW5ndGgobV90b3RhbFJlbWFpbmluZ1NpemUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCShyZXZp
c2lvbiAxNjgzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN0cmVhbTsKLWNsYXNzIEJsb2JTdG9yYWdlRGF0
YTsKK2NsYXNzIEJsb2JEYXRhOwogY2xhc3MgRmlsZVN0cmVhbTsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTAsOSArNTAsOSBAQCBzdHJ1
Y3QgQmxvYkRhdGFJdGVtOwogCiBjbGFzcyBCbG9iUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgRmls
ZVN0cmVhbUNsaWVudCwgcHVibGljIFJlc291cmNlSGFuZGxlICB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBjcmVhdGVBc3luYyhCbG9iU3RvcmFn
ZURhdGEqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlQXN5bmMoQmxv
YkRhdGEqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOwog
Ci0gICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShCbG9iU3RvcmFnZURh
dGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJy
b3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRh
KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEJsb2JEYXRhKiBi
bG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSk7CiAK
ICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50IG1ldGhvZHMuCiAgICAgdmlydHVhbCB2b2lkIGRpZEdl
dFNpemUobG9uZyBsb25nKSBvdmVycmlkZTsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBmcmllbmQgdm9pZCBkZWxheWVkU3RhcnRCbG9iUmVzb3VyY2VIYW5kbGUodm9p
ZCopOwogCi0gICAgQmxvYlJlc291cmNlSGFuZGxlKFBhc3NSZWZQdHI8QmxvYlN0b3JhZ2VEYXRh
PiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGFz
eW5jKTsKKyAgICBCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCosIGJvb2wgYXN5bmMpOwogICAgIHZpcnR1YWwg
fkJsb2JSZXNvdXJjZUhhbmRsZSgpOwogCiAgICAgdm9pZCBkb1N0YXJ0KCk7CkBAIC05Myw3ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGYWlsKGludCBlcnJvckNvZGUpOwogICAg
IHZvaWQgbm90aWZ5RmluaXNoKCk7CiAKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBtX2Js
b2JEYXRhOworICAgIFJlZlB0cjxCbG9iRGF0YT4gbV9ibG9iRGF0YTsKICAgICBib29sIG1fYXN5
bmM7CiAgICAgUmVmUHRyPEFzeW5jRmlsZVN0cmVhbT4gbV9hc3luY1N0cmVhbTsgLy8gRm9yIGFz
eW5jaHJvbm91cyBsb2FkaW5nLgogICAgIFJlZlB0cjxGaWxlU3RyZWFtPiBtX3N0cmVhbTsgLy8g
Rm9yIHN5bmNocm9ub3VzIGxvYWRpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmgJKHJldmlzaW9uIDE2ODM1MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlN0b3JhZ2VEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQmxvYlN0b3JhZ2VEYXRhX2gKLSNkZWZpbmUg
QmxvYlN0b3JhZ2VEYXRhX2gKLQotI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEJsb2JTdG9yYWdlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEJs
b2JTdG9yYWdlRGF0YT4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JTdG9y
YWdlRGF0YT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2JTdG9yYWdlRGF0YShjb250ZW50VHlwZSkpOwotICAg
IH0KLQotICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuY29udGVudFR5cGUoKTsgfQotICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLml0ZW1zKCk7IH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQg
Y2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKLQotICAgIEJsb2JTdG9yYWdlRGF0YShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQotICAgIHsKLSAgICAgICAgbV9kYXRhLnNldENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKTsKLSAgICB9Ci0KLSAgICBCbG9iRGF0YSBtX2RhdGE7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBCbG9iU3RvcmFnZURhdGFfaApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDE2
ODM1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKIAog
I2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNpbmNsdWRlICJCbG9iU3RvcmFnZURhdGEu
aCIKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCkBAIC0zMDIsNyArMzAxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kQmxv
YlJlc29sdmVkKEZvcm1EYXRhKgogICAgICAgICBMT0dfRVJST1IoIlRyaWVkIHRvIHJlc29sdmUg
YSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lz
dHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSk7CisgICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8Qmxv
YlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsKSk7CiAgICAgaWYgKCFibG9iRGF0YSkgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBkYXRhIGZyb20gYSByZWdpc3RyeSIpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMTY4MzUyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAKICNpZiBFTkFCTEUoQkxPQikK
ICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKLSNp
bmNsdWRlICJCbG9iU3RvcmFnZURhdGEuaCIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpA
QCAtNzk4LDcgKzc5Nyw3IEBAIHN0YXRpYyB2b2lkIGFkZEVuY29kZWRCbG9iSXRlbVRvU291cE1l
c3MKIAogc3RhdGljIHZvaWQgYWRkRW5jb2RlZEJsb2JUb1NvdXBNZXNzYWdlQm9keShTb3VwTWVz
c2FnZSogbWVzc2FnZSwgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50LCB1bnNpZ25lZCBs
b25nJiB0b3RhbEJvZHlTaXplKQogewotICAgIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JE
YXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRC
bG9iRGF0YUZyb21VUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZWxlbWVudC5tX3VybCkpOworICAg
IFJlZlB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBs
Jj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChVUkwoUGFyc2VkVVJMU3RyaW5n
LCBlbGVtZW50Lm1fdXJsKSk7CiAgICAgaWYgKCFibG9iRGF0YSkKICAgICAgICAgcmV0dXJuOwog
Cg==
</data>
<flag name="review"
          id="255320"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230921</attachid>
            <date>2014-05-06 11:59:22 -0700</date>
            <delta_ts>2014-05-06 15:11:36 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>BlobStorageData.txt</filename>
            <type>text/plain</type>
            <size>29072</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODM2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA1LTA2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBCbG9iU3Rv
cmFnZURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMjYxNworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JEYXRhOjpCbG9iRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFn
ZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmls
ZUJsb2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJC
bG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmdldEJs
b2JEYXRhRnJvbVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjpibG9i
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGVBc3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpkb1N0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6Z2V0U2l6ZUZvck5leHQpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpkaWRHZXRTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6c2Vlayk6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
UmVzb3VyY2VIYW5kbGU6OnJlYWRTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJj
ZUhhbmRsZTo6cmVhZERhdGFTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhh
bmRsZTo6cmVhZEZpbGVTeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRs
ZTo6cmVhZEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JSZXNvdXJjZUhhbmRsZTo6cmVh
ZERhdGFBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRG
aWxlQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlS
ZXNwb25zZU9uU3VjY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5o
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwZW5kQmxvYlJlc29sdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZEVuY29kZWRCbG9iVG9Tb3VwTWVzc2FnZUJvZHkpOgorCiAyMDE0LTA1LTA2ICBBbmRyZWkgQnVj
dXIgIDxhYnVjdXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gT3B0aW1pemUg
dGhlIG51bWJlciBvZiByZWdpb25zIGludmFsaWRhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTY4MzUyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTk1NjcsNyArMTk1NjcsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVnaXN0cnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQmxvYlJlZ2lzdHJ5SW1wbC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVzb3VyY2VIYW5kbGUu
aCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQmxvYlN0
b3JhZ2VEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3
b3JrXENvb2tpZVN0b3JhZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcQ3JlZGVudGlhbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cbmV0d29ya1xDcmVkZW50aWFsU3RvcmFnZS5oIiAvPgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTY4MzUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC04NjU5LDkgKzg2NTksNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iUmVzb3Vy
Y2VIYW5kbGUuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcQmxvYlN0b3JhZ2VEYXRhLmgiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrPC9G
aWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXENvb2tpZVN0b3JhZ2UuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5l
dHdvcms8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODM1MikK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTE0Niw3ICsxMTQ2LDYgQEAKIAkJMkVERUYxRjUxMjFCMEVGQzAwNzI2
REIyIC8qIEJsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkVERUYxRUYxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFREVGMUY2
MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUYwMTIxQjBFRkMwMDcyNkRCMiAv
KiBCbG9iUmVnaXN0cnlJbXBsLmNwcCAqLzsgfTsKIAkJMkVERUYxRjcxMjFCMEVGQzAwNzI2REIy
IC8qIEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFREVGMUYxMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkVE
RUYxRjgxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JTdG9yYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjIxMjFCMEVGQzAwNzI2REIy
IC8qIEJsb2JTdG9yYWdlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTJFREYzNjlDMTIyQzk0QjQwMDJGN0Q0RSAvKiBGaWxlUmVhZGVyU3lu
Yy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRURG
MzY5QTEyMkM5NEI0MDAyRjdENEUgLyogRmlsZVJlYWRlclN5bmMuY3BwICovOyB9OwogCQkyRURG
MzY5RDEyMkM5NEI0MDAyRjdENEUgLyogRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREYzNjlCMTIyQzk0QjQwMDJGN0Q0RSAv
KiBGaWxlUmVhZGVyU3luYy5oICovOyB9OwogCQkyRURGMzY5RjEyMkM5NEM4MDAyRjdENEUgLyog
RmlsZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkVERjM2OUUxMjJDOTRDODAwMkY3RDRFIC8qIEZpbGVFeGNlcHRpb24uaCAqLzsgfTsK
QEAgLTgwNjIsNyArODA2MSw2IEBACiAJCTJFREVGMUVGMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9i
UmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYlJlZ2lzdHJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFREVGMUYwMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJsb2JSZWdpc3RyeUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRURFRjFGMTEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iUmVnaXN0cnlJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTJFREVGMUYyMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iU3RvcmFn
ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYlN0b3JhZ2VEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFREYzNjlBMTIyQzk0QjQwMDJGN0Q0
RSAvKiBGaWxlUmVhZGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBGaWxlUmVhZGVyU3luYy5jcHA7IHBhdGggPSBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVERjM2OUIxMjJDOTRCNDAwMkY3RDRF
IC8qIEZpbGVSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZp
bGVSZWFkZXJTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0ZpbGVSZWFkZXJTeW5jLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFREYzNjlFMTIyQzk0QzgwMDJGN0Q0RSAvKiBGaWxlRXhj
ZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVFeGNlcHRpb24u
aDsgcGF0aCA9IGZpbGVhcGkvRmlsZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTYwNjQsNyArMTYwNjIsNiBAQAogCQkJCTJFREVGMUYxMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iUmVnaXN0cnlJbXBsLmggKi8sCiAJCQkJMkVCNEJDRDAxMjFGMDNFMzAwRUM0ODg1
IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJMkVCNEJDRDExMjFGMDNFMzAwRUM0
ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oICovLAotCQkJCTJFREVGMUYyMTIxQjBFRkMwMDcy
NkRCMiAvKiBCbG9iU3RvcmFnZURhdGEuaCAqLywKIAkJCQlFMTNGMDFFQTEyNzBFMTBEMDBERkJB
NzEgLyogQ29va2llU3RvcmFnZS5oICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAv
KiBDcmVkZW50aWFsLmNwcCAqLywKIAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3Jl
ZGVudGlhbC5oICovLApAQCAtMjMxMDQsNyArMjMxMDEsNiBAQAogCQkJCTJFREVGMUY1MTIxQjBF
RkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFREVGMUY3
MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRUI0QkNEMzEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkyRURFRjFGODEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYlN0b3JhZ2VEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUYzNkQzQjE4Rjc1ODcyMDA1NEMwMjQgLyogUGFnZVNj
cmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM3RjEyMkI4QTNEMDAx
RkQxRjcgLyogQmxvYlVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QkUwODI0NUU1OTAw
MUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCShyZXZpc2lvbiAxNjgzNTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTU0LDEwICsxNTUsMTIgQEAgcHJpdmF0ZToK
IAogdHlwZWRlZiBWZWN0b3I8QmxvYkRhdGFJdGVtPiBCbG9iRGF0YUl0ZW1MaXN0OwogCi1jbGFz
cyBCbG9iRGF0YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBCbG9iRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPEJsb2JEYXRhPiB7CiBwdWJsaWM6Ci0gICAgQmxvYkRhdGEo
KSB7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iRGF0YT4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYkRhdGEpOworICAgIH0KIAogICAgIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9CiAg
ICAgdm9pZCBzZXRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKQEAgLTE3MiwxMCArMTc1LDgg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9iUmVnaXN0cnlJbXBs
OwotICAgIGZyaWVuZCBjbGFzcyBCbG9iU3RvcmFnZURhdGE7CiAKLSAgICAvLyBUaGlzIGlzIG9u
bHkgZXhwb3NlZCB0byBCbG9iU3RvcmFnZURhdGEuCi0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0
IFJhd0RhdGEmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKKyAgICBCbG9i
RGF0YSgpIHsgfQogCiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7CiAgICAgU3RyaW5nIG1fY29u
dGVudERpc3Bvc2l0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCShyZXZpc2lvbiAxNjgzNTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw5ICszNCw5IEBACiAKICNpZiBFTkFCTEUoQkxPQikKIAorI2luY2x1ZGUg
IkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlBhcnQuaCIKICNpbmNsdWRlICJCbG9iUmVzb3Vy
Y2VIYW5kbGUuaCIKLSNpbmNsdWRlICJCbG9iU3RvcmFnZURhdGEuaCIKICNpbmNsdWRlICJGaWxl
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VF
cnJvci5oIgpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRs
ZT4gY3JlYXRlCiAKIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRl
bnRpYWxzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKLSAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0g
c3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0
YUZyb21VUkwocmVxdWVzdC51cmwoKSk7CisgICAgQmxvYkRhdGEqIGJsb2JEYXRhID0gc3RhdGlj
X2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21V
UkwocmVxdWVzdC51cmwoKSk7CiAgICAgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGJsb2JEYXRhLCByZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwog
fQogCkBAIC04Nyw3ICs4Nyw3IEBAIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IEJsb2JSZWdp
c3RyeUkKICAgICByZXR1cm4gaGFuZGxlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0
cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFnZURh
dGEsIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25n
IGxvbmcgbGVuZ3RoKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMo
QmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcywgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoICE9IEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpOwogCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtCiAgICAgICAgIGxvbmcgbG9uZyBjdXJy
ZW50TGVuZ3RoID0gaXRlci0+bGVuZ3RoIC0gb2Zmc2V0OwogICAgICAgICBsb25nIGxvbmcgbmV3
TGVuZ3RoID0gY3VycmVudExlbmd0aCA+IGxlbmd0aCA/IGxlbmd0aCA6IGN1cnJlbnRMZW5ndGg7
CiAgICAgICAgIGlmIChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRlbTo6RGF0YSkKLSAgICAgICAg
ICAgIGJsb2JTdG9yYWdlRGF0YS0+bV9kYXRhLmFwcGVuZERhdGEoaXRlci0+ZGF0YSwgaXRlci0+
b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOworICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVu
ZERhdGEoaXRlci0+ZGF0YSwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpdGVyLT50eXBlID09IEJsb2JEYXRhSXRl
bTo6RmlsZSk7Ci0gICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxl
KGl0ZXItPnBhdGgsIGl0ZXItPm9mZnNldCArIG9mZnNldCwgbmV3TGVuZ3RoLCBpdGVyLT5leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUo
aXRlci0+cGF0aCwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgIH0KICAgICAgICAgbGVuZ3RoIC09IG5ld0xl
bmd0aDsKICAgICAgICAgb2Zmc2V0ID0gMDsKQEAgLTEyMiwxNSArMTIyLDE2IEBAIHZvaWQgQmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxlQmxvYlUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAotICAg
IFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JTdG9yYWdlRGF0YSA9IEJsb2JTdG9yYWdlRGF0
YTo6Y3JlYXRlKGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0g
QmxvYkRhdGE6OmNyZWF0ZSgpOworICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShjb250ZW50
VHlwZSk7CiAKICAgICAvLyBGSVhNRTogRmFjdG9yIG91dCBzaXplIGFuZCBtb2RpZmljYXRpb24g
dHJhY2tpbmcgZm9yIGEgY2xlYW5lciBpbXBsZW1lbnRhdGlvbi4KICAgICBGaWxlTWV0YWRhdGEg
bWV0YWRhdGE7CiAgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmRGaWxlKHBh
dGgsIDAsIG1ldGFkYXRhLmxlbmd0aCwgbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSk7Ci0gICAg
bV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBibG9iU3RvcmFnZURhdGEpOworICAgIGJsb2JEYXRh
LT5hcHBlbmRGaWxlKHBhdGgsIDAsIG1ldGFkYXRhLmxlbmd0aCwgbWV0YWRhdGEubW9kaWZpY2F0
aW9uVGltZSk7CisgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBibG9iRGF0YS5yZWxlYXNl
KCkpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0cywgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKQEAgLTEzOCw3ICsxMzksOCBAQCB1bnNpZ25lZCBsb25nIGxv
bmcgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAgICBSZWZQdHI8
QmxvYlN0b3JhZ2VEYXRhPiBibG9iU3RvcmFnZURhdGEgPSBCbG9iU3RvcmFnZURhdGE6OmNyZWF0
ZShjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRh
OjpjcmVhdGUoKTsKKyAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOwog
CiAgICAgLy8gVGhlIGJsb2IgZGF0YSBpcyBzdG9yZWQgaW4gdGhlICJjYW5vbmljYWwiIHdheS4g
VGhhdCBpcywgaXQgb25seSBjb250YWlucyBhIGxpc3Qgb2YgRGF0YSBhbmQgRmlsZSBpdGVtcy4K
ICAgICAvLyAxKSBUaGUgRGF0YSBpdGVtIGlzIGRlbm90ZWQgYnkgdGhlIHJhdyBkYXRhIGFuZCB0
aGUgcmFuZ2UuCkBAIC0xNTMsNyArMTU1LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdp
c3RyeUltcGw6OnJlZwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHBhcnRTaXplID0g
cGFydC5kYXRhKCkuc2l6ZSgpOwogICAgICAgICAgICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEg
PSBSYXdEYXRhOjpjcmVhdGUocGFydC5tb3ZlRGF0YSgpKTsKICAgICAgICAgICAgIHNpemUgKz0g
cGFydFNpemU7Ci0gICAgICAgICAgICBibG9iU3RvcmFnZURhdGEtPm1fZGF0YS5hcHBlbmREYXRh
KHJhd0RhdGEucmVsZWFzZSgpLCAwLCBwYXJ0U2l6ZSk7CisgICAgICAgICAgICBibG9iRGF0YS0+
YXBwZW5kRGF0YShyYXdEYXRhLnJlbGVhc2UoKSwgMCwgcGFydFNpemUpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBCbG9iUGFydDo6QmxvYjogewpAQCAtMTYx
LDIyICsxNjMsMjEgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeUltcGw6OnJlZwog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IHBhcnRTaXplID0gYmxvYlNpemUocGFydC51cmwoKSk7IC8vIEFzIGEgc2lkZSBlZmZlY3QsIHRo
aXMgY2FsY3VsYXRlcyBzaXplcyBvZiBhbGwgZmlsZXMgaW4gdGhlIGJsb2IuCiAgICAgICAgICAg
ICBzaXplICs9IHBhcnRTaXplOwotICAgICAgICAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKGJsb2JT
dG9yYWdlRGF0YS5nZXQoKSwgbV9ibG9icy5nZXQocGFydC51cmwoKS5zdHJpbmcoKSktPml0ZW1z
KCksIDAsIHBhcnRTaXplKTsKKyAgICAgICAgICAgIGFwcGVuZFN0b3JhZ2VJdGVtcyhibG9iRGF0
YS5nZXQoKSwgbV9ibG9icy5nZXQocGFydC51cmwoKS5zdHJpbmcoKSktPml0ZW1zKCksIDAsIHBh
cnRTaXplKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JTdG9yYWdlRGF0YSk7CisgICAg
bV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBibG9iRGF0YS5yZWxlYXNlKCkpOwogICAgIHJldHVy
biBzaXplOwogfQogCiB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CiAKLSAg
ICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBzcmMgPSBtX2Jsb2JzLmdldChzcmNVUkwuc3RyaW5n
KCkpOworICAgIEJsb2JEYXRhKiBzcmMgPSBnZXRCbG9iRGF0YUZyb21VUkwoc3JjVVJMKTsKICAg
ICBpZiAoIXNyYykKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODYsOCArMTg3LDggQEAgdm9pZCBC
bG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoYwogdW5zaWduZWQgbG9uZyBsb25nIEJs
b2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQmxvYlN0b3JhZ2VEYXRhKiBvcmlnaW5hbFN0
b3JhZ2VEYXRhID0gbV9ibG9icy5nZXQoc3JjVVJMLnN0cmluZygpKTsKLSAgICBpZiAoIW9yaWdp
bmFsU3RvcmFnZURhdGEpCisgICAgQmxvYkRhdGEqIG9yaWdpbmFsRGF0YSA9IGdldEJsb2JEYXRh
RnJvbVVSTChzcmNVUkwpOworICAgIGlmICghb3JpZ2luYWxEYXRhKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5hbFNpemUgPSBibG9iU2l6ZShzcmNV
UkwpOwpAQCAtMjEyLDExICsyMTMsMTIgQEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3Ry
eUltcGw6OnJlZwogICAgICAgICBlbmQgPSBvcmlnaW5hbFNpemU7CiAKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgbmV3TGVuZ3RoID0gZW5kIC0gc3RhcnQ7Ci0gICAgUmVmUHRyPEJsb2JTdG9yYWdl
RGF0YT4gbmV3U3RvcmFnZURhdGEgPSBCbG9iU3RvcmFnZURhdGE6OmNyZWF0ZShvcmlnaW5hbFN0
b3JhZ2VEYXRhLT5jb250ZW50VHlwZSgpKTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IG5ld0RhdGEg
PSBCbG9iRGF0YTo6Y3JlYXRlKCk7CisgICAgbmV3RGF0YS0+c2V0Q29udGVudFR5cGUob3JpZ2lu
YWxEYXRhLT5jb250ZW50VHlwZSgpKTsKIAotICAgIGFwcGVuZFN0b3JhZ2VJdGVtcyhuZXdTdG9y
YWdlRGF0YS5nZXQoKSwgb3JpZ2luYWxTdG9yYWdlRGF0YS0+aXRlbXMoKSwgc3RhcnQsIG5ld0xl
bmd0aCk7CisgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKG5ld0RhdGEuZ2V0KCksIG9yaWdpbmFsRGF0
YS0+aXRlbXMoKSwgc3RhcnQsIG5ld0xlbmd0aCk7CiAKLSAgICBtX2Jsb2JzLnNldCh1cmwuc3Ry
aW5nKCksIG5ld1N0b3JhZ2VEYXRhLnJlbGVhc2UoKSk7CisgICAgbV9ibG9icy5zZXQodXJsLnN0
cmluZygpLCBuZXdEYXRhLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld0xlbmd0aDsKIH0KIApA
QCAtMjI2LDcgKzIyOCw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JV
UkwKICAgICBtX2Jsb2JzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogfQogCi1CbG9iU3RvcmFnZURh
dGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBVUkwmIHVybCkg
Y29uc3QKK0Jsb2JEYXRhKiBCbG9iUmVnaXN0cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBy
ZXR1cm4gbV9ibG9icy5nZXQodXJsLnN0cmluZygpKTsKQEAgLTIzNSwxMiArMjM3LDEyIEBAIEJs
b2JTdG9yYWdlRGF0YSogQmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0QmwKIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCbG9iUmVnaXN0cnlJbXBsOjpibG9iU2l6ZShjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEJsb2JTdG9yYWdlRGF0YSogc3RvcmFnZURhdGEgPSBt
X2Jsb2JzLmdldCh1cmwuc3RyaW5nKCkpOwotICAgIGlmICghc3RvcmFnZURhdGEpCisgICAgQmxv
YkRhdGEqIGRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJlc3VsdCA9IDA7Ci0g
ICAgZm9yIChjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBzdG9yYWdlRGF0YS0+aXRlbXMoKSkg
eworICAgIGZvciAoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogZGF0YS0+aXRlbXMoKSkgewog
ICAgICAgICBpZiAoaXRlbS5sZW5ndGggPT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkgewog
ICAgICAgICAgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgICAgICAgICAgaWYgKCFnZXRG
aWxlTWV0YWRhdGEoaXRlbS5wYXRoLCBtZXRhZGF0YSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAkocmV2aXNpb24gMTY4
MzUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgQmxvYlJlZ2lzdHJ5
SW1wbF9oCiAjZGVmaW5lIEJsb2JSZWdpc3RyeUltcGxfaAogCisjaW5jbHVkZSAiQmxvYkRhdGEu
aCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJCbG9iU3RvcmFnZURhdGEu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTUwLDEyICs1MCwxMiBA
QCBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsIGZpbmFsIDogcHVibGljIEJsCiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+QmxvYlJlZ2lzdHJ5SW1wbCgpOwogCi0gICAgQmxvYlN0b3JhZ2VEYXRhKiBnZXRC
bG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CisgICAgQmxvYkRhdGEqIGdldEJsb2JE
YXRhRnJvbVVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlSGFuZGxlQ2xpZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRl
bXMoQmxvYlN0b3JhZ2VEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJs
b2JEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcg
bG9uZyBsZW5ndGgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJik7CiAKLSAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4+IG1fYmxvYnM7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxCbG9iRGF0YT4+IG1fYmxvYnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxNjgzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJCbG9iUmVzb3VyY2VIYW5kbGUuaCIKIAogI2luY2x1
ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgotI2luY2x1ZGUgIkJsb2JTdG9yYWdlRGF0YS5oIgorI2lu
Y2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgpAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgQmxvYlJlc291cmNlU3luY2hyb25vdXNMb2FkZXI6OmRpZEYKIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KIC8vIEJsb2JSZXNvdXJjZUhhbmRsZQogCi1QYXNzUmVmUHRyPEJsb2JSZXNvdXJj
ZUhhbmRsZT4gQmxvYlJlc291cmNlSGFuZGxlOjpjcmVhdGVBc3luYyhCbG9iU3RvcmFnZURhdGEq
IGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxl
Q2xpZW50KiBjbGllbnQpCitQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gQmxvYlJlc291
cmNlSGFuZGxlOjpjcmVhdGVBc3luYyhCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKIHsKICAgICAv
LyBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGNhbGwgZGlkRmFpbCgpIGluc3RlYWQgb2YgYmxvY2tp
bmcgdGhlIGxvYWQgd2l0aG91dCBleHBsYW5hdGlvbi4KICAgICBpZiAoIWVxdWFsSWdub3JpbmdD
YXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiR0VUIikpCkBAIC0xNDQsNyArMTQ0LDcgQEAgUGFz
c1JlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IEJsb2JSZXNvdQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQmxvYlJlc291cmNlSGFuZGxlKGJsb2JEYXRhLCByZXF1ZXN0LCBjbGllbnQsIHRydWUp
KTsKIH0KIAotdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoQmxvYlN0b3JhZ2VEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZl
Y3RvcjxjaGFyPiYgZGF0YSkKK3ZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHJlcXVl
c3QuaHR0cE1ldGhvZCgpLCAiR0VUIikpIHsKICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9y
KHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiwgbWV0aG9kTm90QWxsb3dlZCwgcmVzcG9uc2UudXJs
KCksICJSZXF1ZXN0IG1ldGhvZCBtdXN0IGJlIEdFVCIpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZv
aWQgQmxvYlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW4KICAgICBoYW5kbGUtPnN0YXJ0
KCk7CiB9CiAKLUJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKFBhc3NSZWZQ
dHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGFzeW5jKQorQmxvYlJlc291
cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJv
b2wgYXN5bmMpCiAgICAgOiBSZXNvdXJjZUhhbmRsZSgwLCByZXF1ZXN0LCBjbGllbnQsIGZhbHNl
LCBmYWxzZSkKICAgICAsIG1fYmxvYkRhdGEoYmxvYkRhdGEpCiAgICAgLCBtX2FzeW5jKGFzeW5j
KQpAQCAtMjI0LDYgKzIyNCw4IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAK
IHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpkb1N0YXJ0KCkKIHsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCiAgICAgLy8gRG8gbm90IGNvbnRpbnVlIGlmIHRoZSByZXF1ZXN0IGlzIGFi
b3J0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLgogICAgIGlmIChtX2Fib3J0ZWQgfHwgbV9lcnJvckNv
ZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NSw2ICsyNTcsOCBAQCB2b2lkIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6ZG9TdGFydCgpCiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpnZXRTaXplRm9y
TmV4dCgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIC8vIERvIHdlIGZp
bmlzaCB2YWxpZGF0aW5nIGFuZCBjb3VudGluZyBzaXplIGZvciBhbGwgaXRlbXM/CiAgICAgaWYg
KG1fc2l6ZUl0ZW1Db3VudCA+PSBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSkgewogICAgICAg
ICBzZWVrKCk7CkBAIC0yODcsNiArMjkxLDggQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Omdl
dFNpemVGb3JOZXh0KAogCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZGlkR2V0U2l6ZShsb25n
IGxvbmcgc2l6ZSkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gRG8g
bm90IGNvbnRpbnVlIGlmIHRoZSByZXF1ZXN0IGlzIGFib3J0ZWQgb3IgYW4gZXJyb3Igb2NjdXJz
LgogICAgIGlmIChtX2Fib3J0ZWQgfHwgbV9lcnJvckNvZGUpCiAgICAgICAgIHJldHVybjsKQEAg
LTMxNiw2ICszMjIsOCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZGlkR2V0U2l6ZShsb25n
CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpzZWVrKCkKIHsKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCiAgICAgLy8gQ29udmVydCBmcm9tIHRoZSBzdWZmaXggbGVuZ3RoIHRvIHRo
ZSByYW5nZS4KICAgICBpZiAobV9yYW5nZVN1ZmZpeExlbmd0aCAhPSBwb3NpdGlvbk5vdFNwZWNp
ZmllZCkgewogICAgICAgICBtX3JhbmdlT2Zmc2V0ID0gbV90b3RhbFJlbWFpbmluZ1NpemUgLSBt
X3JhbmdlU3VmZml4TGVuZ3RoOwpAQCAtMzQ1LDYgKzM1Myw4IEBAIHZvaWQgQmxvYlJlc291cmNl
SGFuZGxlOjpzZWVrKCkKIAogaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5bmMoY2hhciog
YnVmLCBpbnQgbGVuZ3RoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBB
U1NFUlQoIW1fYXN5bmMpOwogICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRo
aXMpOwogCkBAIC0zOTEsNiArNDAxLDggQEAgaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5
bmMoY2hhciogYgogCiBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YVN5bmMoY29uc3Qg
QmxvYkRhdGFJdGVtJiBpdGVtLCBjaGFyKiBidWYsIGludCBsZW5ndGgpCiB7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKwogICAgIEFTU0VSVCghbV9hc3luYyk7CiAKICAgICBsb25nIGxv
bmcgcmVtYWluaW5nID0gaXRlbS5sZW5ndGggLSBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CkBAIC00
MTEsNiArNDIzLDggQEAgaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERhdGFTeW5jKGNvbgog
CiBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRmlsZVN5bmMoY29uc3QgQmxvYkRhdGFJdGVt
JiBpdGVtLCBjaGFyKiBidWYsIGludCBsZW5ndGgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKwogICAgIEFTU0VSVCghbV9hc3luYyk7CiAKICAgICBpZiAoIW1fZmlsZU9wZW5lZCkg
ewpAQCAtNDQ0LDYgKzQ1OCw3IEBAIGludCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRGaWxlU3lu
Yyhjb24KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRBc3luYygpCiB7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9hc3luYyk7CiAKICAgICAvLyBEbyBu
b3QgY29udGludWUgaWYgdGhlIHJlcXVlc3QgaXMgYWJvcnRlZCBvciBhbiBlcnJvciBvY2N1cnMu
CkBAIC00NjcsNiArNDgyLDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRBc3luYygp
CiAKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YUFzeW5jKGNvbnN0IEJsb2JEYXRh
SXRlbSYgaXRlbSkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X2FzeW5jKTsKICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKIApA
QCAtNDc5LDYgKzQ5NSw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YUFzeW5j
KGMKIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRGaWxlQXN5bmMoY29uc3QgQmxvYkRh
dGFJdGVtJiBpdGVtKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KG1fYXN5bmMpOwogCiAgICAgaWYgKG1fZmlsZU9wZW5lZCkgewpAQCAtNTc3LDYgKzU5NCw4IEBA
IHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZSgKIAogdm9pZCBCbG9iUmVz
b3VyY2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25TdWNjZXNzKCkKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCiAgICAgYm9vbCBpc1JhbmdlUmVxdWVzdCA9IG1fcmFuZ2VPZmZzZXQg
IT0gcG9zaXRpb25Ob3RTcGVjaWZpZWQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShm
aXJzdFJlcXVlc3QoKS51cmwoKSwgbV9ibG9iRGF0YS0+Y29udGVudFR5cGUoKSwgbV90b3RhbFJl
bWFpbmluZ1NpemUsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKG1fdG90YWxSZW1haW5pbmdTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gMTY4MzUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVz
b3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBc3luY0ZpbGVTdHJlYW07Ci1jbGFzcyBCbG9iU3RvcmFnZURh
dGE7CitjbGFzcyBCbG9iRGF0YTsKIGNsYXNzIEZpbGVTdHJlYW07CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTUwLDkgKzUwLDkgQEAgc3Ry
dWN0IEJsb2JEYXRhSXRlbTsKIAogY2xhc3MgQmxvYlJlc291cmNlSGFuZGxlIDogcHVibGljIEZp
bGVTdHJlYW1DbGllbnQsIHB1YmxpYyBSZXNvdXJjZUhhbmRsZSAgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gY3JlYXRlQXN5bmMoQmxvYlN0b3Jh
Z2VEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGNyZWF0ZUFzeW5jKEJs
b2JEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsK
IAotICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxvYlN0b3JhZ2VE
YXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0
YSk7CisgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShCbG9iRGF0YSog
YmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwog
CiAgICAgLy8gRmlsZVN0cmVhbUNsaWVudCBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRH
ZXRTaXplKGxvbmcgbG9uZykgb3ZlcnJpZGU7CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIHZvaWQgZGVsYXllZFN0YXJ0QmxvYlJlc291cmNlSGFuZGxlKHZv
aWQqKTsKIAotICAgIEJsb2JSZXNvdXJjZUhhbmRsZShQYXNzUmVmUHRyPEJsb2JTdG9yYWdlRGF0
YT4sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlSGFuZGxlQ2xpZW50KiwgYm9vbCBh
c3luYyk7CisgICAgQmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqLCBib29sIGFzeW5jKTsKICAgICB2aXJ0dWFs
IH5CbG9iUmVzb3VyY2VIYW5kbGUoKTsKIAogICAgIHZvaWQgZG9TdGFydCgpOwpAQCAtOTMsNyAr
OTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmFpbChpbnQgZXJyb3JDb2RlKTsKICAg
ICB2b2lkIG5vdGlmeUZpbmlzaCgpOwogCi0gICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gbV9i
bG9iRGF0YTsKKyAgICBSZWZQdHI8QmxvYkRhdGE+IG1fYmxvYkRhdGE7CiAgICAgYm9vbCBtX2Fz
eW5jOwogICAgIFJlZlB0cjxBc3luY0ZpbGVTdHJlYW0+IG1fYXN5bmNTdHJlYW07IC8vIEZvciBh
c3luY2hyb25vdXMgbG9hZGluZy4KICAgICBSZWZQdHI8RmlsZVN0cmVhbT4gbV9zdHJlYW07IC8v
IEZvciBzeW5jaHJvbm91cyBsb2FkaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iU3RvcmFnZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oCShyZXZpc2lvbiAxNjgzNTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JTdG9yYWdlRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEJsb2JTdG9yYWdlRGF0YV9oCi0jZGVmaW5l
IEJsb2JTdG9yYWdlRGF0YV9oCi0KLSNpbmNsdWRlICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBCbG9iU3RvcmFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxC
bG9iU3RvcmFnZURhdGE+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iU3Rv
cmFnZURhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iU3RvcmFnZURhdGEoY29udGVudFR5cGUpKTsKLSAg
ICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNvbnRlbnRUeXBlKCk7IH0KLSAgICBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcygp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pdGVtcygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5k
IGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7Ci0KLSAgICBCbG9iU3RvcmFnZURhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIG1fZGF0YS5zZXRDb250ZW50VHlwZShj
b250ZW50VHlwZSk7Ci0gICAgfQotCi0gICAgQmxvYkRhdGEgbV9kYXRhOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQmxvYlN0b3JhZ2VEYXRhX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCShyZXZpc2lvbiAx
NjgzNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAK
ICNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCi0jaW5jbHVkZSAiQmxvYlN0b3JhZ2VEYXRh
LmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgpAQCAtMzAyLDcgKzMwMSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJs
b2JSZXNvbHZlZChGb3JtRGF0YSoKICAgICAgICAgTE9HX0VSUk9SKCJUcmllZCB0byByZXNvbHZl
IGEgYmxvYiB3aXRob3V0IGEgdXNhYmxlIHJlZ2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgQmxvYlN0b3JhZ2VEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdp
c3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKFVSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCkpOworICAgIEJsb2JEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJs
b2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCkpOwogICAgIGlmICghYmxvYkRhdGEpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgZ2V0IGJsb2IgZGF0YSBmcm9tIGEgcmVnaXN0cnkiKTsKICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDE2ODM1MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBACiAjaWYgRU5BQkxFKEJMT0Ip
CiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKICNpbmNsdWRlICJCbG9iUmVnaXN0cnlJbXBsLmgiCi0j
aW5jbHVkZSAiQmxvYlN0b3JhZ2VEYXRhLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykK
QEAgLTc5OCw3ICs3OTcsNyBAQCBzdGF0aWMgdm9pZCBhZGRFbmNvZGVkQmxvYkl0ZW1Ub1NvdXBN
ZXNzCiAKIHN0YXRpYyB2b2lkIGFkZEVuY29kZWRCbG9iVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCwgdW5zaWduZWQg
bG9uZyYgdG90YWxCb2R5U2l6ZSkKIHsKLSAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9i
RGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0
QmxvYkRhdGFGcm9tVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1lbnQubV91cmwpKTsKKyAg
ICBSZWZQdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1w
bCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgZWxlbWVudC5tX3VybCkpOwogICAgIGlmICghYmxvYkRhdGEpCiAgICAgICAgIHJldHVybjsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>