<?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>107138</bug_id>
          
          <creation_ts>2013-01-17 10:05:32 -0800</creation_ts>
          <short_desc>Make renderer construction take Element where possible</short_desc>
          <delta_ts>2013-01-19 06:36:47 -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>Layout and Rendering</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>
          <dependson>107176</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>hclam</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809422</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-17 10:05:32 -0800</bug_when>
    <thetext>This requires changing how anonymous renderers are constructed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809503</commentid>
    <comment_count>1</comment_count>
      <attachid>183217</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-17 11:06:55 -0800</bug_when>
    <thetext>Created attachment 183217
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809562</commentid>
    <comment_count>2</comment_count>
      <attachid>183217</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-01-17 11:38:22 -0800</bug_when>
    <thetext>Comment on attachment 183217
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809577</commentid>
    <comment_count>3</comment_count>
      <attachid>183217</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 11:51:01 -0800</bug_when>
    <thetext>Comment on attachment 183217
patch

Attachment 183217 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15925698</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809610</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-17 12:16:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/140023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809700</commentid>
    <comment_count>5</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-01-17 13:27:52 -0800</bug_when>
    <thetext>This patch seems to failure a number of tests on Lion and Mountain Lion:

http://build.webkit.org/builders/Apple%20Lion%20Release%20WK1%20%28Tests%29/builds/8275
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/5804

EWS also says these tests are failing on Mac:

Regressions: Unexpected text-only failures (29)
  accessibility/render-counter-text.html [ Failure ]
  editing/selection/5240265.html [ Failure ]
  editing/selection/css-pseudo-element.html [ Failure ]
  editing/selection/focus-crash.html [ Failure ]
  editing/selection/hit-test-anonymous.html [ Failure ]
  editing/selection/undo-crash.html [ Failure ]
  fast/css-generated-content/hover-inline.html [ Failure ]
  fast/dom/Node/mutation-blur.html [ Failure ]
  fast/events/domactivate-sets-underlying-click-event-as-handled.html [ Failure ]
  fast/events/popup-allowed-from-gesture-initiated-form-submit.html [ Failure ]
  fast/events/popup-blocked-from-untrusted-mouse-click.html [ Failure ]
  fast/forms/multiple-form-submission-protection-mouse.html [ Failure ]
  fast/forms/range/slider-delete-while-dragging-thumb.html [ Failure ]
  fast/forms/search-delete-while-cancel-button-clicked.html [ Failure ]
  fast/forms/submit-to-blank-multiple-times.html [ Failure ]
  fast/history/form-submit-in-frame-via-onclick.html [ Failure ]
  fast/history/form-submit-in-frame.html [ Failure ]
  fast/history/gesture-before-onload-form-submit.html [ Failure ]
  fast/history/history_reload.html [ Failure ]
  fast/images/animated-gif-restored-from-bfcache.html [ Failure ]
  fast/loader/javascript-url-in-object.html [ Failure ]
  http/tests/inspector/console-resource-errors.html [ Failure ]
  http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html [ Failure ]
  inspector/styles/styles-source-offsets.html [ Failure ]
  media/audio-delete-while-slider-thumb-clicked.html [ Failure ]
  media/media-fullscreen-inline.html [ Failure ]
  platform/mac/accessibility/css-content-attribute.html [ Failure ]
  svg/batik/text/smallFonts.svg [ Failure ]
  svg/dom/SVGScriptElement/script-load-and-error-events.svg [ Failure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809748</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 13:57:37 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 107176</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810958</commentid>
    <comment_count>7</comment_count>
      <attachid>183532</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-18 12:54:46 -0800</bug_when>
    <thetext>Created attachment 183532
patch2

For EWS with a RenderText fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810960</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 12:57:06 -0800</bug_when>
    <thetext>Attachment 183532 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/RenderText.cpp:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 99 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>810985</commentid>
    <comment_count>9</comment_count>
      <attachid>183532</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 13:38:36 -0800</bug_when>
    <thetext>Comment on attachment 183532
patch2

Attachment 183532 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15940845</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811099</commentid>
    <comment_count>10</comment_count>
      <attachid>183532</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-18 15:27:59 -0800</bug_when>
    <thetext>Comment on attachment 183532
patch2

Attachment 183532 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15939816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811394</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-19 06:36:47 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/140244 (with chrome test build fix)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183217</attachid>
            <date>2013-01-17 11:06:55 -0800</date>
            <delta_ts>2013-01-18 12:54:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>render-tree-node-tighten-element-7.patch</filename>
            <type>text/plain</type>
            <size>93906</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTk5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NSBAQAorMjAxMy0wMS0xNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSByZW5kZXJlciBjb25z
dHJ1Y3RvcnMgdGFrZSBFbGVtZW50IHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRpZ2h0ZXIgdHlwaW5nIHByZXZl
bnRzIGJ1Z3MgYW5kIGVuYWJsZXMgb3B0aW1pemF0aW9ucy4KKworICAgICAgICBUaGUgcGF0Y2gg
Y2hhbmdlcyBob3cgYW5vbnltb3VzIHJlbmRlcmVyZXIgYXJlIGNvbnN0cnVjdGVkLiBQcmV2aW91
c2x5IERvY3VtZW50KiBhcyB0aGUgbm9kZSBwYXJhbWV0ZXIKKyAgICAgICAgaW5kaWNhdGVkIHRo
YXQgdGhlIHJlbmRlcmVyIHdhcyBhbm9ueW1vdXMuIFRoaXMgZm9yY2VkIHRoZSBjb2RlIHRvIG9w
ZXJhdGUgb24gQ29udGFpbmVyTm9kZXMgKERvY3VtZW50CisgICAgICAgIGlzIG5vdCBhbiBFbGVt
ZW50KS4gTm93IGFub255bW91cyByZW5kZXJlcnMgYXJlIGNvbnN0cnVjdGVkIGJ5IHBhc3Npbmcg
bnVsbCBhbmQgdGhlIGRvY3VtZW50IGlzIHNldCBieQorICAgICAgICBzZXBhcmF0ZSBzZXREb2N1
bWVudEZvckFub255bW91cygpIGNhbGwuIFRoZSBwYXRjaCB1c2VzIFJlbmRlckZvbzo6Y3JlYXRl
QW5vbnltb3VzKCkgcGF0dGVybiBjb25zaXN0ZW50bHkuCisKKyAgICAgICAgTW9zdCBjb25zdHJ1
Y3RvcnMgYXJlIHN3aXRjaGVkIHRvIHRha2UgRWxlbWVudC4gUmVuZGVyQmxvY2sgc3RpbGwgdGFr
ZXMgQ29udGFpbmVyTm9kZSBkdWUgdG8gYSBmZXcgc3ViY2xhc3NlcworICAgICAgICAoUmVuZGVy
VmlldyBhbmQgUmVuZGVyRmxvd1RocmVhZCkgdGhhdCBwYXNzIGluIGEgRG9jdW1lbnQuCisKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnVwZGF0ZVNjcm9sbENvcm5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlUmVw
bGFjZW1lbnRSdW5Jbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlRmly
c3RMZXR0ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlRmly
c3RMZXR0ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRl
QW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQ29sdW1uc1dpdGhQYXJlbnRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzQ29sdW1uU3Bh
bldpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6
CisgICAgICAgIChSZW5kZXJCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNyZWF0ZUFub255bW91cyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94Lmg6CisgICAgICAgIChSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmg6CisgICAgICAgIChSZW5kZXJEZXRhaWxzTWFy
a2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGlhbG9nLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJEaWFsb2c6OlJlbmRlckRpYWxvZyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpZWxkc2V0OjpSZW5k
ZXJGaWVsZHNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0Lmg6CisgICAg
ICAgIChSZW5kZXJGaWVsZHNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4
aWJsZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAg
ICAgIChSZW5kZXJGbGV4aWJsZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoK
KyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcjo6UmVuZGVyRnVsbFNjcmVlblBs
YWNlaG9sZGVyKToKKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3JlZW4p
OgorICAgICAgICAoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlQW5vbnltb3VzKToKKyAgICAgICAg
KFJlbmRlckZ1bGxTY3JlZW46OndyYXBSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW4pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OlJlbmRlckdyaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAg
IChSZW5kZXJHcmlkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpjcmVhdGVBbm9ueW1vdXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChSZW5kZXJJbWFnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OlJlbmRlcklubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bmxpbmU6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6YWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAoUmVuZGVySW5saW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bm9kZSk6CisgICAgICAgIAorICAgICAg
ICAgICAgQWRkIHZlcnNpb24gd2l0aCBjb3ZhcmlhbnQgRWxlbWVudCByZXR1cm4gdHlwZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsQ29ybmVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6c3R5bGVEaWRDaGFuZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgorICAgICAgICAoUmVuZGVy
TGlzdEl0ZW0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y3JlYXRlQW5vbnltb3VzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6Cisg
ICAgICAgIChSZW5kZXJMaXN0TWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5OjpSZW5kZXJNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKFJl
bmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKToKKyAgICAgICAgKFJlbmRlck1lZGlhQ29u
dHJvbFRpbWVEaXNwbGF5KToKKyAgICAgICAgKFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uQmxvY2s6OlJlbmRlck11bHRpQ29sdW1u
QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5CbG9jazo6ZW5zdXJl
Q29sdW1uU2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2su
aDoKKyAgICAgICAgKFJlbmRlck11bHRpQ29sdW1uQmxvY2spOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaDoKKyAgICAg
ICAgKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29s
dW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
dWx0aUNvbHVtblNldDo6Y3JlYXRlQW5vbnltb3VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICAoUmVuZGVy
TXVsdGlDb2x1bW5TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJO
YW1lZEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJl
YWQuaDoKKyAgICAgICAgKFJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJl
bmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAKKyAgICAgICAgICAgICBQYXNzZWQgaW4gbnVsbCBub2RlIGluZGljYXRlcyB0aGF0IHRoZSBy
ZW5kZXJlciBpcyBhbm9ueW1vdXMuIFJlbW92ZSBub3cgdW5uZWNlc3Nhcnkgc2V0SXNBbm9ueW1v
dXMoKSBmdW5jdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0Fub255
bW91cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldERvY3VtZW50Rm9yQW5v
bnltb3VzKToKKyAgICAgICAgKFJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OlJlbmRlck9iamVjdEJpdGZpZWxkczo6UmVuZGVyT2JqZWN0Qml0ZmllbGRzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmg6CisgICAgICAgIChSZW5kZXJSZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJSZWdpb25TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uU2V0OjpS
ZW5kZXJSZWdpb25TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaDoK
KyAgICAgICAgKFJlbmRlclJlZ2lvblNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBs
YWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgIChS
ZW5kZXJSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpjcmVhdGVBbm9ueW1vdXMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaDoKKyAgICAgICAgKFJl
bmRlclJlcGxpY2EpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFub255bW91c1J1YnlJbmxpbmVCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSdWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lubGluZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJS
dWJ5QXNCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnkuaDoKKyAgICAgICAg
KFJlbmRlclJ1YnlBc0lubGluZSk6CisgICAgICAgIChSZW5kZXJSdWJ5QXNCbG9jayk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
dWJ5QmFzZTo6Y3JlYXRlQW5vbnltb3VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oOgorICAgICAgICAoUmVuZGVyUnVieUJhc2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1
bjo6c3RhdGljQ3JlYXRlUnVieVJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uaDoKKyAgICAgICAgKFJlbmRlclJ1YnlSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJSdWJ5VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6UmVuZGVy
UnVieVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oOgorICAgICAg
ICAoUmVuZGVyUnVieVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQ
YXJ0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNyZWF0ZUFub255bW91cyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5oOgorICAgICAgICAoUmVuZGVyU2Nyb2xsYmFyUGFydCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJj
aEZpZWxkOjpSZW5kZXJTZWFyY2hGaWVsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmg6CisgICAgICAgIChSZW5kZXJTZWFyY2hGaWVsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpS
ZW5kZXJUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y3JlYXRlQW5vbnlt
b3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUu
aDoKKyAgICAgICAgKFJlbmRlclRhYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVDYXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2FwdGlvbjo6UmVu
ZGVyVGFibGVDYXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9u
Lmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNhcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpS
ZW5kZXJUYWJsZUNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjcmVh
dGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Q29sOjpSZW5kZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
Lmg6CisgICAgICAgIChSZW5kZXJUYWJsZUNvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpSZW5kZXJU
YWJsZVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6Y3JlYXRlQW5vbnlt
b3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlUm93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlv
bjo6UmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAgICAgIChSZW5kZXJUYWJsZVNlY3Rpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2wpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAoUmVuZGVyVGV4dENvbnRy
b2wpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oOgorICAgICAgICAoUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuaDoKKyAgICAgICAgKFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s6OlJlbmRlclRleHRDb250cm9s
SW5uZXJCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDdWU6OlJlbmRlclRleHRUcmFja0N1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdldCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgorICAgICAgICAoUmVuZGVyV2lk
Z2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6Y3JlYXRlQW5vbnltb3VzTWF0
aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aDoKKyAgICAgICAgKFJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxGZW5jZWQ6OmNyZWF0ZU1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNyZWF0ZUdseXBoKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxP
cGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93
Lmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNvbnRlbnREYXRhOjpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZHQmxvY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW5saW5lKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1RTcGFuOjpSZW5kZXJTVkdUU3Bhbik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAoUmVuZGVyU1ZHVFNwYW4pOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAgIChSZW5kZXJTVkdUZXh0
UGF0aCk6CisKIDIwMTMtMDEtMTcgIEphZSBIeXVuIFBhcmsgIDxqYWUucGFya0Bjb21wYW55MTAw
Lm5ldD4KIAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcHVibGljIG1ldGhvZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6c3VwcG9ydHNBbHBoYSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMTUsNyArMzAxNSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1
cGRhdGVTY3JvbGxDb3JuZXIoKQogCiAgICAgaWYgKGNvcm5lclN0eWxlKSB7CiAgICAgICAgIGlm
ICghbV9zY3JvbGxDb3JuZXIpCi0gICAgICAgICAgICBtX3Njcm9sbENvcm5lciA9IG5ldyAocmVu
ZGVyZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlclNjcm9sbGJhclBhcnQocmVuZGVyZXItPmRvY3Vt
ZW50KCkpOworICAgICAgICAgICAgbV9zY3JvbGxDb3JuZXIgPSBSZW5kZXJTY3JvbGxiYXJQYXJ0
OjpjcmVhdGVBbm9ueW1vdXMocmVuZGVyZXItPmRvY3VtZW50KCkpOwogICAgICAgICBtX3Njcm9s
bENvcm5lci0+c2V0U3R5bGUoY29ybmVyU3R5bGUucmVsZWFzZSgpKTsKICAgICAgICAgaW52YWxp
ZGF0ZVNjcm9sbENvcm5lcihjb3JuZXJSZWN0KTsKICAgICB9IGVsc2UgaWYgKG1fc2Nyb2xsQ29y
bmVyKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJl
dmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsMTMgQEAgUmVuZGVyQmxvY2s6On5SZW5k
ZXJCbG9jaygpCiAgICAgICAgIHJlbW92ZUJsb2NrRnJvbURlc2NlbmRhbnRBbmRDb250YWluZXJN
YXBzKHRoaXMsIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAsIGdQb3NpdGlvbmVkQ29udGFpbmVy
TWFwKTsKIH0KIAorUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlbmRlckJsb2NrKiByZW5kZXJlciA9IG5ldyAoZG9j
dW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKDApOworICAgIHJlbmRlcmVyLT5zZXRE
b2N1bWVudEZvckFub255bW91cyhkb2N1bWVudCk7CisgICAgcmV0dXJuIHJlbmRlcmVyOworfQor
CiB2b2lkIFJlbmRlckJsb2NrOjp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIC8vIE1hcmsgYXMg
YmVpbmcgZGVzdHJveWVkIHRvIGF2b2lkIHRyb3VibGUgd2l0aCBtZXJnZXMgaW4gcmVtb3ZlQ2hp
bGQoKS4KQEAgLTE4NDcsNyArMTg1NCw3IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJC
bG9jazo6Y3JlYXQKICAgICBpZiAoIXJ1bkluLT5pc1JlbmRlckJsb2NrKCkpCiAgICAgICAgIG5l
d1J1bkluID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhydW5Jbi0+bm9kZSgpKTsK
ICAgICBlbHNlCi0gICAgICAgIG5ld1J1bkluID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJ
bmxpbmUocnVuSW4tPm5vZGUoKSk7CisgICAgICAgIG5ld1J1bkluID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBSZW5kZXJJbmxpbmUodG9FbGVtZW50KHJ1bkluLT5ub2RlKCkpKTsKIAogICAgIHJ1bklu
LT5ub2RlKCktPnNldFJlbmRlcmVyKG5ld1J1bkluKTsKICAgICBuZXdSdW5Jbi0+c2V0U3R5bGUo
cnVuSW4tPnN0eWxlKCkpOwpAQCAtNjM4Niw5ICs2MzkzLDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6
dXBkYXRlRmlyc3RMZXR0ZXJTdHlsZQogICAgICAgICAvLyBUaGUgZmlyc3QtbGV0dGVyIHJlbmRl
cmVyIG5lZWRzIHRvIGJlIHJlcGxhY2VkLiBDcmVhdGUgYSBuZXcgcmVuZGVyZXIgb2YgdGhlIHJp
Z2h0IHR5cGUuCiAgICAgICAgIFJlbmRlck9iamVjdCogbmV3Rmlyc3RMZXR0ZXI7CiAgICAgICAg
IGlmIChwc2V1ZG9TdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkKLSAgICAgICAgICAgIG5ld0Zp
cnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSk7
CisgICAgICAgICAgICBuZXdGaXJzdExldHRlciA9IFJlbmRlcklubGluZTo6Y3JlYXRlQW5vbnlt
b3VzKGRvY3VtZW50KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdGaXJzdExldHRl
ciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7CisgICAgICAg
ICAgICBuZXdGaXJzdExldHRlciA9IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMoZG9jdW1l
bnQoKSk7CiAgICAgICAgIG5ld0ZpcnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CiAK
ICAgICAgICAgLy8gTW92ZSB0aGUgZmlyc3QgbGV0dGVyIGludG8gdGhlIG5ldyByZW5kZXJlci4K
QEAgLTY0MzIsOSArNjQzOSw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVy
UmVuZGUKICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBzdHlsZUZvckZpcnN0TGV0dGVy
KGZpcnN0TGV0dGVyQmxvY2ssIGZpcnN0TGV0dGVyQ29udGFpbmVyKTsKICAgICBSZW5kZXJPYmpl
Y3QqIGZpcnN0TGV0dGVyID0gMDsKICAgICBpZiAocHNldWRvU3R5bGUtPmRpc3BsYXkoKSA9PSBJ
TkxJTkUpCi0gICAgICAgIGZpcnN0TGV0dGVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJJ
bmxpbmUoZG9jdW1lbnQoKSk7CisgICAgICAgIGZpcnN0TGV0dGVyID0gUmVuZGVySW5saW5lOjpj
cmVhdGVBbm9ueW1vdXMoZG9jdW1lbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBmaXJzdExldHRl
ciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7CisgICAgICAg
IGZpcnN0TGV0dGVyID0gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91cyhkb2N1bWVudCgpKTsK
ICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvU3R5bGUpOwogICAgIGZpcnN0TGV0dGVy
Q29udGFpbmVyLT5hZGRDaGlsZChmaXJzdExldHRlciwgY3VycmVudENoaWxkKTsKIApAQCAtNzY2
NywxMCArNzY3NCwxMCBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91
CiAgICAgRURpc3BsYXkgbmV3RGlzcGxheTsKICAgICBSZW5kZXJCbG9jayogbmV3Qm94ID0gMDsK
ICAgICBpZiAoZGlzcGxheSA9PSBCT1ggfHwgZGlzcGxheSA9PSBJTkxJTkVfQk9YKSB7Ci0gICAg
ICAgIG5ld0JveCA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3gocGFyZW50LT5kb2N1bWVudCgpIC8qIGFub255bW91cyBib3ggKi8pOworICAg
ICAgICBuZXdCb3ggPSBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNyZWF0ZUFub255bW91
cyhwYXJlbnQtPmRvY3VtZW50KCkpOwogICAgICAgICBuZXdEaXNwbGF5ID0gQk9YOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG5ld0JveCA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5k
ZXJCbG9jayhwYXJlbnQtPmRvY3VtZW50KCkgLyogYW5vbnltb3VzIGJveCAqLyk7CisgICAgICAg
IG5ld0JveCA9IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMocGFyZW50LT5kb2N1bWVudCgp
KTsKICAgICAgICAgbmV3RGlzcGxheSA9IEJMT0NLOwogICAgIH0KIApAQCAtNzY4NCw3ICs3Njkx
LDcgQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdQogICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIEJMT0NLKTsKICAgICBuZXdTdHlsZS0+aW5o
ZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKHBhcmVudC0+c3R5bGUoKSk7CiAKLSAgICBSZW5kZXJC
bG9jayogbmV3Qm94ID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKHBh
cmVudC0+ZG9jdW1lbnQoKSAvKiBhbm9ueW1vdXMgYm94ICovKTsKKyAgICBSZW5kZXJCbG9jayog
bmV3Qm94ID0gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkp
OwogICAgIG5ld0JveC0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKICAgICByZXR1cm4g
bmV3Qm94OwogfQpAQCAtNzY5NCw3ICs3NzAxLDcgQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2Nr
OjpjcmVhdGVBbm9ueW1vdQogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCks
IEJMT0NLKTsKICAgICBuZXdTdHlsZS0+c2V0Q29sdW1uU3BhbihDb2x1bW5TcGFuQWxsKTsKIAot
ICAgIFJlbmRlckJsb2NrKiBuZXdCb3ggPSBuZXcgKHBhcmVudC0+cmVuZGVyQXJlbmEoKSkgUmVu
ZGVyQmxvY2socGFyZW50LT5kb2N1bWVudCgpIC8qIGFub255bW91cyBib3ggKi8pOworICAgIFJl
bmRlckJsb2NrKiBuZXdCb3ggPSBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzKHBhcmVudC0+
ZG9jdW1lbnQoKSk7CiAgICAgbmV3Qm94LT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwog
ICAgIHJldHVybiBuZXdCb3g7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDggQEAgcHVibGljOgogICAg
IFJlbmRlckJsb2NrKENvbnRhaW5lck5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCbG9jaygp
OwogCisgICAgc3RhdGljIFJlbmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQqKTsK
KwogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVu
KCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgp
OyB9CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJl
bigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmxhc3RDaGlsZCgp
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE5LDggKzExOSw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1fb3JkaW5hbEl0
ZXJhdGlvbjsKIH07CiAKLVJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6UmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94KENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhu
b2RlKQorUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3goRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7CiAg
ICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3Qg
YmUgYmxvY2stbGV2ZWwKICAgICBtX3N0cmV0Y2hpbmdDaGlsZHJlbiA9IGZhbHNlOwpAQCAtMTMw
LDYgKzEzMCwxMyBAQCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6On5SZW5kZXJEZXByCiB7
CiB9CiAKK1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCogUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjpjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveCogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJB
cmVuYSgpKSBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goMCk7CisgICAgcmVuZGVyZXItPnNl
dERvY3VtZW50Rm9yQW5vbnltb3VzKGRvY3VtZW50KTsKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9
CisKIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdpbldpZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCkKIHsKICAgICAvLyBBIG1hcmdpbiBiYXNpY2FsbHkgaGFzIHRocmVlIHR5cGVzOiBmaXhlZCwg
cGVyY2VudGFnZSwgYW5kIGF1dG8gKHZhcmlhYmxlKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgJKHJldmlz
aW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTEgQEAgY2xhc3MgRmxl
eEJveEl0ZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggOiBwdWJs
aWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KEVsZW1l
bnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goKTsKIAorICAg
IHN0YXRpYyBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gqIGNyZWF0ZUFub255bW91cyhEb2N1
bWVudCopOworCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHJldmlzaW9uIDEzOTk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckRldGFpbHNNYXJrZXI6OlJlbmRlckRldGFp
bHNNYXJrZXIoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitS
ZW5kZXJEZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKEVsZW1lbnQqIGVsZW1lbnQp
CisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgJKHJldmlzaW9uIDEzOTk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBS
ZW5kZXJEZXRhaWxzTWFya2VyIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBS
ZW5kZXJEZXRhaWxzTWFya2VyKENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJEZXRhaWxzTWFy
a2VyKEVsZW1lbnQqKTsKIAogICAgIGVudW0gT3JpZW50YXRpb24geyBVcCwgRG93biwgTGVmdCwg
UmlnaHQgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRpYWxvZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEaWFsb2cuaAko
cmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRpYWxv
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIEhUTUxEaWFsb2dFbGVt
ZW50OwogCiBjbGFzcyBSZW5kZXJEaWFsb2cgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFJlbmRlckRpYWxvZyhDb250YWluZXJOb2RlKiBub2RlKQotICAgICAg
ICA6IFJlbmRlckJsb2NrKG5vZGUpCisgICAgZXhwbGljaXQgUmVuZGVyRGlhbG9nKEVsZW1lbnQq
IGVsZW1lbnQpCisgICAgICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKICAgICB7IH0KIAogICAg
IHZpcnR1YWwgflJlbmRlckRpYWxvZygpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotUmVuZGVyRmllbGRzZXQ6OlJlbmRlckZpZWxkc2V0KENvbnRhaW5lck5vZGUqIGVsZW1l
bnQpCitSZW5kZXJGaWVsZHNldDo6UmVuZGVyRmllbGRzZXQoRWxlbWVudCogZWxlbWVudCkKICAg
ICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJGaWVsZHNldCA6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVyRmllbGRzZXQoQ29u
dGFpbmVyTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlckZpZWxkc2V0KEVsZW1lbnQqKTsKIAog
ICAgIGVudW0gRmluZExlZ2VuZE9wdGlvbiB7IElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIElu
Y2x1ZGVGbG9hdGluZ09yT3V0T2ZGbG93IH07CiAgICAgUmVuZGVyQm94KiBmaW5kTGVnZW5kKEZp
bmRMZWdlbmRPcHRpb24gPSBJZ25vcmVGbG9hdGluZ09yT3V0T2ZGbG93KSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkocmV2
aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMyw4IEBAIHN0cnVjdCBSZW5kZXJG
bGV4aWJsZUJveDo6VmlvbGF0aW9uIHsKIH07CiAKIAotUmVuZGVyRmxleGlibGVCb3g6OlJlbmRl
ckZsZXhpYmxlQm94KENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2Rl
KQorUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQqIGVsZW1lbnQp
CisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQogICAgICwgbV9vcmRlckl0ZXJhdG9yKHRoaXMp
CiAgICAgLCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCShyZXZpc2lv
biAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJGbGV4aWJsZUJveChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyRmxleGli
bGVCb3goRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlckZsZXhpYmxlQm94KCk7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAJKHJldmlz
aW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKENvbnRhaW5lck5vZGUq
IG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2RlKQorLy8gRklYTUU6IFJlbmRlckZsb3dUaHJl
YWQgc2hvdWxkIGVpdGhlciBiZSBhbm9ueW1vdXMgb3IgYmUgYXNzb2NpYXRlZCB3aXRoIHNvbWUg
RWxlbWVudC4KKy8vIEl0IHNob3VsZCBub3QgYmUgY29uc3RydWN0ZWQgYXMgYSByZW5kZXJlciBm
b3IgdGhlIERvY3VtZW50LgorUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCkKICAgICAsIG1fcmVn
aW9uc0ludmFsaWRhdGVkKGZhbHNlKQogICAgICwgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2Fs
V2lkdGgodHJ1ZSkKICAgICAsIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbEhlaWdodCh0cnVl
KQpAQCAtNTUsOCArNTcsNyBAQCBSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKENv
bnRhCiAgICAgLCBtX2Rpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoZmFsc2UpCiAgICAg
LCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChmYWxzZSkKIHsKLSAgICBBU1NFUlQobm9kZS0+
ZG9jdW1lbnQoKS0+Y3NzUmVnaW9uc0VuYWJsZWQoKSk7Ci0gICAgc2V0SXNBbm9ueW1vdXMoZmFs
c2UpOworICAgIEFTU0VSVChkb2N1bWVudC0+Y3NzUmVnaW9uc0VuYWJsZWQoKSk7CiAgICAgc2V0
SW5SZW5kZXJGbG93VGhyZWFkKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlclJlZ2lvbio+IFJlbmRlCiAKIGNsYXNz
IFJlbmRlckZsb3dUaHJlYWQ6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyRmxvd1RocmVhZChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyRmxvd1RocmVhZChEb2N1
bWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlckZsb3dUaHJlYWQoKSB7IH07CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAJ
KHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxs
U2NyZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTAgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgogICAgIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcihS
ZW5kZXJGdWxsU2NyZWVuKiBvd25lcikgCi0gICAgICAgIDogUmVuZGVyQmxvY2sob3duZXItPmRv
Y3VtZW50KCkpCisgICAgICAgIDogUmVuZGVyQmxvY2soMCkKICAgICAgICAgLCBtX293bmVyKG93
bmVyKSAKLSAgICB7IAorICAgIHsKKyAgICAgICAgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMob3du
ZXItPmRvY3VtZW50KCkpOwogICAgIH0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTUs
MTMgKzU2LDIwIEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyOjp3aWxsQmUKICAg
ICBSZW5kZXJCbG9jazo6d2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKLVJlbmRlckZ1bGxTY3JlZW46
OlJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94KGRvY3VtZW50KQorUmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVyRnVsbFNj
cmVlbigpCisgICAgOiBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goMCkKICAgICAsIG1fcGxh
Y2Vob2xkZXIoMCkKLXsgCit7CiAgICAgc2V0UmVwbGFjZWQoZmFsc2UpOyAKIH0KIAorUmVuZGVy
RnVsbFNjcmVlbiogUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlQW5vbnltb3VzKERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBSZW5kZXJGdWxsU2NyZWVuKiByZW5kZXJlciA9IG5ldyAoZG9jdW1l
bnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW4oKTsKKyAgICByZW5kZXJlci0+c2V0
RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOworICAgIHJldHVybiByZW5kZXJlcjsKK30K
Kwogdm9pZCBSZW5kZXJGdWxsU2NyZWVuOjp3aWxsQmVEZXN0cm95ZWQoKQogewogICAgIGlmICht
X3BsYWNlaG9sZGVyKSB7CkBAIC0xMDcsNyArMTE1LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IGNyZWF0ZUZ1bAogCiBSZW5kZXJPYmplY3QqIFJlbmRlckZ1bGxTY3JlZW46Ondy
YXBSZW5kZXJlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyT2JqZWN0KiBwYXJlbnQsIERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVu
ZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRv
Y3VtZW50KTsKKyAgICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVyZXIgPSBSZW5k
ZXJGdWxsU2NyZWVuOjpjcmVhdGVBbm9ueW1vdXMoZG9jdW1lbnQpOwogICAgIGZ1bGxzY3JlZW5S
ZW5kZXJlci0+c2V0U3R5bGUoY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkpOwogICAgIGlmIChwYXJl
bnQgJiYgIXBhcmVudC0+aXNDaGlsZEFsbG93ZWQoZnVsbHNjcmVlblJlbmRlcmVyLCBmdWxsc2Ny
ZWVuUmVuZGVyZXItPnN0eWxlKCkpKSB7CiAgICAgICAgIGZ1bGxzY3JlZW5SZW5kZXJlci0+ZGVz
dHJveSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVl
bi5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnVsbFNjcmVlbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRnVsbFNjcmVlbiA6IHB1YmxpYyBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckZ1bGxTY3JlZW4oRG9jdW1lbnQq
KTsKKyAgICBzdGF0aWMgUmVuZGVyRnVsbFNjcmVlbiogY3JlYXRlQW5vbnltb3VzKERvY3VtZW50
Kik7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQogCkBAIC00Nyw4ICs0OCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVud3JhcFJlbmRlcmVyKCk7CiAKIHByaXZhdGU6CisgICAgUmVuZGVyRnVsbFNj
cmVlbigpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKLSAgICAKKwogcHJv
dGVjdGVkOgogICAgIFJlbmRlckJsb2NrKiBtX3BsYWNlaG9sZGVyOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsOCArNDUsOCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBtX21heEJyZWFkdGg7CiB9Owog
Ci1SZW5kZXJHcmlkOjpSZW5kZXJHcmlkKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5k
ZXJCbG9jayhub2RlKQorUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50KiBlbGVtZW50KQor
ICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKIHsKICAgICAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVu
IG11c3QgYmUgYmxvY2sgbGV2ZWwuCiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCShyZXZpc2lvbiAxMzk5NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBAIGNsYXNzIEdyaWRUcmFjazsKIAogY2xhc3MgUmVuZGVyR3JpZCA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyR3JpZChDb250YWluZXJOb2Rl
Kik7CisgICAgUmVuZGVyR3JpZChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyR3JpZCgp
OwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9u
IDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoQ29udGFp
bmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclJlcGxhY2VkKG5vZGUsIEludFNpemUoKSkKK1Jl
bmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyUmVw
bGFjZWQoZWxlbWVudCwgSW50U2l6ZSgpKQogICAgICwgbV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRl
eHQoZmFsc2UpCiAgICAgLCBtX2RpZEluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50
KGZhbHNlKQogICAgICwgbV9pc0dlbmVyYXRlZENvbnRlbnQoZmFsc2UpCkBAIC02MSw2ICs2MSwx
MyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoQ29udGFpbmVyTm9kZSogCiAgICAgdXBkYXRl
QWx0VGV4dCgpOwogfQogCitSZW5kZXJJbWFnZSogUmVuZGVySW1hZ2U6OmNyZWF0ZUFub255bW91
cyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChk
b2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVySW1hZ2UoMCk7CisgICAgaW1hZ2UtPnNldERv
Y3VtZW50Rm9yQW5vbnltb3VzKGRvY3VtZW50KTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKIFJl
bmRlckltYWdlOjp+UmVuZGVySW1hZ2UoKQogewogICAgIEFTU0VSVChtX2ltYWdlUmVzb3VyY2Up
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHJldmlzaW9uIDEz
OTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw5ICszNiwxMSBAQCBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIAogY2xhc3Mg
UmVuZGVySW1hZ2UgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJlbmRl
ckltYWdlKENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJJbWFnZShFbGVtZW50Kik7CiAgICAg
dmlydHVhbCB+UmVuZGVySW1hZ2UoKTsKIAorICAgIHN0YXRpYyBSZW5kZXJJbWFnZSogY3JlYXRl
QW5vbnltb3VzKERvY3VtZW50Kik7CisKICAgICB2b2lkIHNldEltYWdlUmVzb3VyY2UoUGFzc093
blB0cjxSZW5kZXJJbWFnZVJlc291cmNlPik7CiAKICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBp
bWFnZVJlc291cmNlKCkgeyByZXR1cm4gbV9pbWFnZVJlc291cmNlLmdldCgpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMTM5OTc4
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDEzICs0OSwyMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlcklubGluZTo6UmVuZGVySW5saW5lKENvbnRhaW5lck5vZGUq
IG5vZGUpCi0gICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChub2RlKQorUmVuZGVySW5saW5lOjpS
ZW5kZXJJbmxpbmUoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0
KGVsZW1lbnQpCiAgICAgLCBtX2Fsd2F5c0NyZWF0ZUxpbmVCb3hlcyhmYWxzZSkKIHsKICAgICBz
ZXRDaGlsZHJlbklubGluZSh0cnVlKTsKIH0KIAorUmVuZGVySW5saW5lKiBSZW5kZXJJbmxpbmU6
OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVuZGVySW5saW5l
KiByZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZSgw
KTsKKyAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOworICAg
IHJldHVybiByZW5kZXJlcjsKK30KKwogdm9pZCBSZW5kZXJJbmxpbmU6OndpbGxCZURlc3Ryb3ll
ZCgpCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMzEwLDcgKzMxNyw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGkKICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcG9zaXRpb25lZEFuY2VzdG9yID0gaW5GbG93UG9zaXRpb25lZElubGluZUFuY2VzdG9yKHRo
aXMpKQogICAgICAgICAgICAgbmV3U3R5bGUtPnNldFBvc2l0aW9uKHBvc2l0aW9uZWRBbmNlc3Rv
ci0+c3R5bGUoKS0+cG9zaXRpb24oKSk7CiAKLSAgICAgICAgUmVuZGVyQmxvY2sqIG5ld0JveCA9
IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSAvKiBhbm9ueW1vdXMg
Ym94ICovKTsKKyAgICAgICAgUmVuZGVyQmxvY2sqIG5ld0JveCA9IFJlbmRlckJsb2NrOjpjcmVh
dGVBbm9ueW1vdXMoZG9jdW1lbnQoKSk7CiAgICAgICAgIG5ld0JveC0+c2V0U3R5bGUobmV3U3R5
bGUucmVsZWFzZSgpKTsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9sZENvbnRpbnVh
dGlvbiA9IGNvbnRpbnVhdGlvbigpOwogICAgICAgICBzZXRDb250aW51YXRpb24obmV3Qm94KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDEz
OTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDE3IEBAIGNsYXNzIFBvc2l0aW9uOwogCiBjbGFzcyBSZW5k
ZXJJbmxpbmUgOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIGV4
cGxpY2l0IFJlbmRlcklubGluZShDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVy
SW5saW5lKEVsZW1lbnQqKTsKKworICAgIHN0YXRpYyBSZW5kZXJJbmxpbmUqIGNyZWF0ZUFub255
bW91cyhEb2N1bWVudCopOwogCiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qg
eyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJl
bigpLT5maXJzdENoaWxkKCk7IH0KICAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0
IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRy
ZW4oKS0+bGFzdENoaWxkKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAKKyAgICBF
bGVtZW50KiBub2RlKCkgY29uc3QgeyByZXR1cm4gdG9FbGVtZW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpub2RlKCkpOyB9CisKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Ub3AoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1Nyw3
ICs1NTU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsQ29ybmVyU3R5bAogICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gY29ybmVyID0gcmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlw
KCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShTQ1JPTExCQVJfQ09S
TkVSLCBhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkgOiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPigw
KTsKICAgICBpZiAoY29ybmVyKSB7CiAgICAgICAgIGlmICghbV9zY3JvbGxDb3JuZXIpIHsKLSAg
ICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyID0gbmV3IChyZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgp
KSBSZW5kZXJTY3JvbGxiYXJQYXJ0KHJlbmRlcmVyKCktPmRvY3VtZW50KCkpOworICAgICAgICAg
ICAgbV9zY3JvbGxDb3JuZXIgPSBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpjcmVhdGVBbm9ueW1vdXMo
cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBtX3Njcm9sbENvcm5lci0+c2V0
UGFyZW50KHJlbmRlcmVyKCkpOwogICAgICAgICB9CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5z
ZXRTdHlsZShjb3JuZXIucmVsZWFzZSgpKTsKQEAgLTU1NzMsNyArNTU3Myw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHlsZSgpCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBy
ZXNpemVyID0gcmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+
Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShSRVNJWkVSLCBhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkg
OiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPigwKTsKICAgICBpZiAocmVzaXplcikgewogICAgICAg
ICBpZiAoIW1fcmVzaXplcikgewotICAgICAgICAgICAgbV9yZXNpemVyID0gbmV3IChyZW5kZXJl
cigpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJTY3JvbGxiYXJQYXJ0KHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCkpOworICAgICAgICAgICAgbV9yZXNpemVyID0gUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y3Jl
YXRlQW5vbnltb3VzKHJlbmRlcmVyKCktPmRvY3VtZW50KCkpOwogICAgICAgICAgICAgbV9yZXNp
emVyLT5zZXRQYXJlbnQocmVuZGVyZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9yZXNpemVy
LT5zZXRTdHlsZShyZXNpemVyLnJlbGVhc2UoKSk7CkBAIC01NTkxLDcgKzU1OTEsNyBAQCBSZW5k
ZXJMYXllciogUmVuZGVyTGF5ZXI6OnJlZmxlY3Rpb25MYXllCiB2b2lkIFJlbmRlckxheWVyOjpj
cmVhdGVSZWZsZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fcmVmbGVjdGlvbik7Ci0gICAgbV9y
ZWZsZWN0aW9uID0gbmV3IChyZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJSZXBsaWNh
KHJlbmRlcmVyKCktPmRvY3VtZW50KCkpOworICAgIG1fcmVmbGVjdGlvbiA9IFJlbmRlclJlcGxp
Y2E6OmNyZWF0ZUFub255bW91cyhyZW5kZXJlcigpLT5kb2N1bWVudCgpKTsKICAgICBtX3JlZmxl
Y3Rpb24tPnNldFBhcmVudChyZW5kZXJlcigpKTsgLy8gV2UgY3JlYXRlIGEgMS13YXkgY29ubmVj
dGlvbi4KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyTGlzdEl0
ZW06OlJlbmRlckxpc3RJdGVtKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9j
ayhub2RlKQorUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxpc3RJdGVtKEVsZW1lbnQqIGVsZW1lbnQp
CisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQogICAgICwgbV9tYXJrZXIoMCkKICAgICAsIG1f
aGFzRXhwbGljaXRWYWx1ZShmYWxzZSkKICAgICAsIG1faXNWYWx1ZVVwVG9EYXRlKGZhbHNlKQpA
QCAtNjAsNyArNjAsNyBAQCB2b2lkIFJlbmRlckxpc3RJdGVtOjpzdHlsZURpZENoYW5nZShTdHls
CiAgICAgICAgIC8vIHVwIChlLmcuLCBpbiBzb21lIGRlZXBseSBuZXN0ZWQgbGluZSBib3gpLiBT
ZWUgQ1NTMyBzcGVjLgogICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7IAog
ICAgICAgICBpZiAoIW1fbWFya2VyKQotICAgICAgICAgICAgbV9tYXJrZXIgPSBuZXcgKHJlbmRl
ckFyZW5hKCkpIFJlbmRlckxpc3RNYXJrZXIodGhpcyk7CisgICAgICAgICAgICBtX21hcmtlciA9
IFJlbmRlckxpc3RNYXJrZXI6OmNyZWF0ZUFub255bW91cyh0aGlzKTsKICAgICAgICAgbV9tYXJr
ZXItPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgfSBlbHNlIGlmIChtX21hcmtl
cikgewogICAgICAgICBtX21hcmtlci0+ZGVzdHJveSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBAIGNsYXNzIFJlbmRlckxpc3RNYXJrZXI7CiAKIGNsYXNzIFJlbmRlckxpc3RJdGVt
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJMaXN0
SXRlbShDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyTGlzdEl0ZW0oRWxlbWVu
dCopOwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBpZiAoIW1faXNWYWx1ZVVwVG9EYXRlKSB1
cGRhdGVWYWx1ZU5vdygpOyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZvaWQgdXBkYXRlVmFsdWUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgU3RyaW5n
IGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5bGVUeXBlIHR5cAogfQogCiBSZW5kZXJMaXN0TWFya2Vy
OjpSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtKiBpdGVtKQotICAgIDogUmVuZGVyQm94
KGl0ZW0tPmRvY3VtZW50KCkpCisgICAgOiBSZW5kZXJCb3goMCkKICAgICAsIG1fbGlzdEl0ZW0o
aXRlbSkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCkBAIC0xMDY5LDYg
KzEwNjksMTQgQEAgUmVuZGVyTGlzdE1hcmtlcjo6flJlbmRlckxpc3RNYXJrZXIoKQogICAgICAg
ICBtX2ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKK1JlbmRlckxpc3RNYXJrZXIqIFJl
bmRlckxpc3RNYXJrZXI6OmNyZWF0ZUFub255bW91cyhSZW5kZXJMaXN0SXRlbSogaXRlbSkKK3sK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpdGVtLT5kb2N1bWVudCgpOworICAgIFJlbmRlckxp
c3RNYXJrZXIqIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVy
TGlzdE1hcmtlcihpdGVtKTsKKyAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMo
ZG9jdW1lbnQpOworICAgIHJldHVybiByZW5kZXJlcjsKK30KKwogdm9pZCBSZW5kZXJMaXN0TWFy
a2VyOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBuZXdTdHlsZSkKIHsKICAgICBpZiAoc3R5bGUoKSAmJiAobmV3U3R5bGUtPmxpc3RTdHls
ZVBvc2l0aW9uKCkgIT0gc3R5bGUoKS0+bGlzdFN0eWxlUG9zaXRpb24oKSB8fCBuZXdTdHlsZS0+
bGlzdFN0eWxlVHlwZSgpICE9IHN0eWxlKCktPmxpc3RTdHlsZVR5cGUoKSkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHJldmlzaW9uIDEzOTk3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDggQEAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0KEVMaXN0U3R5
bGVUeXBlLCBpbgogLy8gVGhlIFJlbmRlckxpc3RNYXJrZXIgYWx3YXlzIGhhcyB0byBiZSBhIGNo
aWxkIG9mIGEgUmVuZGVyTGlzdEl0ZW0uCiBjbGFzcyBSZW5kZXJMaXN0TWFya2VyIDogcHVibGlj
IFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRl
bSopOworICAgIHN0YXRpYyBSZW5kZXJMaXN0TWFya2VyKiBjcmVhdGVBbm9ueW1vdXMoUmVuZGVy
TGlzdEl0ZW0qKTsKKwogICAgIHZpcnR1YWwgflJlbmRlckxpc3RNYXJrZXIoKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQpAQCAtNDgsNiArNDks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVNYXJnaW5zQW5kQ29udGVudCgpOwogCiBwcml2
YXRlOgorICAgIFJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0qKTsKKwogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJMaXN0TWFy
a2VyIjsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXIoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitS
ZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXIoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7
CiB9CiAKQEAgLTU5LDggKzU5LDggQEAgdm9pZCBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRh
aW5lcjo6bAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlbmRlck1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5OjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheShDb250YWlu
ZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KG5vZGUpCitS
ZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheTo6UmVuZGVyTWVkaWFDb250cm9sVGltZURpc3Bs
YXkoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChl
bGVtZW50KQogewogfQogCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgUmVuZGVyTWVkaWFDb250cm9s
VGltZURpc3BsYXk6OmxheW8KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotUmVuZGVyVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChD
b250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlclRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVy
Q29udGFpbmVyIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRp
YVZvbHVtZVNsaWRlckNvbnRhaW5lcihDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyTWVkaWFW
b2x1bWVTbGlkZXJDb250YWluZXIoRWxlbWVudCopOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgUmVuZGVy
TWVkaWFDb250cm9sVGltZURpc3BsYXkgOiBwdWJsaWMgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheShDb250YWlu
ZXJOb2RlKik7CisgICAgUmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkoRWxlbWVudCopOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKQEAgLTYwLDcgKzYwLDcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCA6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dChFbGVtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJs
b2NrLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTXVs
dGlDb2x1bW5CbG9jazo6UmVuZGVyTXVsdGlDb2x1bW5CbG9jayhDb250YWluZXJOb2RlKiBub2Rl
KQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlck11bHRpQ29sdW1uQmxvY2s6OlJlbmRl
ck11bHRpQ29sdW1uQmxvY2soRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVs
ZW1lbnQpCiAgICAgLCBtX2Zsb3dUaHJlYWQoMCkKICAgICAsIG1fY29sdW1uQ291bnQoMSkKICAg
ICAsIG1fY29sdW1uV2lkdGgoMCkKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFJlbmRlck11bHRp
Q29sdW1uQmxvY2s6OmVuc3VyZUNvbHVtCiAKICAgICBSZW5kZXJNdWx0aUNvbHVtblNldCogY29s
dW1uU2V0ID0gZmlyc3RDaGlsZCgpLT5pc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgPyB0b1JlbmRl
ck11bHRpQ29sdW1uU2V0KGZpcnN0Q2hpbGQoKSkgOiAwOwogICAgIGlmICghY29sdW1uU2V0KSB7
Ci0gICAgICAgIGNvbHVtblNldCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTXVsdGlDb2x1
bW5TZXQoZG9jdW1lbnQoKSwgZmxvd1RocmVhZCgpKTsKKyAgICAgICAgY29sdW1uU2V0ID0gUmVu
ZGVyTXVsdGlDb2x1bW5TZXQ6OmNyZWF0ZUFub255bW91cyhmbG93VGhyZWFkKCkpOwogICAgICAg
ICBjb2x1bW5TZXQtPnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKSk7CiAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGls
ZChjb2x1bW5TZXQsIGZpcnN0Q2hpbGQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5oCShyZXZpc2lvbiAxMzk5
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFJlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZDsKIAogY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5CbG9jayA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5CbG9jayhDb250YWluZXJO
b2RlKik7Ci0gICAgCisgICAgUmVuZGVyTXVsdGlDb2x1bW5CbG9jayhFbGVtZW50Kik7CisKICAg
ICBMYXlvdXRVbml0IGNvbHVtbkhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uSGVpZ2h0
OyB9CiAgICAgdm9pZCBzZXRDb2x1bW5IZWlnaHQoTGF5b3V0VW5pdCBjb2x1bW5IZWlnaHQpIHsg
bV9jb2x1bW5IZWlnaHQgPSBjb2x1bW5IZWlnaHQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAJ
KHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRl
ckZsb3dUaHJlYWQobm9kZSkKK1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6UmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFJlbmRlckZsb3dU
aHJlYWQoZG9jdW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgJKHJldmlzaW9uIDEzOTk3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCA6IHB1YmxpYyBSZW5kZXJGbG93
VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoQ29udGFp
bmVyTm9kZSopOworICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChEb2N1bWVudCopOwog
ICAgIH5SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAko
cmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCB1c2luZyBzdGQ6
Om1heDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNdWx0aUNvbHVtblNldDo6UmVu
ZGVyTXVsdGlDb2x1bW5TZXQoQ29udGFpbmVyTm9kZSogbm9kZSwgUmVuZGVyRmxvd1RocmVhZCog
Zmxvd1RocmVhZCkKLSAgICA6IFJlbmRlclJlZ2lvblNldChub2RlLCBmbG93VGhyZWFkKQorUmVu
ZGVyTXVsdGlDb2x1bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQpCisgICAgOiBSZW5kZXJSZWdpb25TZXQoMCwgZmxvd1RocmVhZCkKICAgICAs
IG1fY29tcHV0ZWRDb2x1bW5Db3VudCgxKQogICAgICwgbV9jb21wdXRlZENvbHVtbldpZHRoKDAp
CiAgICAgLCBtX2NvbXB1dGVkQ29sdW1uSGVpZ2h0KDApCkBAIC00OSw2ICs0OSwxNCBAQCBSZW5k
ZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TCiB7CiB9CiAKK1JlbmRlck11bHRp
Q29sdW1uU2V0KiBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y3JlYXRlQW5vbnltb3VzKFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dUaHJlYWQpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZmxvd1Ro
cmVhZC0+ZG9jdW1lbnQoKTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNldCogcmVuZGVyZXIgPSBu
ZXcgKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJNdWx0aUNvbHVtblNldChmbG93VGhy
ZWFkKTsKKyAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOwor
ICAgIHJldHVybiByZW5kZXJlcjsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNl
dDo6cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0CiB7CiAg
ICAgTGF5b3V0VW5pdCBwb3J0aW9uTG9naWNhbFRvcCA9IChpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogZmxvd1RocmVhZFBvcnRpb25SZWN0
KCkueCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBjb21lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNwYW4u
CiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtblNldCA6IHB1YmxpYyBSZW5kZXJSZWdpb25TZXQgewog
cHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KENvbnRhaW5lck5vZGUqLCBSZW5kZXJG
bG93VGhyZWFkKik7Ci0gICAgCisgICAgc3RhdGljIFJlbmRlck11bHRpQ29sdW1uU2V0KiBjcmVh
dGVBbm9ueW1vdXMoUmVuZGVyRmxvd1RocmVhZCopOworCiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTXVsdGlDb2x1bW5TZXQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICB1bnNpZ25lZCBjb21wdXRlZENvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRl
ZENvbHVtbkNvdW50OyB9CkBAIC04OCw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJl
cXVpcmVzQmFsYW5jaW5nKGJvb2wgYmFsYW5jaW5nKSB7IG1fcmVxdWlyZXNCYWxhbmNpbmcgPSBi
YWxhbmNpbmc7IH0KIAogcHJpdmF0ZToKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNldChSZW5kZXJG
bG93VGhyZWFkKik7CisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyYpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw4ICs0MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoQ29udGFpbmVyTm9kZSogbm9kZSwg
UGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5hbWVkRmxvdykKLSAgICA6IFJlbmRlckZsb3dU
aHJlYWQobm9kZSkKK1JlbmRlck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
KERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5hbWVkRmxv
dykKKyAgICA6IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQpCiAgICAgLCBtX25hbWVkRmxvdyhu
YW1lZEZsb3cpCiAgICAgLCBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIodGhpcywgJlJl
bmRlck5hbWVkRmxvd1RocmVhZDo6cmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lckZpcmVkKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd1RocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSo+IE5hbWVkRmxvd0NvbnQKIAogY2xhc3MgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQgewogcHVibGljOgotICAgIFJl
bmRlck5hbWVkRmxvd1RocmVhZChDb250YWluZXJOb2RlKiwgUGFzc1JlZlB0cjxXZWJLaXROYW1l
ZEZsb3c+KTsKKyAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1lbnQqLCBQYXNzUmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4pOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd1RocmVhZCgp
OwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEz
OTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDYgQEAgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3Qo
Tm9kZSogbm9kZSkKICNpZm5kZWYgTkRFQlVHCiAgICAgcmVuZGVyT2JqZWN0Q291bnRlci5pbmNy
ZW1lbnQoKTsKICNlbmRpZgotICAgIEFTU0VSVChub2RlKTsKIH0KIAogUmVuZGVyT2JqZWN0Ojp+
UmVuZGVyT2JqZWN0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDk4LDcgKzQ5OCw2IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgYm9vbCBpc0Fub255bW91cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlz
QW5vbnltb3VzKCk7IH0KLSAgICB2b2lkIHNldElzQW5vbnltb3VzKGJvb2wgYikgeyBtX2JpdGZp
ZWxkcy5zZXRJc0Fub255bW91cyhiKTsgfQogICAgIGJvb2wgaXNBbm9ueW1vdXNCbG9jaygpIGNv
bnN0CiAgICAgewogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGtlcHQgaW4gc3luYyB3aXRo
IGFub255bW91cyBibG9jayBjcmVhdGlvbiBjb25kaXRpb25zIGluCkBAIC05NzksNiArOTc4LDgg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCk7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpOwogCisgICAgdm9pZCBzZXREb2N1
bWVudEZvckFub255bW91cyhEb2N1bWVudCogZG9jdW1lbnQpIHsgQVNTRVJUKGlzQW5vbnltb3Vz
KCkpOyBtX25vZGUgPSBkb2N1bWVudDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRnJv
bVJlbmRlckZsb3dUaHJlYWQoKTsKICAgICB2b2lkIHJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFk
UmVjdXJzaXZlKFJlbmRlckZsb3dUaHJlYWQqKTsKQEAgLTEwMzEsNyArMTAzMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAsIG1fcHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKQog
ICAgICAgICAgICAgLCBtX2Zsb2F0aW5nKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BhaW50QmFj
a2dyb3VuZChmYWxzZSkKLSAgICAgICAgICAgICwgbV9pc0Fub255bW91cyhub2RlID09IG5vZGUt
PmRvY3VtZW50KCkpCisgICAgICAgICAgICAsIG1faXNBbm9ueW1vdXMoIW5vZGUpCiAgICAgICAg
ICAgICAsIG1faXNUZXh0KGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzQm94KGZhbHNlKQogICAg
ICAgICAgICAgLCBtX2lzSW5saW5lKHRydWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihD
b250YWluZXJOb2RlKiBub2RlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQotICAgIDog
UmVuZGVyUmVwbGFjZWQobm9kZSwgSW50U2l6ZSgpKQorUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdp
b24oRWxlbWVudCogZWxlbWVudCwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKKyAgICA6
IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIEludFNpemUoKSkKICAgICAsIG1fZmxvd1RocmVhZChm
bG93VGhyZWFkKQogICAgICwgbV9wYXJlbnROYW1lZEZsb3dUaHJlYWQoMCkKICAgICAsIG1faXNW
YWxpZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgJ
KHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ7CiAKIGNsYXNzIFJlbmRlclJlZ2lvbiA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVyUmVnaW9uKENvbnRhaW5lck5vZGUqLCBSZW5k
ZXJGbG93VGhyZWFkKik7CisgICAgZXhwbGljaXQgUmVuZGVyUmVnaW9uKEVsZW1lbnQqLCBSZW5k
ZXJGbG93VGhyZWFkKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJSZWdpb24oKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb25TZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb25TZXQuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvblNldDo6UmVuZGVyUmVn
aW9uU2V0KENvbnRhaW5lck5vZGUqIG5vZGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQp
Ci0gICAgOiBSZW5kZXJSZWdpb24obm9kZSwgZmxvd1RocmVhZCkKK1JlbmRlclJlZ2lvblNldDo6
UmVuZGVyUmVnaW9uU2V0KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQpCisgICAgOiBSZW5kZXJSZWdpb24oZWxlbWVudCwgZmxvd1RocmVhZCkKIHsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAkocmV2aXNp
b24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFJlbmRlckZsb3dUaHJlYWQ7
CiAKIGNsYXNzIFJlbmRlclJlZ2lvblNldCA6IHB1YmxpYyBSZW5kZXJSZWdpb24gewogcHVibGlj
OgotICAgIFJlbmRlclJlZ2lvblNldChDb250YWluZXJOb2RlKiwgUmVuZGVyRmxvd1RocmVhZCop
OworICAgIFJlbmRlclJlZ2lvblNldChFbGVtZW50KiwgUmVuZGVyRmxvd1RocmVhZCopOwogICAg
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbEZsb3dUaHJlYWQoKSBPVkVSUklE
RTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAko
cmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNvbnN0IGludCBjRGVmYXVsdFdpZHRoID0gMzAwOwogY29uc3QgaW50IGNEZWZhdWx0
SGVpZ2h0ID0gMTUwOwogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoQ29udGFpbmVy
Tm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJveChub2RlKQorUmVuZGVyUmVwbGFjZWQ6OlJlbmRl
clJlcGxhY2VkKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJCb3goZWxlbWVudCkKICAg
ICAsIG1faW50cmluc2ljU2l6ZShjRGVmYXVsdFdpZHRoLCBjRGVmYXVsdEhlaWdodCkKIHsKICAg
ICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAotUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2Vk
KENvbnRhaW5lck5vZGUqIG5vZGUsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCi0g
ICAgOiBSZW5kZXJCb3gobm9kZSkKK1JlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQorICAgIDogUmVu
ZGVyQm94KGVsZW1lbnQpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoaW50cmluc2ljU2l6ZSkKIHsK
ICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJlcGxhY2VkIDogcHVibGljIFJlbmRl
ckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUmVwbGFjZWQoQ29udGFpbmVyTm9kZSopOwotICAg
IFJlbmRlclJlcGxhY2VkKENvbnRhaW5lck5vZGUqLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5z
aWNTaXplKTsKKyAgICBSZW5kZXJSZXBsYWNlZChFbGVtZW50Kik7CisgICAgUmVuZGVyUmVwbGFj
ZWQoRWxlbWVudCosIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpOwogICAgIHZpcnR1
YWwgflJlbmRlclJlcGxhY2VkKCk7CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJl
cGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgID0gQ29tcHV0ZUFjdHVh
bCkgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGljYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxpY2EuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGljYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBsaWNhKENvbnRh
aW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCb3gobm9kZSkKK1JlbmRlclJlcGxpY2E6OlJl
bmRlclJlcGxpY2EoKQorICAgIDogUmVuZGVyQm94KDApCiB7CiAgICAgLy8gVGhpcyBpcyBhIGhh
Y2suIFJlcGxpY2FzIGFyZSBzeW50aGV0aWMsIGFuZCBkb24ndCBwaWNrIHVwIHRoZSBhdHRyaWJ1
dGVzIG9mIHRoZQogICAgIC8vIHJlbmRlcmVycyBiZWluZyByZXBsaWNhdGVkLCBzbyB0aGV5IGFs
d2F5cyByZXBvcnQgdGhhdCB0aGV5IGFyZSBpbmxpbmUsIG5vbi1yZXBsYWNlZC4KQEAgLTQzLDYg
KzQzLDEzIEBAIFJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EoQ29udGFpbmVyTm8KICAgICBz
ZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAorUmVuZGVyUmVwbGljYSogUmVuZGVyUmVwbGljYTo6Y3Jl
YXRlQW5vbnltb3VzKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZW5kZXJSZXBsaWNhKiBy
ZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlclJlcGxpY2EoKTsK
KyAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOworICAgIHJl
dHVybiByZW5kZXJlcjsKK30KKwogUmVuZGVyUmVwbGljYTo6flJlbmRlclJlcGxpY2EoKQogewog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCShyZXZpc2lv
biAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUmVuZGVyUmVwbGljYSA6IHB1YmxpYyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRl
clJlcGxpY2EoQ29udGFpbmVyTm9kZSopOworICAgIHN0YXRpYyBSZW5kZXJSZXBsaWNhKiBjcmVh
dGVBbm9ueW1vdXMoRG9jdW1lbnQqKTsKKwogICAgIHZpcnR1YWwgflJlbmRlclJlcGxpY2EoKTsK
IAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
ZW5kZXJSZXBsaWNhIjsgfQpAQCAtNDcsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKIHByaXZhdGU6Cisg
ICAgUmVuZGVyUmVwbGljYSgpOworCiAgICAgdmlydHVhbCBib29sIGlzUmVwbGljYSgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1Ynku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNw
cAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVu
ZGVyQmxvY2sqIHJ1YnlBZnRlckJsb2MKIHN0YXRpYyBSZW5kZXJCbG9jayogY3JlYXRlQW5vbnlt
b3VzUnVieUlubGluZUJsb2NrKFJlbmRlck9iamVjdCogcnVieSkKIHsKICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkocnVieS0+c3R5bGUoKSwgSU5MSU5FX0JMT0NLKTsKLSAgICBSZW5kZXJCbG9jayog
bmV3QmxvY2sgPSBuZXcgKHJ1YnktPnJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKHJ1YnktPmRv
Y3VtZW50KCkgLyogYW5vbnltb3VzIGJveCAqLyk7CisgICAgUmVuZGVyQmxvY2sqIG5ld0Jsb2Nr
ID0gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91cyhydWJ5LT5kb2N1bWVudCgpKTsKICAgICBu
ZXdCbG9jay0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKICAgICByZXR1cm4gbmV3Qmxv
Y2s7CiB9CkBAIC0xMDksOCArMTA5LDggQEAgc3RhdGljIGlubGluZSBSZW5kZXJSdWJ5UnVuKiBm
aW5kUnVieVJ1bgogCiAvLz09PSBydWJ5IGFzIGlubGluZSBvYmplY3QgPT09CiAKLVJlbmRlclJ1
YnlBc0lubGluZTo6UmVuZGVyUnVieUFzSW5saW5lKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAg
OiBSZW5kZXJJbmxpbmUobm9kZSkKK1JlbmRlclJ1YnlBc0lubGluZTo6UmVuZGVyUnVieUFzSW5s
aW5lKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCkKIHsKIH0K
IApAQCAtMjEzLDExICsyMTMsMTAgQEAgdm9pZCBSZW5kZXJSdWJ5QXNJbmxpbmU6OnJlbW92ZUNo
aWxkKFJlbgogICAgIHJ1bi0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogfQogCi0KIC8vPT09IHJ1Ynkg
YXMgYmxvY2sgb2JqZWN0ID09PQogCi1SZW5kZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFzQmxv
Y2soQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitSZW5kZXJS
dWJ5QXNCbG9jazo6UmVuZGVyUnVieUFzQmxvY2soRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJl
bmRlckJsb2NrKGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnkuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyA8cnVieT4gd2hlbiB1c2VkIGFzICdkaXNwbGF5OmlubGluZScKIGNsYXNz
IFJlbmRlclJ1YnlBc0lubGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAg
IFJlbmRlclJ1YnlBc0lubGluZShDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyUnVieUFzSW5s
aW5lKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNJbmxpbmUoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gMCk7CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAvLyA8cnVieT4g
d2hlbiB1c2VkIGFzICdkaXNwbGF5OmJsb2NrJyBvciAnZGlzcGxheTppbmxpbmUtYmxvY2snCiBj
bGFzcyBSZW5kZXJSdWJ5QXNCbG9jayA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyUnVieUFzQmxvY2soQ29udGFpbmVyTm9kZSopOworICAgIFJlbmRlclJ1YnlBc0Js
b2NrKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNCbG9jaygpOwogCiAgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnlCYXNlLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnlCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJ1YnlC
YXNlOjpSZW5kZXJSdWJ5QmFzZShDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxv
Y2sobm9kZSkKK1JlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZSgpCisgICAgOiBSZW5kZXJC
bG9jaygwKQogewogICAgIHNldElubGluZShmYWxzZSk7CiB9CkBAIC00OCw2ICs0OCwxMyBAQCBS
ZW5kZXJSdWJ5QmFzZTo6flJlbmRlclJ1YnlCYXNlKCkKIHsKIH0KIAorUmVuZGVyUnVieUJhc2Uq
IFJlbmRlclJ1YnlCYXNlOjpjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIFJlbmRlclJ1YnlCYXNlKiByZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFyZW5h
KCkpIFJlbmRlclJ1YnlCYXNlKCk7CisgICAgcmVuZGVyZXItPnNldERvY3VtZW50Rm9yQW5vbnlt
b3VzKGRvY3VtZW50KTsKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9CisKIGJvb2wgUmVuZGVyUnVi
eUJhc2U6OmlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlclN0eWxlKikg
Y29uc3QKIHsKICAgICByZXR1cm4gY2hpbGQtPmlzSW5saW5lKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDggKzM5LDkgQEAgY2xhc3MgUmVuZGVyUnVieVJ1bjsKIAogY2xhc3MgUmVuZGVyUnVieUJh
c2UgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclJ1YnlCYXNlKENv
bnRhaW5lck5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QmFzZSgpOworICAgIAorICAg
IHN0YXRpYyBSZW5kZXJSdWJ5QmFzZSogY3JlYXRlQW5vbnltb3VzKERvY3VtZW50Kik7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
UnVieUJhc2UgKGFub255bW91cykiOyB9CiAKQEAgLTQ5LDYgKzUwLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSop
IGNvbnN0OwogCiBwcml2YXRlOgorICAgIFJlbmRlclJ1YnlCYXNlKCk7CisKICAgICB2aXJ0dWFs
IEVUZXh0QWxpZ24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMo
aW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQm
IGxvZ2ljYWxXaWR0aCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5UnVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJ1
YnlSdW46OlJlbmRlclJ1YnlSdW4oQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJs
b2NrKG5vZGUpCitSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKCkKKyAgICA6IFJlbmRlckJs
b2NrKDApCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiAgICAgc2V0SW5saW5lKHRydWUpOwpA
QCAtMTk5LDE3ICsxOTksMTggQEAgdm9pZCBSZW5kZXJSdWJ5UnVuOjpyZW1vdmVDaGlsZChSZW5k
ZXJPYgogCiBSZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJhc2UoKSBj
b25zdAogewotICAgIFJlbmRlclJ1YnlCYXNlKiByYiA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyUnVieUJhc2UoZG9jdW1lbnQoKSAvKiBhbm9ueW1vdXMgKi8pOworICAgIFJlbmRlclJ1YnlC
YXNlKiByZW5kZXJlciA9IFJlbmRlclJ1YnlCYXNlOjpjcmVhdGVBbm9ueW1vdXMoZG9jdW1lbnQo
KSk7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIEJMT0NLKTsKICAgICBuZXdTdHls
ZS0+c2V0VGV4dEFsaWduKENFTlRFUik7IC8vIEZJWE1FOiB1c2UgV0VCS0lUX0NFTlRFUj8KLSAg
ICByYi0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gcmI7CisgICAg
cmVuZGVyZXItPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHJlbmRl
cmVyOwogfQogCiBSZW5kZXJSdWJ5UnVuKiBSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhdGVSdWJ5
UnVuKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50UnVieSkKIHsKICAgICBBU1NFUlQocGFyZW50
UnVieSAmJiBwYXJlbnRSdWJ5LT5pc1J1YnkoKSk7Ci0gICAgUmVuZGVyUnVieVJ1biogcnIgPSBu
ZXcgKHBhcmVudFJ1YnktPnJlbmRlckFyZW5hKCkpIFJlbmRlclJ1YnlSdW4ocGFyZW50UnVieS0+
ZG9jdW1lbnQoKSAvKiBhbm9ueW1vdXMgKi8pOworICAgIFJlbmRlclJ1YnlSdW4qIHJyID0gbmV3
IChwYXJlbnRSdWJ5LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJSdWJ5UnVuKCk7CisgICAgcnItPnNl
dERvY3VtZW50Rm9yQW5vbnltb3VzKHBhcmVudFJ1YnktPmRvY3VtZW50KCkpOwogICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShwYXJlbnRSdWJ5LT5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spOwogICAgIHJy
LT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBycjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAkocmV2aXNpb24gMTM5OTc4KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBSZW5kZXJSdWJ5VGV4dDsKIAogY2xhc3MgUmVuZGVy
UnVieVJ1biA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieVJ1
bihDb250YWluZXJOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVJ1bigpOwogCiAgICAg
Ym9vbCBoYXNSdWJ5VGV4dCgpIGNvbnN0OwpAQCAtNzEsNiArNzAsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgUmVuZGVyUnVieUJhc2UqIGNyZWF0ZVJ1YnlCYXNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Cisg
ICAgUmVuZGVyUnVieVJ1bigpOworCiAgICAgdmlydHVhbCBib29sIGlzUnVieVJ1bigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCB7IHJldHVybiAiUmVuZGVyUnVieVJ1biAoYW5vbnltb3VzKSI7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAJKHJldmlz
aW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJSdWJ5VGV4dDo6UmVuZGVyUnVieVRleHQo
Q29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitSZW5kZXJSdWJ5
VGV4dDo6UmVuZGVyUnVieVRleHQoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2Nr
KGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclJ1YnlUZXh0IDogcHVibGljIFJlbmRlckJsb2Nr
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5VGV4dChDb250YWluZXJOb2RlKik7CisgICAgUmVu
ZGVyUnVieVRleHQoRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlUZXh0KCk7CiAK
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVu
ZGVyUnVieVRleHQiOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBA
QCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFyCiAgICAgCiAgICAgUmVu
ZGVyU2Nyb2xsYmFyUGFydCogcGFydFJlbmRlcmVyID0gbV9wYXJ0cy5nZXQocGFydFR5cGUpOwog
ICAgIGlmICghcGFydFJlbmRlcmVyICYmIG5lZWRSZW5kZXJlcikgewotICAgICAgICBwYXJ0UmVu
ZGVyZXIgPSBuZXcgKG93bmluZ1JlbmRlcmVyKCktPnJlbmRlckFyZW5hKCkpIFJlbmRlclNjcm9s
bGJhclBhcnQob3duaW5nUmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSwgdGhpcywgcGFydFR5cGUpOwor
ICAgICAgICBwYXJ0UmVuZGVyZXIgPSBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpjcmVhdGVBbm9ueW1v
dXMob3duaW5nUmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSwgdGhpcywgcGFydFR5cGUpOwogICAgICAg
ICBtX3BhcnRzLnNldChwYXJ0VHlwZSwgcGFydFJlbmRlcmVyKTsKICAgICB9IGVsc2UgaWYgKHBh
cnRSZW5kZXJlciAmJiAhbmVlZFJlbmRlcmVyKSB7CiAgICAgICAgIG1fcGFydHMucmVtb3ZlKHBh
cnRUeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUs
OCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRl
clNjcm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQoQ29udGFpbmVyTm9kZSogbm9kZSwg
UmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKLSAgICA6IFJl
bmRlckJsb2NrKG5vZGUpCitSZW5kZXJTY3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0
KFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCisgICAgOiBS
ZW5kZXJCbG9jaygwKQogICAgICwgbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9wYXJ0
KHBhcnQpCiB7CkBAIC00Niw2ICs0NiwxMyBAQCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojp+UmVuZGVy
U2Nyb2xsYmFyUGFyCiB7CiB9CiAKK1JlbmRlclNjcm9sbGJhclBhcnQqIFJlbmRlclNjcm9sbGJh
clBhcnQ6OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCogZG9jdW1lbnQsIFJlbmRlclNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit7CisgICAgUmVuZGVyU2Nyb2xsYmFy
UGFydCogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJTY3Jv
bGxiYXJQYXJ0KHNjcm9sbGJhciwgcGFydCk7CisgICAgcmVuZGVyZXItPnNldERvY3VtZW50Rm9y
QW5vbnltb3VzKGRvY3VtZW50KTsKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9CisKIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyUGFydDo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVj
a1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDggQEAgY2xhc3MgUmVuZGVyU2Nyb2xsYmFyOwogCiBjbGFzcyBSZW5kZXJTY3Jv
bGxiYXJQYXJ0IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTY3Jv
bGxiYXJQYXJ0KENvbnRhaW5lck5vZGUqLCBSZW5kZXJTY3JvbGxiYXIqID0gMCwgU2Nyb2xsYmFy
UGFydCA9IE5vUGFydCk7CisgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclBhcnQqIGNyZWF0ZUFu
b255bW91cyhEb2N1bWVudCosIFJlbmRlclNjcm9sbGJhciogPSAwLCBTY3JvbGxiYXJQYXJ0ID0g
Tm9QYXJ0KTsKKyAgICAKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJQYXJ0KCk7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
U2Nyb2xsYmFyUGFydCI7IH0KQEAgLTYxLDYgKzYyLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDAp
OwogCiBwcml2YXRlOgorICAgIFJlbmRlclNjcm9sbGJhclBhcnQoUmVuZGVyU2Nyb2xsYmFyKiwg
U2Nyb2xsYmFyUGFydCk7CisKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoKTsKIAogICAgIHZvaWQgbGF5b3V0SG9yaXpvbnRhbFBhcnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAkocmV2aXNp
b24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTQgKzUzLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyU2Vh
cmNoRmllbGQ6OlJlbmRlclNlYXJjaEZpZWxkKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUobm9kZSkKK1JlbmRlclNlYXJjaEZpZWxkOjpSZW5k
ZXJTZWFyY2hGaWVsZChFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lKGVsZW1lbnQpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQog
ICAgICwgbV9zZWFyY2hQb3B1cCgwKQogewotICAgIEFTU0VSVChub2RlLT5pc0hUTUxFbGVtZW50
KCkpOwotICAgIEFTU0VSVChub2RlLT50b0lucHV0RWxlbWVudCgpKTsKLSAgICBBU1NFUlQobm9k
ZS0+dG9JbnB1dEVsZW1lbnQoKS0+aXNTZWFyY2hGaWVsZCgpKTsKKyAgICBBU1NFUlQoZWxlbWVu
dC0+aXNIVE1MRWxlbWVudCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQo
KSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCktPmlzU2VhcmNoRmllbGQo
KSk7CiB9CiAKIFJlbmRlclNlYXJjaEZpZWxkOjp+UmVuZGVyU2VhcmNoRmllbGQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgJKHJldmlzaW9u
IDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNlYXJjaFBvcHVwTWVudTsK
IAogY2xhc3MgUmVuZGVyU2VhcmNoRmllbGQgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLCBwcml2YXRlIFBvcHVwTWVudUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU2Vh
cmNoRmllbGQoQ29udGFpbmVyTm9kZSopOworICAgIFJlbmRlclNlYXJjaEZpZWxkKEVsZW1lbnQq
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTZWFyY2hGaWVsZCgpOwogCiAgICAgdm9pZCB1cGRhdGVD
YW5jZWxCdXR0b25WaXNpYmlsaXR5KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1S
ZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRl
ckJsb2NrKG5vZGUpCitSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRWxlbWVudCogZWxlbWVudCkK
KyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX2hlYWQoMCkKICAgICAsIG1fZm9v
dCgwKQogICAgICwgbV9maXJzdEJvZHkoMCkKQEAgLTEzNjIsNyArMTM2Miw4IEBAIGJvb2wgUmVu
ZGVyVGFibGU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFQKIFJlbmRlclRhYmxlKiBSZW5kZXJUYWJs
ZTo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCog
cGFyZW50KQogewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIFRBQkxF
KTsKLSAgICBSZW5kZXJUYWJsZSogbmV3VGFibGUgPSBuZXcgKHBhcmVudC0+cmVuZGVyQXJlbmEo
KSkgUmVuZGVyVGFibGUocGFyZW50LT5kb2N1bWVudCgpIC8qIGlzIGFub255bW91cyAqLyk7Cisg
ICAgUmVuZGVyVGFibGUqIG5ld1RhYmxlID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJl
bmRlclRhYmxlKDApOworICAgIG5ld1RhYmxlLT5zZXREb2N1bWVudEZvckFub255bW91cyhwYXJl
bnQtPmRvY3VtZW50KCkpOwogICAgIG5ld1RhYmxlLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNl
KCkpOwogICAgIHJldHVybiBuZXdUYWJsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBlbnVt
IFNraXBFbXB0eVNlY3Rpb25zVmFsdWUgeyBEb05vdFNraXBFCiAKIGNsYXNzIFJlbmRlclRhYmxl
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJUYWJs
ZShDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGUoRWxlbWVudCopOwog
ICAgIHZpcnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICAvLyBQZXIgQ1NTIDMgd3JpdGluZy1t
b2RlOiAiVGhlIGZpcnN0IGFuZCBzZWNvbmQgdmFsdWVzIG9mIHRoZSAnYm9yZGVyLXNwYWNpbmcn
IHByb3BlcnR5IHJlcHJlc2VudCBzcGFjaW5nIGJldHdlZW4gY29sdW1ucwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAJKHJldmlzaW9u
IDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNhcHRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVuZGVyVGFibGVDYXB0aW9uOjpSZW5kZXJUYWJsZUNhcHRpb24oQ29udGFpbmVyTm9k
ZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitSZW5kZXJUYWJsZUNhcHRpb246OlJl
bmRlclRhYmxlQ2FwdGlvbihFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxl
bWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2FwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNhcHRpb24uaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
IGNsYXNzIFJlbmRlclRhYmxlOwogCiBjbGFzcyBSZW5kZXJUYWJsZUNhcHRpb24gOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlQ2FwdGlvbihD
b250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVDYXB0aW9uKEVsZW1lbnQq
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZUNhcHRpb24oKTsKICAgICB2aXJ0dWFsIExheW91
dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGNvbnN0IE9WRVJS
SURFOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBAIHN0cnVj
dCBTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsIDogcHVibGkKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihSZW5kZXJUYWJsZUNlbGwpID09IHNpemVvZihTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsKSwg
UmVuZGVyVGFibGVDZWxsX3Nob3VsZF9zdGF5X3NtYWxsKTsKIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihDb2xsYXBzZWRCb3JkZXJWYWx1ZSkgPT0gOCwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hvdWxk
X3N0YXlfc21hbGwpOwogCi1SZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChDb250YWlu
ZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlclRhYmxlQ2VsbDo6
UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJCbG9jayhlbGVt
ZW50KQogICAgICwgbV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1fY2VsbFdpZHRo
Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faW50cmluc2ljUGFkZGluZ0JlZm9yZSgwKQpAQCAtMTI0
OSw3ICsxMjQ5LDggQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNjcm9sbGJhcnNDaGFuZ2VkKAog
UmVuZGVyVGFibGVDZWxsKiBSZW5kZXJUYWJsZUNlbGw6OmNyZWF0ZUFub255bW91c1dpdGhQYXJl
bnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKIHsKICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBUQUJMRV9DRUxMKTsKLSAgICBSZW5kZXJUYWJsZUNl
bGwqIG5ld0NlbGwgPSBuZXcgKHBhcmVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFibGVDZWxs
KHBhcmVudC0+ZG9jdW1lbnQoKSAvKiBpcyBhbm9ueW1vdXMgKi8pOworICAgIFJlbmRlclRhYmxl
Q2VsbCogbmV3Q2VsbCA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJUYWJsZUNl
bGwoMCk7CisgICAgbmV3Q2VsbC0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMocGFyZW50LT5kb2N1
bWVudCgpKTsKICAgICBuZXdDZWxsLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAg
IHJldHVybiBuZXdDZWxsOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGVu
dW0gSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgeyBEb05vdEluY2wKIAogY2xhc3MgUmVuZGVyVGFi
bGVDZWxsIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5k
ZXJUYWJsZUNlbGwoQ29udGFpbmVyTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlQ2Vs
bChFbGVtZW50Kik7CiAgICAgCiAgICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0CiAgICAgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCShyZXZp
c2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVDb2w6OlJlbmRlclRh
YmxlQ29sKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCb3gobm9kZSkKK1JlbmRl
clRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbChFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVy
Qm94KGVsZW1lbnQpCiAgICAgLCBtX3NwYW4oMSkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVj
dCBhdHRyaWJ1dGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVy
VGFibGVDZWxsOwogCiBjbGFzcyBSZW5kZXJUYWJsZUNvbCA6IHB1YmxpYyBSZW5kZXJCb3ggewog
cHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlQ29sKENvbnRhaW5lck5vZGUqKTsKKyAg
ICBleHBsaWNpdCBSZW5kZXJUYWJsZUNvbChFbGVtZW50Kik7CiAKICAgICBSZW5kZXJPYmplY3Qq
IGZpcnN0Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJl
bigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmZpcnN0Q2hpbGQoKTsgfQogICAgIFJlbmRlck9iamVj
dCogbGFzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRy
ZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5sYXN0Q2hpbGQoKTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KENvbnRhaW5l
ck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCb3gobm9kZSkKK1JlbmRlclRhYmxlUm93OjpSZW5k
ZXJUYWJsZVJvdyhFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQm94KGVsZW1lbnQpCiAg
ICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5kZXgpCiB7CiAgICAgLy8gaW5pdCBSZW5kZXJPYmpl
Y3QgYXR0cmlidXRlcwpAQCAtMjQ5LDcgKzI0OSw4IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6Omlt
YWdlQ2hhbmdlZChXcmFwcGUKIFJlbmRlclRhYmxlUm93KiBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRl
QW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KQog
ewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIFRBQkxFX1JPVyk7Ci0g
ICAgUmVuZGVyVGFibGVSb3cqIG5ld1JvdyA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBS
ZW5kZXJUYWJsZVJvdyhwYXJlbnQtPmRvY3VtZW50KCkgLyogaXMgYW5vbnltb3VzICovKTsKKyAg
ICBSZW5kZXJUYWJsZVJvdyogbmV3Um93ID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJl
bmRlclRhYmxlUm93KDApOworICAgIG5ld1Jvdy0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMocGFy
ZW50LT5kb2N1bWVudCgpKTsKICAgICBuZXdSb3ctPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2Uo
KSk7CiAgICAgcmV0dXJuIG5ld1JvdzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Um93SW5kZXggPSAweDdGCiAKIGNsYXNzIFJlbmRl
clRhYmxlUm93IDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVu
ZGVyVGFibGVSb3coQ29udGFpbmVyTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlUm93
KEVsZW1lbnQqKTsKIAogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgQVNT
RVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+
Zmlyc3RDaGlsZCgpOyB9CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IEFT
U0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCkt
Pmxhc3RDaGlsZCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDgg
Kzg5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHRGbwogfQogCiAK
LVJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKENvbnRhaW5lck5vZGUqIG5v
ZGUpCi0gICAgOiBSZW5kZXJCb3gobm9kZSkKK1JlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFi
bGVTZWN0aW9uKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJCb3goZWxlbWVudCkKICAg
ICAsIG1fY0NvbCgwKQogICAgICwgbV9jUm93KDApCiAgICAgLCBtX291dGVyQm9yZGVyU3RhcnQo
MCkKQEAgLTE0MTUsNyArMTQxNSw4IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlJiBSZW5kZXJUYWJs
ZVNlY3Rpb24KIFJlbmRlclRhYmxlU2VjdGlvbiogUmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVB
bm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9XX0dST1VQ
KTsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIG5ld1NlY3Rpb24gPSBuZXcgKHBhcmVudC0+cmVu
ZGVyQXJlbmEoKSkgUmVuZGVyVGFibGVTZWN0aW9uKHBhcmVudC0+ZG9jdW1lbnQoKSAvKiBpcyBh
bm9ueW1vdXMgKi8pOworICAgIFJlbmRlclRhYmxlU2VjdGlvbiogbmV3U2VjdGlvbiA9IG5ldyAo
cGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJUYWJsZVNlY3Rpb24oMCk7CisgICAgbmV3U2Vj
dGlvbi0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMocGFyZW50LT5kb2N1bWVudCgpKTsKICAgICBu
ZXdTZWN0aW9uLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdT
ZWN0aW9uOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIGNs
YXNzIFJlbmRlclRhYmxlUm93OwogCiBjbGFzcyBSZW5kZXJUYWJsZVNlY3Rpb24gOiBwdWJsaWMg
UmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24oQ29udGFpbmVyTm9k
ZSopOworICAgIFJlbmRlclRhYmxlU2VjdGlvbihFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyVGFibGVTZWN0aW9uKCk7CiAKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25z
dCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxk
cmVuKCktPmZpcnN0Q2hpbGQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NiwxMCArMzYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2woQ29udGFpbmVyTm9kZSog
bm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVy
VGV4dENvbnRyb2woRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQp
CiB7Ci0gICAgQVNTRVJUKHRvVGV4dEZvcm1Db250cm9sKG5vZGUpKTsKKyAgICBBU1NFUlQodG9U
ZXh0Rm9ybUNvbnRyb2woZWxlbWVudCkpOwogfQogCiBSZW5kZXJUZXh0Q29udHJvbDo6flJlbmRl
clRleHRDb250cm9sKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBw
dWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBp
bmRleCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJUZXh0Q29udHJvbChDb250YWlu
ZXJOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRyb2woRWxlbWVudCopOwogCiAgICAgLy8gVGhp
cyBjb252ZW5pZW5jZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljIGJlY2F1c2Ug
aW5uZXJUZXh0RWxlbWVudCBtYXkgb3V0bGl2ZSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgSFRNTEVs
ZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2
aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZShDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyVGV4dENv
bnRyb2wobm9kZSkKK1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZShFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxl
bWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVi
bGljOgotICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKENvbnRhaW5lck5vZGUqKTsKKyAg
ICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTMgKzQ5LDEz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUo
Q29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShFbGVt
ZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxlbWVudCkKICAgICAsIG1f
c2hvdWxkRHJhd0NhcHNMb2NrSW5kaWNhdG9yKGZhbHNlKQogICAgICwgbV9kZXNpcmVkSW5uZXJU
ZXh0SGVpZ2h0KC0xKQogewotICAgIEFTU0VSVChub2RlLT5pc0hUTUxFbGVtZW50KCkpOwotICAg
IEFTU0VSVChub2RlLT50b0lucHV0RWxlbWVudCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNI
VE1MRWxlbWVudCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKSk7CiB9
CiAKIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5oCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIAogY2xhc3MgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIDogcHVibGljIFJlbmRlclRleHRDb250cm9sIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoQ29udGFpbmVyTm9kZSopOwor
ICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCk7CiAgICAgLy8gRklYTUU6IE1vdmUgY3JlYXRl
KlN0eWxlKCkgdG8gdGhlaXIgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxl
KSBjb25zdDsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lKGNvbnN0CiAKIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayA6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2Nr
KENvbnRhaW5lck5vZGUqIG5vZGUpIDogUmVuZGVyQmxvY2sobm9kZSkgeyB9CisgICAgUmVuZGVy
VGV4dENvbnRyb2xJbm5lckJsb2NrKEVsZW1lbnQqIGVsZW1lbnQpIDogUmVuZGVyQmxvY2soZWxl
bWVudCkgeyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc0xpbmVJZkVtcHR5KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRUcmFja0N1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRUcmFja0N1ZS5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGV4dFRyYWNr
Q3VlOjpSZW5kZXJUZXh0VHJhY2tDdWUoVGV4dFRyYWNrQ3VlQm94KiBub2RlKQotICAgIDogUmVu
ZGVyQmxvY2sobm9kZSkKLSAgICAsIG1fY3VlKG5vZGUtPmdldEN1ZSgpKQorUmVuZGVyVGV4dFRy
YWNrQ3VlOjpSZW5kZXJUZXh0VHJhY2tDdWUoVGV4dFRyYWNrQ3VlQm94KiBlbGVtZW50KQorICAg
IDogUmVuZGVyQmxvY2soZWxlbWVudCkKKyAgICAsIG1fY3VlKGVsZW1lbnQtPmdldEN1ZSgpKQog
ewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZp
c2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDEwICs2OSw2IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXco
RG9jdW1lbnQqIGRvY3VtZW4KICAgICAsIG1fcmVuZGVyQ291bnRlckNvdW50KDApCiAgICAgLCBt
X2xheW91dFBoYXNlKFJlbmRlclZpZXdOb3JtYWxMYXlvdXQpCiB7Ci0gICAgLy8gQ2xlYXIgb3Vy
IGFub255bW91cyBiaXQsIHNldCBiZWNhdXNlIFJlbmRlck9iamVjdCBhc3N1bWVzCi0gICAgLy8g
YW55IHJlbmRlcmVyIHdpdGggZG9jdW1lbnQgYXMgdGhlIG5vZGUgaXMgYW5vbnltb3VzLgotICAg
IHNldElzQW5vbnltb3VzKGZhbHNlKTsKLQogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJp
YnV0ZXMKICAgICBzZXRJbmxpbmUoZmFsc2UpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSwx
MCArODUsMTAgQEAgc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZQogICAg
IFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9N
b3ZlKGNoaWxkLCBwYXJlbnQpOwogfQogCi1SZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdldChDb250
YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyUmVwbGFjZWQobm9kZSkKK1JlbmRlcldpZGdl
dDo6UmVuZGVyV2lkZ2V0KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJSZXBsYWNlZChl
bGVtZW50KQogICAgICwgbV93aWRnZXQoMCkKLSAgICAsIG1fZnJhbWVWaWV3KG5vZGUtPmRvY3Vt
ZW50KCktPnZpZXcoKSkKKyAgICAsIG1fZnJhbWVWaWV3KGVsZW1lbnQtPmRvY3VtZW50KCktPnZp
ZXcoKSkKICAgICAvLyBSZWZlcmVuY2UgY291bnRpbmcgaXMgdXNlZCB0byBwcmV2ZW50IHRoZSB3
aWRnZXQgZnJvbSBiZWluZwogICAgIC8vIGRlc3Ryb3llZCB3aGlsZSBpbnNpZGUgdGhlIFdpZGdl
dCBjb2RlLCB3aGljaCBtaWdodCBub3QgYmUKICAgICAvLyBhYmxlIHRvIGhhbmRsZSB0aGF0LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNpb24gMTM5
OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKFJlbmRlckFy
ZW5hKik7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJXaWRnZXQoQ29udGFpbmVyTm9kZSopOwor
ICAgIFJlbmRlcldpZGdldChFbGVtZW50Kik7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVWaWV3OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZpc2lv
biAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAgICAgCi1SZW5kZXJN
YXRoTUxCbG9jazo6UmVuZGVyTWF0aE1MQmxvY2soQ29udGFpbmVyTm9kZSogY29udGFpbmVyKQor
UmVuZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQqIGNvbnRhaW5lcikK
ICAgICA6IFJlbmRlckZsZXhpYmxlQm94KGNvbnRhaW5lcikKICAgICAsIG1faWdub3JlSW5BY2Nl
c3NpYmlsaXR5VHJlZShmYWxzZSkKICAgICAsIG1faW50cmluc2ljUGFkZGluZ0JlZm9yZSgwKQpA
QCAtMTUyLDcgKzE1Miw4IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OmNvbXB1dGVQcmVmZXJy
ZWQKIFJlbmRlck1hdGhNTEJsb2NrKiBSZW5kZXJNYXRoTUxCbG9jazo6Y3JlYXRlQW5vbnltb3Vz
TWF0aE1MQmxvY2soRURpc3BsYXkgZGlzcGxheSkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
c3R5bGUoKSwgZGlzcGxheSk7Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2sqIG5ld0Jsb2NrID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCgpIC8qIGlzIGFub255
bW91cyAqLyk7CisgICAgUmVuZGVyTWF0aE1MQmxvY2sqIG5ld0Jsb2NrID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jaygwKTsKKyAgICBuZXdCbG9jay0+c2V0RG9jdW1lbnRG
b3JBbm9ueW1vdXMoZG9jdW1lbnQoKSk7CiAgICAgbmV3QmxvY2stPnNldFN0eWxlKG5ld1N0eWxl
LnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAkocmV2aXNp
b24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw4IEBAIGNsYXNzIFJlbmRlck1h
dGhNTE9wZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1YmxpYyBSZW5kZXJG
bGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2soQ29udGFpbmVyTm9k
ZSopOworICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQqIGNvbnRhaW5lcik7CisKICAgICB2
aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBj
b25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxCbG9jaygpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvciogUmVu
ZGVyTWF0aE1MRmVuY2VkCiAgICAgbmV3U3R5bGUtPnNldE1hcmdpbkVuZChMZW5ndGgoKG9wZXJh
dG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UgPyBnRmVuY2VNYXJnaW5FbXMg
OiBnU2VwYXJhdG9yTWFyZ2luRW5kRW1zKSAqIHN0eWxlKCktPmZvbnRTaXplKCksIEZpeGVkKSk7
CiAgICAgaWYgKG9wZXJhdG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UpCiAg
ICAgICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5ndGgoZ0ZlbmNlTWFyZ2luRW1zICog
c3R5bGUoKS0+Zm9udFNpemUoKSwgRml4ZWQpKTsKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciog
bmV3T3BlcmF0b3IgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9yKG5v
ZGUoKSAvKiAiYWxtb3N0IGFub255bW91cyIgKi8sIHVDaGFyKTsKKyAgICBSZW5kZXJNYXRoTUxP
cGVyYXRvciogbmV3T3BlcmF0b3IgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKHRvRWxlbWVudChub2RlKCkpLCB1Q2hhcik7CiAgICAgbmV3T3BlcmF0b3ItPnNldE9w
ZXJhdG9yVHlwZShvcGVyYXRvclR5cGUpOwogICAgIG5ld09wZXJhdG9yLT5zZXRTdHlsZShuZXdT
dHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdPcGVyYXRvcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcs
OCBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0CiB7CiB9CiAKLVJl
bmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihDb250YWluZXJOb2RlKiBu
b2RlLCBVQ2hhciBvcGVyYXRvckNoYXIpCi0gICAgOiBSZW5kZXJNYXRoTUxCbG9jayhub2RlKQor
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKEVsZW1lbnQqIGVsZW1l
bnQsIFVDaGFyIG9wZXJhdG9yQ2hhcikKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQp
CiAgICAgLCBtX3N0cmV0Y2hIZWlnaHQoMCkKICAgICAsIG1fb3BlcmF0b3IoY29udmVydEh5cGhl
bk1pbnVzVG9NaW51c1NpZ24ob3BlcmF0b3JDaGFyKSkKICAgICAsIG1fb3BlcmF0b3JUeXBlKERl
ZmF1bHQpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBk
YXRlRnJvbUVsZQogICAgIGJvb2wgc3RyZXRjaERpc2FibGVkID0gZmFsc2U7CiAgICAgCiAgICAg
Ly8gV2UgbWF5IG5lZWQgdGhlIGVsZW1lbnQgbGF0ZXIgaWYgd2UgY2FuJ3Qgc3RyZXRjaC4KLSAg
ICBpZiAobm9kZSgpLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSkgeworICAgIGlm
IChub2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICBpZiAoRWxlbWVudCogbW8gPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSkgewogICAgICAgICAgICAgQXRvbWljU3RyaW5n
IHN0cmV0Y2h5QXR0ciA9IG1vLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN0cmV0Y2h5QXR0
cik7CiAgICAgICAgICAgICBzdHJldGNoRGlzYWJsZWQgPSBlcXVhbElnbm9yaW5nQ2FzZShzdHJl
dGNoeUF0dHIsICJmYWxzZSIpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OnVwZGF0ZUZyb21FbGUKICAgICAvLyBFaXRoZXIgc3RyZXRjaCBpcyBkaXNhYmxl
ZCBvciB3ZSBkb24ndCBoYXZlIGEgc3RyZXRjaGFibGUgY2hhcmFjdGVyIG92ZXIgdGhlIG1pbmlt
dW0gaGVpZ2h0CiAgICAgaWYgKHN0cmV0Y2hEaXNhYmxlZCB8fCAhc2hvdWxkU3RhY2spIHsKICAg
ICAgICAgbV9pc1N0YWNrZWQgPSBmYWxzZTsKLSAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5l
ciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAgICAg
ICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0
aE1MQmxvY2sodG9FbGVtZW50KG5vZGUoKSkpOwogICAgICAgICAvLyBUaGlzIGNvbnRhaW5lciBk
b2Vzbid0IG9mZmVyIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eS4KICAg
ICAgICAgdG9SZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJZ25vcmVJbkFjY2Vzc2li
aWxpdHlUcmVlKHRydWUpOwogICAgICAgICAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlCiAgICAgICAgIFJlbmRlclRleHQqIHRleHQg
PSAwOwogICAgICAgICBpZiAobV9vcGVyYXRvcikgCiAgICAgICAgICAgICB0ZXh0ID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0KG5vZGUoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlKCZtX29w
ZXJhdG9yLCAxKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUoKS0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpFTEVNRU5UX05PREUpCisgICAgICAgIGVsc2UgaWYgKG5vZGUoKS0+aXNFbGVtZW50Tm9kZSgp
KQogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIG1vID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5v
ZGUoKSkpCiAgICAgICAgICAgICAgICAgdGV4dCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVy
VGV4dChub2RlKCksIG1vLT50ZXh0Q29udGVudCgpLnJlcGxhY2UoaHlwaGVuTWludXMsIG1pbnVz
U2lnbikuaW1wbCgpKTsKICAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUgdGV4
dCwgbGVhdmUgaXQgYmxhbmsuCkBAIC0yOTYsNyArMjk2LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gUmVuZGVyTWF0aE1MT3BlcgogCiBSZW5kZXJCbG9jayogUmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmNyZWF0ZUdseXBoKFVDaGFyIGdseXBoLCBpbnQgbWF4SGVpZ2h0Rm9yUmVuZGVyZXIsIGlu
dCBjaGFyUmVsYXRpdmUpCiB7Ci0gICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAocmVu
ZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAgICBSZW5kZXJCbG9jayog
Y29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayh0b0VsZW1l
bnQobm9kZSgpKSk7CiAgICAgdG9SZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJZ25v
cmVJbkFjY2Vzc2liaWxpdHlUcmVlKHRydWUpOwogICAgIGNvbnRhaW5lci0+c2V0U3R5bGUoY3Jl
YXRlU3RhY2thYmxlU3R5bGUobWF4SGVpZ2h0Rm9yUmVuZGVyZXIpKTsKICAgICBhZGRDaGlsZChj
b250YWluZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRl
ck1hdGhNTE9wZXJhdG9yIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKICAg
ICBSZW5kZXJNYXRoTUxPcGVyYXRvcihFbGVtZW50Kik7Ci0gICAgUmVuZGVyTWF0aE1MT3BlcmF0
b3IoQ29udGFpbmVyTm9kZSosIFVDaGFyIG9wZXJhdG9yQ2hhcik7CisgICAgUmVuZGVyTWF0aE1M
T3BlcmF0b3IoRWxlbWVudCosIFVDaGFyIG9wZXJhdG9yQ2hhcik7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5
bGUqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBN
YXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coQ29udGFpbmVy
Tm9kZSogbm9kZSkKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKG5vZGUpCitSZW5kZXJNYXRoTUxS
b3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyTWF0aE1M
QmxvY2soZWxlbWVudCkKIHsKIH0KIApAQCAtNDUsNyArNDUsOCBAQCBSZW5kZXJNYXRoTUxSb3c6
OlJlbmRlck1hdGhNTFJvdyhDb250YWluCiBSZW5kZXJNYXRoTUxSb3cqIFJlbmRlck1hdGhNTFJv
dzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCog
cGFyZW50KQogewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIEZMRVgp
OwotICAgIFJlbmRlck1hdGhNTFJvdyogbmV3TVJvdyA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVu
YSgpKSBSZW5kZXJNYXRoTUxSb3cocGFyZW50LT5kb2N1bWVudCgpIC8qIGlzIGFub255bW91cyAq
Lyk7CisgICAgUmVuZGVyTWF0aE1MUm93KiBuZXdNUm93ID0gbmV3IChwYXJlbnQtPnJlbmRlckFy
ZW5hKCkpIFJlbmRlck1hdGhNTFJvdygwKTsKKyAgICBuZXdNUm93LT5zZXREb2N1bWVudEZvckFu
b255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkpOwogICAgIG5ld01Sb3ctPnNldFN0eWxlKG5ld1N0
eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld01Sb3c7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHJldmlzaW9u
IDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2Nr
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb3coQ29udGFpbmVyTm9kZSopOworICAgIFJl
bmRlck1hdGhNTFJvdyhFbGVtZW50Kik7CisKICAgICBzdGF0aWMgUmVuZGVyTWF0aE1MUm93KiBj
cmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAg
ICAgCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuY3BwCShyZXZpc2lvbiAxMzk5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29udGVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIFBh
c3NPd25QdHI8Q29udGVudERhdGE+IENvbnRlbnREYXRhOjpjbG8KIAogUmVuZGVyT2JqZWN0KiBJ
bWFnZUNvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCogZG9jLCBSZW5kZXJTdHls
ZSogcHNldWRvU3R5bGUpIGNvbnN0CiB7Ci0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChk
b2MtPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKGRvYyk7CisgICAgUmVuZGVySW1hZ2UqIGlt
YWdlID0gUmVuZGVySW1hZ2U6OmNyZWF0ZUFub255bW91cyhkb2MpOwogICAgIGltYWdlLT5zZXRQ
c2V1ZG9TdHlsZShwc2V1ZG9TdHlsZSk7CiAgICAgaWYgKG1faW1hZ2UpCiAgICAgICAgIGltYWdl
LT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUo
bV9pbWFnZS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdCbG9jay5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQmxvY2s6OlJlbmRl
clNWR0Jsb2NrKFNWR0VsZW1lbnQqIG5vZGUpIAotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1Jl
bmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdFbGVtZW50KiBlbGVtZW50KQorICAgIDog
UmVuZGVyQmxvY2soZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJl
bmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAg
OiBSZW5kZXJJbmxpbmUobm9kZSkKK1JlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKEVs
ZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCkKIHsKICAgICBzZXRB
bHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR0lu
bGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRl
clNWR0lubGluZShDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyU1ZHSW5saW5l
KEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmUiOyB9CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5jcHAJKHJldmlzaW9uIDEzOTk3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVy
U1ZHVFNwYW46OlJlbmRlclNWR1RTcGFuKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5k
ZXJTVkdJbmxpbmUobm9kZSkKK1JlbmRlclNWR1RTcGFuOjpSZW5kZXJTVkdUU3BhbihFbGVtZW50
KiBlbGVtZW50KQorICAgIDogUmVuZGVyU1ZHSW5saW5lKGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgJKHJldmlz
aW9uIDEzOTk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNw
YW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVuZGVyU1ZHVFNwYW4gOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBSZW5kZXJTVkdUU3BhbihDb250YWluZXJOb2RlKik7CisgICAgZXhw
bGljaXQgUmVuZGVyU1ZHVFNwYW4oRWxlbWVudCopOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KIH07CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQ
YXRoLmNwcAkocmV2aXNpb24gMTM5OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4
dFBhdGgoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclNWR0lubGluZShub2RlKQor
UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKEVsZW1lbnQqIGVsZW1lbnQpCisg
ICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAkocmV2aXNpb24gMTM5
OTc4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUmVuZGVyU1ZHVGV4dFBhdGggOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJTVkdUZXh0UGF0aChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyU1ZH
VGV4dFBhdGgoRWxlbWVudCopOwogCiAgICAgUGF0aCBsYXlvdXRQYXRoKCkgY29uc3Q7CiAgICAg
ZmxvYXQgc3RhcnRPZmZzZXQoKSBjb25zdDsK
</data>
<flag name="review"
          id="201525"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="201546"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183532</attachid>
            <date>2013-01-18 12:54:46 -0800</date>
            <delta_ts>2013-01-18 15:27:59 -0800</delta_ts>
            <desc>patch2</desc>
            <filename>render-tree-node-tighten-element-8.patch</filename>
            <type>text/plain</type>
            <size>95251</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0MiBAQAorMjAxMy0wMS0xOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSByZW5kZXJlciBjb25z
dHJ1Y3RvcnMgdGFrZSBFbGVtZW50IHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxMzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBIeWF0dC4KKyAgICAgICAgCisgICAgICAgIFRpZ2h0ZXIgdHlwaW5nIHByZXZlbnRz
IGJ1Z3MgYW5kIGVuYWJsZXMgb3B0aW1pemF0aW9ucy4KKworICAgICAgICBUaGUgcGF0Y2ggY2hh
bmdlcyBob3cgYW5vbnltb3VzIHJlbmRlcmVyZXIgYXJlIGNvbnN0cnVjdGVkLiBQcmV2aW91c2x5
IERvY3VtZW50KiBhcyB0aGUgbm9kZSBwYXJhbWV0ZXIKKyAgICAgICAgaW5kaWNhdGVkIHRoYXQg
dGhlIHJlbmRlcmVyIHdhcyBhbm9ueW1vdXMuIFRoaXMgZm9yY2VkIHRoZSBjb2RlIHRvIG9wZXJh
dGUgb24gQ29udGFpbmVyTm9kZXMgKERvY3VtZW50CisgICAgICAgIGlzIG5vdCBhbiBFbGVtZW50
KS4gTm93IGFub255bW91cyByZW5kZXJlcnMgYXJlIGNvbnN0cnVjdGVkIGJ5IHBhc3NpbmcgbnVs
bCBhbmQgdGhlIGRvY3VtZW50IGlzIHNldCBieQorICAgICAgICBzZXBhcmF0ZSBzZXREb2N1bWVu
dEZvckFub255bW91cygpIGNhbGwuIFRoZSBwYXRjaCB1c2VzIFJlbmRlckZvbzo6Y3JlYXRlQW5v
bnltb3VzKCkgcGF0dGVybiBjb25zaXN0ZW50bHkuCisKKyAgICAgICAgTW9zdCBjb25zdHJ1Y3Rv
cnMgYXJlIHN3aXRjaGVkIHRvIHRha2UgRWxlbWVudC4gUmVuZGVyQmxvY2sgc3RpbGwgdGFrZXMg
Q29udGFpbmVyTm9kZSBkdWUgdG8gYSBmZXcgc3ViY2xhc3NlcworICAgICAgICAoUmVuZGVyVmll
dyBhbmQgUmVuZGVyRmxvd1RocmVhZCkgdGhhdCBwYXNzIGluIGEgRG9jdW1lbnQuCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZVJlcGxhY2VtZW50UnVuSW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUZpcnN0TGV0dGVyUmVuZGVyZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5k
ZXJlckFuZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNyZWF0ZUFu
b255bW91c0NvbHVtbnNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmNyZWF0ZUFub255bW91c0NvbHVtblNwYW5XaXRoUGFyZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpjcmVhdGVBbm9ueW1v
dXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaDoK
KyAgICAgICAgKFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0
YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckRldGFpbHNNYXJrZXIuaDoKKyAgICAgICAgKFJlbmRlckRldGFpbHNNYXJrZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEaWFsb2cuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckRpYWxvZzo6UmVuZGVyRGlhbG9nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRz
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OlJlbmRlckZpZWxkc2V0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxl
eGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guaDoKKyAgICAgICAgKFJlbmRlckZsZXhpYmxlQm94KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoK
KyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcjo6UmVuZGVyRnVsbFNjcmVlblBs
YWNlaG9sZGVyKToKKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3JlZW4p
OgorICAgICAgICAoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlQW5vbnltb3VzKToKKyAgICAgICAg
KFJlbmRlckZ1bGxTY3JlZW46OndyYXBSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW4pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OlJlbmRlckdyaWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y3JlYXRl
QW5vbnltb3VzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6UmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3Jl
YXRlQW5vbnltb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWRkQ2hpbGRJ
Z25vcmluZ0NvbnRpbnVhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
OgorICAgICAgICAoUmVuZGVySW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6bm9kZSk6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIHZlcnNpb24gd2l0aCBjb3Zhcmlh
bnQgRWxlbWVudCByZXR1cm4gdHlwZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsQ29ybmVy
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVJlc2l6ZXJTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3JlYXRlUmVmbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6UmVuZGVyTGlzdEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpSZW5kZXJM
aXN0TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OmNyZWF0ZUFu
b255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OlJlbmRlck1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5OjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9s
RWxlbWVudHMuaDoKKyAgICAgICAgKFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKToK
KyAgICAgICAgKFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KToKKyAgICAgICAgKFJlbmRl
clRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1u
QmxvY2s6OlJlbmRlck11bHRpQ29sdW1uQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TXVsdGlDb2x1bW5CbG9jazo6ZW5zdXJlQ29sdW1uU2V0cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZDo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmg6CisgICAgICAgIChSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6UmVu
ZGVyTXVsdGlDb2x1bW5TZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0Lmg6CisgICAgICAgIChSZW5kZXJNdWx0aUNvbHVtblNldCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oOgorICAgICAgICAoUmVuZGVyTmFtZWRGbG93
VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIAorICAgICAgICAgICAgIFBhc3NlZCBpbiBudWxs
IG5vZGUgaW5kaWNhdGVzIHRoYXQgdGhlIHJlbmRlcmVyIGlzIGFub255bW91cy4gUmVtb3ZlIG5v
dyB1bm5lY2Vzc2FyeSBzZXRJc0Fub255bW91cygpIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmlzQW5vbnltb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RCaXRmaWVsZHM6OlJlbmRlck9iamVjdEJpdGZpZWxkcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OlJlbmRl
clJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpSZW5kZXJSZXBsaWNhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxp
Y2E6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2Eu
aDoKKyAgICAgICAgKFJlbmRlclJlcGxpY2EpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJS
dWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFub255bW91c1J1YnlJbmxpbmVCbG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QXNJbmxpbmU6OlJlbmRlclJ1YnlBc0lu
bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5QXNCbG9jazo6UmVuZGVyUnVieUFz
QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5Lmg6CisgICAgICAgIChSZW5k
ZXJSdWJ5QXNJbmxpbmUpOgorICAgICAgICAoUmVuZGVyUnVieUFzQmxvY2spOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJS
dWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieUJh
c2U6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
Lmg6CisgICAgICAgIChSZW5kZXJSdWJ5QmFzZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6UmVuZGVyUnVi
eVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpzdGF0aWNDcmVhdGVSdWJ5UnVuKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6
UmVuZGVyUnVieVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
Y3JvbGxiYXJQYXJ0OjpSZW5kZXJTY3JvbGxiYXJQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclBhcnQ6OmNyZWF0ZUFub255bW91cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclBhcnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6UmVuZGVyU2VhcmNoRmllbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorICAgICAgICAoUmVuZGVyU2VhcmNoRmllbGQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxl
Q2FwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDZWxsOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6OlJlbmRl
clRhYmxlQ29sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpSZW5k
ZXJUYWJsZVNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpj
cmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KToKKyAgICAgICAgCisg
ICAgICAgICAgICBQYXNzIG51bGwgYW5kIHVzZSBzZXREb2N1bWVudEZvckFub255bW91cygpIGlm
IGEgUmVuZGVyVGV4dCBpcyBjcmVhdGVkIHdpdGggdGhlIERvY3VtZW50IGFzIHJlbmRlcmVyCisg
ICAgICAgICAgICB0byBrZWVwIHRoZW0gd29ya2luZy4gVGV4dCByZW5kZXJlcnMgc2hvdWxkIGJl
IGZhY3RvcmVkIHNpbWlsYXJseSB0byB0aGUgcmVzdC4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2wpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5oOgorICAgICAgICAoUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaDoKKyAgICAgICAgKFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2s6OlJlbmRlclRleHRDb250
cm9sSW5uZXJCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDdWU6OlJlbmRlclRleHRUcmFj
a0N1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdl
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OlJlbmRlck1hdGhNTEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTEJsb2NrOjpjcmVhdGVBbm9ueW1vdXNNYXRoTUxCbG9jayk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEZlbmNlZDo6Y3JlYXRlTWF0aE1MT3BlcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXRlR2x5cGgpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxSb3c6OlJlbmRlck1hdGhNTFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb3c6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250ZW50RGF0YTo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lubGluZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RTcGFuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RTcGFuOjpSZW5k
ZXJTVkdUU3Bhbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmg6CisKIDIwMTMtMDEtMTggIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWFrIEdDIG1hcHMgc2hv
dWxkIGJlIGVhc2llciB0byB1c2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJl
dmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAxNSw3ICszMDE1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNj
cm9sbENvcm5lcigpCiAKICAgICBpZiAoY29ybmVyU3R5bGUpIHsKICAgICAgICAgaWYgKCFtX3Nj
cm9sbENvcm5lcikKLSAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyID0gbmV3IChyZW5kZXJlci0+
cmVuZGVyQXJlbmEoKSkgUmVuZGVyU2Nyb2xsYmFyUGFydChyZW5kZXJlci0+ZG9jdW1lbnQoKSk7
CisgICAgICAgICAgICBtX3Njcm9sbENvcm5lciA9IFJlbmRlclNjcm9sbGJhclBhcnQ6OmNyZWF0
ZUFub255bW91cyhyZW5kZXJlci0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVy
LT5zZXRTdHlsZShjb3JuZXJTdHlsZS5yZWxlYXNlKCkpOwogICAgICAgICBpbnZhbGlkYXRlU2Ny
b2xsQ29ybmVyKGNvcm5lclJlY3QpOwogICAgIH0gZWxzZSBpZiAobV9zY3JvbGxDb3JuZXIpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24g
MTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCwxMyBAQCBSZW5kZXJCbG9jazo6flJlbmRlckJsb2Nr
KCkKICAgICAgICAgcmVtb3ZlQmxvY2tGcm9tRGVzY2VuZGFudEFuZENvbnRhaW5lck1hcHModGhp
cywgZ1Bvc2l0aW9uZWREZXNjZW5kYW50c01hcCwgZ1Bvc2l0aW9uZWRDb250YWluZXJNYXApOwog
fQogCitSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgUmVuZGVyQmxvY2sqIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC0+
cmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soMCk7CisgICAgcmVuZGVyZXItPnNldERvY3VtZW50
Rm9yQW5vbnltb3VzKGRvY3VtZW50KTsKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9CisKIHZvaWQg
UmVuZGVyQmxvY2s6OndpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAgLy8gTWFyayBhcyBiZWluZyBk
ZXN0cm95ZWQgdG8gYXZvaWQgdHJvdWJsZSB3aXRoIG1lcmdlcyBpbiByZW1vdmVDaGlsZCgpLgpA
QCAtMTg0Nyw3ICsxODU0LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlckJsb2NrOjpj
cmVhdAogICAgIGlmICghcnVuSW4tPmlzUmVuZGVyQmxvY2soKSkKICAgICAgICAgbmV3UnVuSW4g
PSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKHJ1bkluLT5ub2RlKCkpOwogICAgIGVs
c2UKLSAgICAgICAgbmV3UnVuSW4gPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShy
dW5Jbi0+bm9kZSgpKTsKKyAgICAgICAgbmV3UnVuSW4gPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJl
bmRlcklubGluZSh0b0VsZW1lbnQocnVuSW4tPm5vZGUoKSkpOwogCiAgICAgcnVuSW4tPm5vZGUo
KS0+c2V0UmVuZGVyZXIobmV3UnVuSW4pOwogICAgIG5ld1J1bkluLT5zZXRTdHlsZShydW5Jbi0+
c3R5bGUoKSk7CkBAIC02NDMwLDkgKzY0MzcsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVG
aXJzdExldHRlclN0eWxlCiAgICAgICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgbmVl
ZHMgdG8gYmUgcmVwbGFjZWQuIENyZWF0ZSBhIG5ldyByZW5kZXJlciBvZiB0aGUgcmlnaHQgdHlw
ZS4KICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdGaXJzdExldHRlcjsKICAgICAgICAgaWYgKHBz
ZXVkb1N0eWxlLT5kaXNwbGF5KCkgPT0gSU5MSU5FKQotICAgICAgICAgICAgbmV3Rmlyc3RMZXR0
ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKKyAgICAg
ICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gUmVuZGVySW5saW5lOjpjcmVhdGVBbm9ueW1vdXMoZG9j
dW1lbnQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld0ZpcnN0TGV0dGVyID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIG5l
d0ZpcnN0TGV0dGVyID0gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91cyhkb2N1bWVudCgpKTsK
ICAgICAgICAgbmV3Rmlyc3RMZXR0ZXItPnNldFN0eWxlKHBzZXVkb1N0eWxlKTsKIAogICAgICAg
ICAvLyBNb3ZlIHRoZSBmaXJzdCBsZXR0ZXIgaW50byB0aGUgbmV3IHJlbmRlcmVyLgpAQCAtNjQ3
Niw5ICs2NDgzLDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZQog
ICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IHN0eWxlRm9yRmlyc3RMZXR0ZXIoZmlyc3RM
ZXR0ZXJCbG9jaywgZmlyc3RMZXR0ZXJDb250YWluZXIpOwogICAgIFJlbmRlck9iamVjdCogZmly
c3RMZXR0ZXIgPSAwOwogICAgIGlmIChwc2V1ZG9TdHlsZS0+ZGlzcGxheSgpID09IElOTElORSkK
LSAgICAgICAgZmlyc3RMZXR0ZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShk
b2N1bWVudCgpKTsKKyAgICAgICAgZmlyc3RMZXR0ZXIgPSBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFu
b255bW91cyhkb2N1bWVudCgpKTsKICAgICBlbHNlCi0gICAgICAgIGZpcnN0TGV0dGVyID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgZmlyc3RM
ZXR0ZXIgPSBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzKGRvY3VtZW50KCkpOwogICAgIGZp
cnN0TGV0dGVyLT5zZXRTdHlsZShwc2V1ZG9TdHlsZSk7CiAgICAgZmlyc3RMZXR0ZXJDb250YWlu
ZXItPmFkZENoaWxkKGZpcnN0TGV0dGVyLCBjdXJyZW50Q2hpbGQpOwogCkBAIC03NzI1LDEwICs3
NzMyLDEwIEBAIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3UKICAgICBF
RGlzcGxheSBuZXdEaXNwbGF5OwogICAgIFJlbmRlckJsb2NrKiBuZXdCb3ggPSAwOwogICAgIGlm
IChkaXNwbGF5ID09IEJPWCB8fCBkaXNwbGF5ID09IElOTElORV9CT1gpIHsKLSAgICAgICAgbmV3
Qm94ID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveChwYXJlbnQtPmRvY3VtZW50KCkgLyogYW5vbnltb3VzIGJveCAqLyk7CisgICAgICAgIG5l
d0JveCA9IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6Y3JlYXRlQW5vbnltb3VzKHBhcmVu
dC0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIG5ld0Rpc3BsYXkgPSBCT1g7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbmV3Qm94ID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2Nr
KHBhcmVudC0+ZG9jdW1lbnQoKSAvKiBhbm9ueW1vdXMgYm94ICovKTsKKyAgICAgICAgbmV3Qm94
ID0gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkpOwogICAg
ICAgICBuZXdEaXNwbGF5ID0gQkxPQ0s7CiAgICAgfQogCkBAIC03NzQyLDcgKzc3NDksNyBAQCBS
ZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255bW91CiAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgQkxPQ0spOwogICAgIG5ld1N0eWxlLT5pbmhlcml0Q29s
dW1uUHJvcGVydGllc0Zyb20ocGFyZW50LT5zdHlsZSgpKTsKIAotICAgIFJlbmRlckJsb2NrKiBu
ZXdCb3ggPSBuZXcgKHBhcmVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2socGFyZW50LT5k
b2N1bWVudCgpIC8qIGFub255bW91cyBib3ggKi8pOworICAgIFJlbmRlckJsb2NrKiBuZXdCb3gg
PSBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzKHBhcmVudC0+ZG9jdW1lbnQoKSk7CiAgICAg
bmV3Qm94LT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdCb3g7
CiB9CkBAIC03NzUyLDcgKzc3NTksNyBAQCBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmNyZWF0
ZUFub255bW91CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgQkxPQ0sp
OwogICAgIG5ld1N0eWxlLT5zZXRDb2x1bW5TcGFuKENvbHVtblNwYW5BbGwpOwogCi0gICAgUmVu
ZGVyQmxvY2sqIG5ld0JveCA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9j
ayhwYXJlbnQtPmRvY3VtZW50KCkgLyogYW5vbnltb3VzIGJveCAqLyk7CisgICAgUmVuZGVyQmxv
Y2sqIG5ld0JveCA9IFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMocGFyZW50LT5kb2N1bWVu
dCgpKTsKICAgICBuZXdCb3gtPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0
dXJuIG5ld0JveDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
QmxvY2soQ29udGFpbmVyTm9kZSopOwogICAgIHZpcnR1YWwgflJlbmRlckJsb2NrKCk7CiAKKyAg
ICBzdGF0aWMgUmVuZGVyQmxvY2sqIGNyZWF0ZUFub255bW91cyhEb2N1bWVudCopOworCiAgICAg
UmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hpbGRyZW4oKSA9PSB2
aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5maXJzdENoaWxkKCk7IH0KICAg
ICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0g
dmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+bGFzdENoaWxkKCk7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksOCArMTE5LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9vcmRpbmFsSXRlcmF0aW9u
OwogfTsKIAotUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3goQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChF
bGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKIHsKICAgICBzZXRD
aGlsZHJlbklubGluZShmYWxzZSk7IC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBiZSBibG9j
ay1sZXZlbAogICAgIG1fc3RyZXRjaGluZ0NoaWxkcmVuID0gZmFsc2U7CkBAIC0xMzAsNiArMTMw
LDEzIEBAIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6flJlbmRlckRlcHIKIHsKIH0KIAor
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KiBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94KiByZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFyZW5hKCkp
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCgwKTsKKyAgICByZW5kZXJlci0+c2V0RG9jdW1l
bnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOworICAgIHJldHVybiByZW5kZXJlcjsKK30KKwogc3Rh
dGljIExheW91dFVuaXQgbWFyZ2luV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewog
ICAgIC8vIEEgbWFyZ2luIGJhc2ljYWxseSBoYXMgdGhyZWUgdHlwZXM6IGZpeGVkLCBwZXJjZW50
YWdlLCBhbmQgYXV0byAodmFyaWFibGUpLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaAkocmV2aXNpb24gMTQw
MTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSwxMSBAQCBjbGFzcyBGbGV4Qm94SXRl
cmF0b3I7CiAKIGNsYXNzIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KENvbnRh
aW5lck5vZGUqKTsKKyAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3goRWxlbWVudCopOwog
ICAgIHZpcnR1YWwgflJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCgpOwogCisgICAgc3RhdGlj
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCogY3JlYXRlQW5vbnltb3VzKERvY3VtZW50Kik7
CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAotUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVyRGV0YWlsc01hcmtl
cihDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlckRl
dGFpbHNNYXJrZXI6OlJlbmRlckRldGFpbHNNYXJrZXIoRWxlbWVudCogZWxlbWVudCkKKyAgICA6
IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkocmV2aXNpb24gMTQwMTk0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckRl
dGFpbHNNYXJrZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckRl
dGFpbHNNYXJrZXIoQ29udGFpbmVyTm9kZSopOworICAgIFJlbmRlckRldGFpbHNNYXJrZXIoRWxl
bWVudCopOwogCiAgICAgZW51bSBPcmllbnRhdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGlhbG9nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRpYWxvZy5oCShyZXZpc2lv
biAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGlhbG9nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgSFRNTERpYWxvZ0VsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlckRpYWxvZyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgUmVuZGVyRGlhbG9nKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgICAgIDogUmVu
ZGVyQmxvY2sobm9kZSkKKyAgICBleHBsaWNpdCBSZW5kZXJEaWFsb2coRWxlbWVudCogZWxlbWVu
dCkKKyAgICAgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQogICAgIHsgfQogCiAgICAgdmlydHVh
bCB+UmVuZGVyRGlhbG9nKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmllbGRzZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1S
ZW5kZXJGaWVsZHNldDo6UmVuZGVyRmllbGRzZXQoQ29udGFpbmVyTm9kZSogZWxlbWVudCkKK1Jl
bmRlckZpZWxkc2V0OjpSZW5kZXJGaWVsZHNldChFbGVtZW50KiBlbGVtZW50KQogICAgIDogUmVu
ZGVyQmxvY2soZWxlbWVudCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZpZWxkc2V0IDogcHVibGljIFJlbmRl
ckJsb2NrIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJGaWVsZHNldChDb250YWluZXJO
b2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyRmllbGRzZXQoRWxlbWVudCopOwogCiAgICAgZW51
bSBGaW5kTGVnZW5kT3B0aW9uIHsgSWdub3JlRmxvYXRpbmdPck91dE9mRmxvdywgSW5jbHVkZUZs
b2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5kZXJCb3gqIGZpbmRMZWdlbmQoRmluZExlZ2Vu
ZE9wdGlvbiA9IElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3cpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAx
NDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsOCArMTIzLDggQEAgc3RydWN0IFJlbmRlckZsZXhpYmxl
Qm94OjpWaW9sYXRpb24gewogfTsKIAogCi1SZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGli
bGVCb3goQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCitSZW5k
ZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goRWxlbWVudCogZWxlbWVudCkKKyAgICA6
IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX29yZGVySXRlcmF0b3IodGhpcykKICAgICAs
IG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lKC0xKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgJKHJldmlzaW9uIDE0MDE5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJl
bmRlckZsZXhpYmxlQm94KENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJGbGV4aWJsZUJveChF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyRmxleGlibGVCb3goKTsKIAogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTQw
MTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoQ29udGFpbmVyTm9kZSogbm9kZSkK
LSAgICA6IFJlbmRlckJsb2NrKG5vZGUpCisvLyBGSVhNRTogUmVuZGVyRmxvd1RocmVhZCBzaG91
bGQgZWl0aGVyIGJlIGFub255bW91cyBvciBiZSBhc3NvY2lhdGVkIHdpdGggc29tZSBFbGVtZW50
LgorLy8gSXQgc2hvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZCBhcyBhIHJlbmRlcmVyIGZvciB0aGUg
RG9jdW1lbnQuCitSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50KQogICAgICwgbV9yZWdpb25zSW52
YWxpZGF0ZWQoZmFsc2UpCiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCh0
cnVlKQogICAgICwgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCkBAIC01
NSw4ICs1Nyw3IEBAIFJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoQ29udGEKICAg
ICAsIG1fZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudChmYWxzZSkKICAgICAsIG1fcGFn
ZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQogewotICAgIEFTU0VSVChub2RlLT5kb2N1bWVu
dCgpLT5jc3NSZWdpb25zRW5hYmxlZCgpKTsKLSAgICBzZXRJc0Fub255bW91cyhmYWxzZSk7Cisg
ICAgQVNTRVJUKGRvY3VtZW50LT5jc3NSZWdpb25zRW5hYmxlZCgpKTsKICAgICBzZXRJblJlbmRl
ckZsb3dUaHJlYWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBA
IHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyUmVnaW9uKj4gUmVuZGUKIAogY2xhc3MgUmVuZGVy
Rmxvd1RocmVhZDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGbG93
VGhyZWFkKENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJGbG93VGhyZWFkKERvY3VtZW50Kik7
CiAgICAgdmlydHVhbCB+UmVuZGVyRmxvd1RocmVhZCgpIHsgfTsKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAkocmV2aXNp
b24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlciA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKFJlbmRlckZ1
bGxTY3JlZW4qIG93bmVyKSAKLSAgICAgICAgOiBSZW5kZXJCbG9jayhvd25lci0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgOiBSZW5kZXJCbG9jaygwKQogICAgICAgICAsIG1fb3duZXIob3duZXIpIAot
ICAgIHsgCisgICAgeworICAgICAgICBzZXREb2N1bWVudEZvckFub255bW91cyhvd25lci0+ZG9j
dW1lbnQoKSk7CiAgICAgfQogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxs
U2NyZWVuUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC01NSwxMyArNTYs
MjAgQEAgdm9pZCBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXI6OndpbGxCZQogICAgIFJlbmRl
ckJsb2NrOjp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotUmVuZGVyRnVsbFNjcmVlbjo6UmVuZGVy
RnVsbFNjcmVlbihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3goZG9jdW1lbnQpCitSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKCkK
KyAgICA6IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCgwKQogICAgICwgbV9wbGFjZWhvbGRl
cigwKQoteyAKK3sKICAgICBzZXRSZXBsYWNlZChmYWxzZSk7IAogfQogCitSZW5kZXJGdWxsU2Ny
ZWVuKiBSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQqIGRvY3VtZW50
KQoreworICAgIFJlbmRlckZ1bGxTY3JlZW4qIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC0+cmVu
ZGVyQXJlbmEoKSkgUmVuZGVyRnVsbFNjcmVlbigpOworICAgIHJlbmRlcmVyLT5zZXREb2N1bWVu
dEZvckFub255bW91cyhkb2N1bWVudCk7CisgICAgcmV0dXJuIHJlbmRlcmVyOworfQorCiB2b2lk
IFJlbmRlckZ1bGxTY3JlZW46OndpbGxCZURlc3Ryb3llZCgpCiB7CiAgICAgaWYgKG1fcGxhY2Vo
b2xkZXIpIHsKQEAgLTEwNyw3ICsxMTUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gY3JlYXRlRnVsCiAKIFJlbmRlck9iamVjdCogUmVuZGVyRnVsbFNjcmVlbjo6d3JhcFJlbmRl
cmVyKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3QqIHBhcmVudCwgRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIFJlbmRlckZ1bGxTY3JlZW4qIGZ1bGxzY3JlZW5SZW5kZXJlciA9
IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW4oZG9jdW1lbnQp
OworICAgIFJlbmRlckZ1bGxTY3JlZW4qIGZ1bGxzY3JlZW5SZW5kZXJlciA9IFJlbmRlckZ1bGxT
Y3JlZW46OmNyZWF0ZUFub255bW91cyhkb2N1bWVudCk7CiAgICAgZnVsbHNjcmVlblJlbmRlcmVy
LT5zZXRTdHlsZShjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7CiAgICAgaWYgKHBhcmVudCAmJiAh
cGFyZW50LT5pc0NoaWxkQWxsb3dlZChmdWxsc2NyZWVuUmVuZGVyZXIsIGZ1bGxzY3JlZW5SZW5k
ZXJlci0+c3R5bGUoKSkpIHsKICAgICAgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5kZXN0cm95KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgJKHJl
dmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuIDogcHVibGljIFJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCopOworICAg
IHN0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiBjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQqKTsKKwog
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4g
IlJlbmRlckZ1bGxTY3JlZW4iOyB9CiAKQEAgLTQ3LDggKzQ4LDkgQEAgcHVibGljOgogICAgIHZv
aWQgdW53cmFwUmVuZGVyZXIoKTsKIAogcHJpdmF0ZToKKyAgICBSZW5kZXJGdWxsU2NyZWVuKCk7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwotICAgIAorCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVyQmxvY2sqIG1fcGxhY2Vob2xkZXI7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0
NSw4IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IG1fbWF4QnJlYWR0aDsKIH07CiAKLVJlbmRl
ckdyaWQ6OlJlbmRlckdyaWQoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2Nr
KG5vZGUpCitSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBS
ZW5kZXJCbG9jayhlbGVtZW50KQogewogICAgIC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBi
ZSBibG9jayBsZXZlbC4KICAgICBzZXRDaGlsZHJlbklubGluZShmYWxzZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgY2xhc3MgR3JpZFRyYWNrOwogCiBjbGFzcyBSZW5kZXJHcmlkIDogcHVibGljIFJl
bmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJHcmlkKENvbnRhaW5lck5vZGUqKTsKKyAg
ICBSZW5kZXJHcmlkKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJHcmlkKCk7CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMTQwMTk0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsOCArNTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShDb250YWluZXJOb2Rl
KiBub2RlKQotICAgIDogUmVuZGVyUmVwbGFjZWQobm9kZSwgSW50U2l6ZSgpKQorUmVuZGVySW1h
Z2U6OlJlbmRlckltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJSZXBsYWNlZChl
bGVtZW50LCBJbnRTaXplKCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dChmYWxz
ZSkKICAgICAsIG1fZGlkSW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQoZmFsc2Up
CiAgICAgLCBtX2lzR2VuZXJhdGVkQ29udGVudChmYWxzZSkKQEAgLTYxLDYgKzYxLDEzIEBAIFJl
bmRlckltYWdlOjpSZW5kZXJJbWFnZShDb250YWluZXJOb2RlKiAKICAgICB1cGRhdGVBbHRUZXh0
KCk7CiB9CiAKK1JlbmRlckltYWdlKiBSZW5kZXJJbWFnZTo6Y3JlYXRlQW5vbnltb3VzKERvY3Vt
ZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGRvY3VtZW50
LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJJbWFnZSgwKTsKKyAgICBpbWFnZS0+c2V0RG9jdW1lbnRG
b3JBbm9ueW1vdXMoZG9jdW1lbnQpOworICAgIHJldHVybiBpbWFnZTsKK30KKwogUmVuZGVySW1h
Z2U6On5SZW5kZXJJbWFnZSgpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VSZXNvdXJjZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkocmV2aXNpb24gMTQwMTk0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDkgKzM1LDExIEBAIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJJ
bWFnZSA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVySW1hZ2Uo
Q29udGFpbmVyTm9kZSopOworICAgIFJlbmRlckltYWdlKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJJbWFnZSgpOwogCisgICAgc3RhdGljIFJlbmRlckltYWdlKiBjcmVhdGVBbm9ueW1v
dXMoRG9jdW1lbnQqKTsKKwogICAgIHZvaWQgc2V0SW1hZ2VSZXNvdXJjZShQYXNzT3duUHRyPFJl
bmRlckltYWdlUmVzb3VyY2U+KTsKIAogICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIGltYWdlUmVz
b3VyY2UoKSB7IHJldHVybiBtX2ltYWdlUmVzb3VyY2UuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDksMTMgKzQ5LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoQ29udGFpbmVyTm9kZSogbm9kZSkK
LSAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KG5vZGUpCitSZW5kZXJJbmxpbmU6OlJlbmRlcklu
bGluZShFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVu
dCkKICAgICAsIG1fYWx3YXlzQ3JlYXRlTGluZUJveGVzKGZhbHNlKQogewogICAgIHNldENoaWxk
cmVuSW5saW5lKHRydWUpOwogfQogCitSZW5kZXJJbmxpbmUqIFJlbmRlcklubGluZTo6Y3JlYXRl
QW5vbnltb3VzKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZW5kZXJJbmxpbmUqIHJlbmRl
cmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKDApOworICAg
IHJlbmRlcmVyLT5zZXREb2N1bWVudEZvckFub255bW91cyhkb2N1bWVudCk7CisgICAgcmV0dXJu
IHJlbmRlcmVyOworfQorCiB2b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKCkKIHsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zMTAsNyArMzE3LDcgQEAgdm9pZCBSZW5kZXJJbmxp
bmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBwb3Np
dGlvbmVkQW5jZXN0b3IgPSBpbkZsb3dQb3NpdGlvbmVkSW5saW5lQW5jZXN0b3IodGhpcykpCiAg
ICAgICAgICAgICBuZXdTdHlsZS0+c2V0UG9zaXRpb24ocG9zaXRpb25lZEFuY2VzdG9yLT5zdHls
ZSgpLT5wb3NpdGlvbigpKTsKIAotICAgICAgICBSZW5kZXJCbG9jayogbmV3Qm94ID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpIC8qIGFub255bW91cyBib3ggKi8p
OworICAgICAgICBSZW5kZXJCbG9jayogbmV3Qm94ID0gUmVuZGVyQmxvY2s6OmNyZWF0ZUFub255
bW91cyhkb2N1bWVudCgpKTsKICAgICAgICAgbmV3Qm94LT5zZXRTdHlsZShuZXdTdHlsZS5yZWxl
YXNlKCkpOwogICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2xkQ29udGludWF0aW9uID0g
Y29udGludWF0aW9uKCk7CiAgICAgICAgIHNldENvbnRpbnVhdGlvbihuZXdCb3gpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMTQwMTk0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMyArMzMsMTcgQEAgY2xhc3MgUG9zaXRpb247CiAKIGNsYXNzIFJlbmRlcklubGlu
ZSA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
UmVuZGVySW5saW5lKENvbnRhaW5lck5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJJbmxpbmUo
RWxlbWVudCopOworCisgICAgc3RhdGljIFJlbmRlcklubGluZSogY3JlYXRlQW5vbnltb3VzKERv
Y3VtZW50Kik7CiAKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IEFTU0VS
VChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsgcmV0dXJuIGNoaWxkcmVuKCktPmZp
cnN0Q2hpbGQoKTsgfQogICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBBU1NF
UlQoY2hpbGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5s
YXN0Q2hpbGQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
bmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKIAorICAgIEVsZW1lbnQq
IG5vZGUoKSBjb25zdCB7IHJldHVybiB0b0VsZW1lbnQoUmVuZGVyQm94TW9kZWxPYmplY3Q6Om5v
ZGUoKSk7IH0KKwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBM
YXlvdXRVbml0IG1hcmdpblRvcCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTczLDcgKzU1NzMs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsCiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBjb3JuZXIgPSByZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSA/IGFj
dHVhbFJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFNDUk9MTEJBUl9DT1JORVIsIGFj
dHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KDApOwogICAg
IGlmIChjb3JuZXIpIHsKICAgICAgICAgaWYgKCFtX3Njcm9sbENvcm5lcikgewotICAgICAgICAg
ICAgbV9zY3JvbGxDb3JuZXIgPSBuZXcgKHJlbmRlcmVyKCktPnJlbmRlckFyZW5hKCkpIFJlbmRl
clNjcm9sbGJhclBhcnQocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBtX3Nj
cm9sbENvcm5lciA9IFJlbmRlclNjcm9sbGJhclBhcnQ6OmNyZWF0ZUFub255bW91cyhyZW5kZXJl
cigpLT5kb2N1bWVudCgpKTsKICAgICAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5zZXRQYXJlbnQo
cmVuZGVyZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zY3JvbGxDb3JuZXItPnNldFN0eWxl
KGNvcm5lci5yZWxlYXNlKCkpOwpAQCAtNTU4OSw3ICs1NTg5LDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6dXBkYXRlUmVzaXplclN0eWxlKCkKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc2l6ZXIg
PSByZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNh
Y2hlZFBzZXVkb1N0eWxlKFJFU0laRVIsIGFjdHVhbFJlbmRlcmVyLT5zdHlsZSgpKSA6IFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+KDApOwogICAgIGlmIChyZXNpemVyKSB7CiAgICAgICAgIGlmICgh
bV9yZXNpemVyKSB7Ci0gICAgICAgICAgICBtX3Jlc2l6ZXIgPSBuZXcgKHJlbmRlcmVyKCktPnJl
bmRlckFyZW5hKCkpIFJlbmRlclNjcm9sbGJhclBhcnQocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSk7
CisgICAgICAgICAgICBtX3Jlc2l6ZXIgPSBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpjcmVhdGVBbm9u
eW1vdXMocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBtX3Jlc2l6ZXItPnNl
dFBhcmVudChyZW5kZXJlcigpKTsKICAgICAgICAgfQogICAgICAgICBtX3Jlc2l6ZXItPnNldFN0
eWxlKHJlc2l6ZXIucmVsZWFzZSgpKTsKQEAgLTU2MDcsNyArNTYwNyw3IEBAIFJlbmRlckxheWVy
KiBSZW5kZXJMYXllcjo6cmVmbGVjdGlvbkxheWUKIHZvaWQgUmVuZGVyTGF5ZXI6OmNyZWF0ZVJl
ZmxlY3Rpb24oKQogewogICAgIEFTU0VSVCghbV9yZWZsZWN0aW9uKTsKLSAgICBtX3JlZmxlY3Rp
b24gPSBuZXcgKHJlbmRlcmVyKCktPnJlbmRlckFyZW5hKCkpIFJlbmRlclJlcGxpY2EocmVuZGVy
ZXIoKS0+ZG9jdW1lbnQoKSk7CisgICAgbV9yZWZsZWN0aW9uID0gUmVuZGVyUmVwbGljYTo6Y3Jl
YXRlQW5vbnltb3VzKHJlbmRlcmVyKCktPmRvY3VtZW50KCkpOwogICAgIG1fcmVmbGVjdGlvbi0+
c2V0UGFyZW50KHJlbmRlcmVyKCkpOyAvLyBXZSBjcmVhdGUgYSAxLXdheSBjb25uZWN0aW9uLgog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJ
KHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJMaXN0SXRlbTo6UmVu
ZGVyTGlzdEl0ZW0oQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJsb2NrKG5vZGUp
CitSZW5kZXJMaXN0SXRlbTo6UmVuZGVyTGlzdEl0ZW0oRWxlbWVudCogZWxlbWVudCkKKyAgICA6
IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX21hcmtlcigwKQogICAgICwgbV9oYXNFeHBs
aWNpdFZhbHVlKGZhbHNlKQogICAgICwgbV9pc1ZhbHVlVXBUb0RhdGUoZmFsc2UpCkBAIC02MCw3
ICs2MCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnN0eWxlRGlkQ2hhbmdlKFN0eWwKICAgICAg
ICAgLy8gdXAgKGUuZy4sIGluIHNvbWUgZGVlcGx5IG5lc3RlZCBsaW5lIGJveCkuIFNlZSBDU1Mz
IHNwZWMuCiAgICAgICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsgCiAgICAgICAg
IGlmICghbV9tYXJrZXIpCi0gICAgICAgICAgICBtX21hcmtlciA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgUmVuZGVyTGlzdE1hcmtlcih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFya2VyID0gUmVuZGVy
TGlzdE1hcmtlcjo6Y3JlYXRlQW5vbnltb3VzKHRoaXMpOwogICAgICAgICBtX21hcmtlci0+c2V0
U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKICAgICB9IGVsc2UgaWYgKG1fbWFya2VyKSB7CiAg
ICAgICAgIG1fbWFya2VyLT5kZXN0cm95KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uaAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAgY2xhc3MgUmVuZGVyTGlzdE1hcmtlcjsKIAogY2xhc3MgUmVuZGVyTGlzdEl0ZW0gOiBwdWJs
aWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlckxpc3RJdGVtKENv
bnRhaW5lck5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJMaXN0SXRlbShFbGVtZW50Kik7CiAK
ICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IGlmICghbV9pc1ZhbHVlVXBUb0RhdGUpIHVwZGF0ZVZh
bHVlTm93KCk7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkocmV2
aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBTdHJpbmcgbGlzdE1h
cmtlclRleHQoRUxpc3RTdHlsZVR5cGUgdHlwCiB9CiAKIFJlbmRlckxpc3RNYXJrZXI6OlJlbmRl
ckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0qIGl0ZW0pCi0gICAgOiBSZW5kZXJCb3goaXRlbS0+
ZG9jdW1lbnQoKSkKKyAgICA6IFJlbmRlckJveCgwKQogICAgICwgbV9saXN0SXRlbShpdGVtKQog
ewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKQEAgLTEwNjksNiArMTA2OSwx
NCBAQCBSZW5kZXJMaXN0TWFya2VyOjp+UmVuZGVyTGlzdE1hcmtlcigpCiAgICAgICAgIG1faW1h
Z2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAorUmVuZGVyTGlzdE1hcmtlciogUmVuZGVyTGlz
dE1hcmtlcjo6Y3JlYXRlQW5vbnltb3VzKFJlbmRlckxpc3RJdGVtKiBpdGVtKQoreworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGl0ZW0tPmRvY3VtZW50KCk7CisgICAgUmVuZGVyTGlzdE1hcmtl
ciogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJMaXN0TWFy
a2VyKGl0ZW0pOworICAgIHJlbmRlcmVyLT5zZXREb2N1bWVudEZvckFub255bW91cyhkb2N1bWVu
dCk7CisgICAgcmV0dXJuIHJlbmRlcmVyOworfQorCiB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5l
d1N0eWxlKQogewogICAgIGlmIChzdHlsZSgpICYmIChuZXdTdHlsZS0+bGlzdFN0eWxlUG9zaXRp
b24oKSAhPSBzdHlsZSgpLT5saXN0U3R5bGVQb3NpdGlvbigpIHx8IG5ld1N0eWxlLT5saXN0U3R5
bGVUeXBlKCkgIT0gc3R5bGUoKS0+bGlzdFN0eWxlVHlwZSgpKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAkocmV2aXNpb24gMTQwMTk0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsOCBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxpc3RTdHlsZVR5cGUs
IGluCiAvLyBUaGUgUmVuZGVyTGlzdE1hcmtlciBhbHdheXMgaGFzIHRvIGJlIGEgY2hpbGQgb2Yg
YSBSZW5kZXJMaXN0SXRlbS4KIGNsYXNzIFJlbmRlckxpc3RNYXJrZXIgOiBwdWJsaWMgUmVuZGVy
Qm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtKik7Cisg
ICAgc3RhdGljIFJlbmRlckxpc3RNYXJrZXIqIGNyZWF0ZUFub255bW91cyhSZW5kZXJMaXN0SXRl
bSopOworCiAgICAgdmlydHVhbCB+UmVuZGVyTGlzdE1hcmtlcigpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CkBAIC00OCw2ICs0OSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZU1hcmdpbnNBbmRDb250ZW50KCk7CiAKIHByaXZhdGU6Cisg
ICAgUmVuZGVyTGlzdE1hcmtlcihSZW5kZXJMaXN0SXRlbSopOworCiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckxpc3RNYXJrZXIiOyB9
CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJ
REU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck1l
ZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5l
cihDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlck1l
ZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5l
cihFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKIHsKIH0KIApA
QCAtNTksOCArNTksOCBAQCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjps
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVuZGVyTWVkaWFDb250cm9s
VGltZURpc3BsYXk6OlJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KENvbnRhaW5lck5vZGUq
IG5vZGUpCi0gICAgOiBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gobm9kZSkKK1JlbmRlck1l
ZGlhQ29udHJvbFRpbWVEaXNwbGF5OjpSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheShFbGVt
ZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KGVsZW1lbnQp
CiB7CiB9CiAKQEAgLTgzLDggKzgzLDggQEAgdm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheTo6bGF5bwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi1SZW5kZXJUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KENvbnRhaW5l
ck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2RlKQorUmVuZGVyVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChFbGVtZW50KiBl
bGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRz
LmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWlu
ZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlck1lZGlhVm9sdW1l
U2xpZGVyQ29udGFpbmVyKENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcihFbGVtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOwpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBSZW5kZXJNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheSA6IHB1YmxpYyBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggewog
cHVibGljOgotICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KENvbnRhaW5lck5vZGUq
KTsKKyAgICBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheShFbGVtZW50Kik7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50IDogcHVibGljIFJlbmRl
ckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KENv
bnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KEVsZW1l
bnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2suY3Bw
CShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5CbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJNdWx0aUNvbHVt
bkJsb2NrOjpSZW5kZXJNdWx0aUNvbHVtbkJsb2NrKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAg
OiBSZW5kZXJCbG9jayhub2RlKQorUmVuZGVyTXVsdGlDb2x1bW5CbG9jazo6UmVuZGVyTXVsdGlD
b2x1bW5CbG9jayhFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkK
ICAgICAsIG1fZmxvd1RocmVhZCgwKQogICAgICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9j
b2x1bW5XaWR0aCgwKQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5C
bG9jazo6ZW5zdXJlQ29sdW0KIAogICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KiBjb2x1bW5TZXQg
PSBmaXJzdENoaWxkKCktPmlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSA/IHRvUmVuZGVyTXVsdGlD
b2x1bW5TZXQoZmlyc3RDaGlsZCgpKSA6IDA7CiAgICAgaWYgKCFjb2x1bW5TZXQpIHsKLSAgICAg
ICAgY29sdW1uU2V0ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNdWx0aUNvbHVtblNldChk
b2N1bWVudCgpLCBmbG93VGhyZWFkKCkpOworICAgICAgICBjb2x1bW5TZXQgPSBSZW5kZXJNdWx0
aUNvbHVtblNldDo6Y3JlYXRlQW5vbnltb3VzKGZsb3dUaHJlYWQoKSk7CiAgICAgICAgIGNvbHVt
blNldC0+c2V0U3R5bGUoUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoc3R5bGUoKSwgQkxPQ0spKTsKICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGNvbHVt
blNldCwgZmlyc3RDaGlsZCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmgJKHJldmlzaW9uIDE0MDE5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAgY2xhc3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhy
ZWFkOwogCiBjbGFzcyBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrIDogcHVibGljIFJlbmRlckJsb2Nr
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrKENvbnRhaW5lck5vZGUqKTsK
LSAgICAKKyAgICBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrKEVsZW1lbnQqKTsKKwogICAgIExheW91
dFVuaXQgY29sdW1uSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5IZWlnaHQ7IH0KICAg
ICB2b2lkIHNldENvbHVtbkhlaWdodChMYXlvdXRVbml0IGNvbHVtbkhlaWdodCkgeyBtX2NvbHVt
bkhlaWdodCA9IGNvbHVtbkhlaWdodDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAkocmV2aXNp
b24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZChDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyRmxvd1Ro
cmVhZChub2RlKQorUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogUmVuZGVyRmxvd1RocmVhZChk
b2N1bWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAkocmV2aXNpb24gMTQwMTk0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkIDogcHVibGljIFJlbmRlckZsb3dUaHJlYWQg
ewogcHVibGljOgotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZChDb250YWluZXJOb2Rl
Kik7CisgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKERvY3VtZW50Kik7CiAgICAgflJl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCShyZXZpc2lv
biAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4IEBAIHVzaW5nIHN0ZDo6bWF4Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0
aUNvbHVtblNldChDb250YWluZXJOb2RlKiBub2RlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhy
ZWFkKQotICAgIDogUmVuZGVyUmVnaW9uU2V0KG5vZGUsIGZsb3dUaHJlYWQpCitSZW5kZXJNdWx0
aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCkKKyAgICA6IFJlbmRlclJlZ2lvblNldCgwLCBmbG93VGhyZWFkKQogICAgICwgbV9jb21w
dXRlZENvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbXB1dGVkQ29sdW1uV2lkdGgoMCkKICAgICAs
IG1fY29tcHV0ZWRDb2x1bW5IZWlnaHQoMCkKQEAgLTQ5LDYgKzQ5LDE0IEBAIFJlbmRlck11bHRp
Q29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblMKIHsKIH0KIAorUmVuZGVyTXVsdGlDb2x1bW5T
ZXQqIFJlbmRlck11bHRpQ29sdW1uU2V0OjpjcmVhdGVBbm9ueW1vdXMoUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmbG93VGhyZWFkLT5k
b2N1bWVudCgpOworICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KiByZW5kZXJlciA9IG5ldyAoZG9j
dW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlck11bHRpQ29sdW1uU2V0KGZsb3dUaHJlYWQpOwor
ICAgIHJlbmRlcmVyLT5zZXREb2N1bWVudEZvckFub255bW91cyhkb2N1bWVudCk7CisgICAgcmV0
dXJuIHJlbmRlcmVyOworfQorCiBMYXlvdXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWdl
TG9naWNhbFRvcEZvck9mZnNldChMYXlvdXRVbml0IG9mZnNldCkgY29uc3QKIHsKICAgICBMYXlv
dXRVbml0IHBvcnRpb25Mb2dpY2FsVG9wID0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBm
bG93VGhyZWFkUG9ydGlvblJlY3QoKS55KCkgOiBmbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIGNvbWUgYmVmb3JlIGFuZCBhZnRlciB0aGUgc3Bhbi4KIGNsYXNz
IFJlbmRlck11bHRpQ29sdW1uU2V0IDogcHVibGljIFJlbmRlclJlZ2lvblNldCB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyTXVsdGlDb2x1bW5TZXQoQ29udGFpbmVyTm9kZSosIFJlbmRlckZsb3dUaHJl
YWQqKTsKLSAgICAKKyAgICBzdGF0aWMgUmVuZGVyTXVsdGlDb2x1bW5TZXQqIGNyZWF0ZUFub255
bW91cyhSZW5kZXJGbG93VGhyZWFkKik7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0
aUNvbHVtblNldCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHVuc2ln
bmVkIGNvbXB1dGVkQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbXB1dGVkQ29sdW1u
Q291bnQ7IH0KQEAgLTg4LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVxdWlyZXNC
YWxhbmNpbmcoYm9vbCBiYWxhbmNpbmcpIHsgbV9yZXF1aXJlc0JhbGFuY2luZyA9IGJhbGFuY2lu
ZzsgfQogCiBwcml2YXRlOgorICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJl
YWQqKTsKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29u
c3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OlJlbmRlck5hbWVkRmxvd1RocmVhZChDb250YWluZXJOb2RlKiBub2RlLCBQYXNzUmVm
UHRyPFdlYktpdE5hbWVkRmxvdz4gbmFtZWRGbG93KQotICAgIDogUmVuZGVyRmxvd1RocmVhZChu
b2RlKQorUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQoRG9jdW1l
bnQqIGRvY3VtZW50LCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmFtZWRGbG93KQorICAg
IDogUmVuZGVyRmxvd1RocmVhZChkb2N1bWVudCkKICAgICAsIG1fbmFtZWRGbG93KG5hbWVkRmxv
dykKICAgICAsIG1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lcih0aGlzLCAmUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjpyZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyRmlyZWQpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5o
CShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBM
aXN0SGFzaFNldDxOb2RlKj4gTmFtZWRGbG93Q29udAogCiBjbGFzcyBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQgOiBwdWJsaWMgUmVuZGVyRmxvd1RocmVhZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKENvbnRhaW5lck5vZGUqLCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4p
OworICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZChEb2N1bWVudCosIFBhc3NSZWZQdHI8V2ViS2l0
TmFtZWRGbG93Pik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93VGhyZWFkKCk7CiAKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQwMTk0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMiw3ICsyMzIsNiBAQCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2RlKiBu
b2RlKQogI2lmbmRlZiBOREVCVUcKICAgICByZW5kZXJPYmplY3RDb3VudGVyLmluY3JlbWVudCgp
OwogI2VuZGlmCi0gICAgQVNTRVJUKG5vZGUpOwogfQogCiBSZW5kZXJPYmplY3Q6On5SZW5kZXJP
YmplY3QoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2
aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICBib29sIGlzQW5vbnltb3VzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNBbm9ueW1v
dXMoKTsgfQotICAgIHZvaWQgc2V0SXNBbm9ueW1vdXMoYm9vbCBiKSB7IG1fYml0ZmllbGRzLnNl
dElzQW5vbnltb3VzKGIpOyB9CiAgICAgYm9vbCBpc0Fub255bW91c0Jsb2NrKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBpbiBzeW5jIHdpdGggYW5vbnlt
b3VzIGJsb2NrIGNyZWF0aW9uIGNvbmRpdGlvbnMgaW4KQEAgLTk5MCw2ICs5ODksOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCk7CiAKKyAgICB2b2lkIHNldERvY3VtZW50Rm9y
QW5vbnltb3VzKERvY3VtZW50KiBkb2N1bWVudCkgeyBBU1NFUlQoaXNBbm9ueW1vdXMoKSk7IG1f
bm9kZSA9IGRvY3VtZW50OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVGcm9tUmVuZGVy
Rmxvd1RocmVhZCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbVJlbmRlckZsb3dUaHJlYWRSZWN1cnNp
dmUoUmVuZGVyRmxvd1RocmVhZCopOwpAQCAtMTA0Miw3ICsxMDQzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICwgbV9wcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fZmxvYXRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcGFpbnRCYWNrZ3JvdW5k
KGZhbHNlKQotICAgICAgICAgICAgLCBtX2lzQW5vbnltb3VzKG5vZGUgPT0gbm9kZS0+ZG9jdW1l
bnQoKSkKKyAgICAgICAgICAgICwgbV9pc0Fub255bW91cyghbm9kZSkKICAgICAgICAgICAgICwg
bV9pc1RleHQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNCb3goZmFsc2UpCiAgICAgICAgICAg
ICAsIG1faXNJbmxpbmUodHJ1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKENvbnRhaW5l
ck5vZGUqIG5vZGUsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpCi0gICAgOiBSZW5kZXJS
ZXBsYWNlZChub2RlLCBJbnRTaXplKCkpCitSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVt
ZW50KiBlbGVtZW50LCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQorICAgIDogUmVuZGVy
UmVwbGFjZWQoZWxlbWVudCwgSW50U2l6ZSgpKQogICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJl
YWQpCiAgICAgLCBtX3BhcmVudE5hbWVkRmxvd1RocmVhZCgwKQogICAgICwgbV9pc1ZhbGlkKGZh
bHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAkocmV2aXNp
b24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDsKIAogY2xhc3MgUmVuZGVyUmVnaW9uIDogcHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBSZW5kZXJSZWdpb24oQ29udGFpbmVyTm9kZSosIFJlbmRlckZsb3dU
aHJlYWQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJSZWdpb24oRWxlbWVudCosIFJlbmRlckZsb3dU
aHJlYWQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
blNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvblNldC5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZWdpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQo
Q29udGFpbmVyTm9kZSogbm9kZSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkKLSAgICA6
IFJlbmRlclJlZ2lvbihub2RlLCBmbG93VGhyZWFkKQorUmVuZGVyUmVnaW9uU2V0OjpSZW5kZXJS
ZWdpb25TZXQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkK
KyAgICA6IFJlbmRlclJlZ2lvbihlbGVtZW50LCBmbG93VGhyZWFkKQogewogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCShyZXZpc2lvbiAxNDAx
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUmVuZGVyRmxvd1RocmVhZDsKIAogY2xh
c3MgUmVuZGVyUmVnaW9uU2V0IDogcHVibGljIFJlbmRlclJlZ2lvbiB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyUmVnaW9uU2V0KENvbnRhaW5lck5vZGUqLCBSZW5kZXJGbG93VGhyZWFkKik7CisgICAg
UmVuZGVyUmVnaW9uU2V0KEVsZW1lbnQqLCBSZW5kZXJGbG93VGhyZWFkKik7CiAgICAgCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsRmxvd1RocmVhZCgpIE9WRVJSSURFOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lv
biAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSArNDIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y29uc3QgaW50IGNEZWZhdWx0V2lkdGggPSAzMDA7CiBjb25zdCBpbnQgY0RlZmF1bHRIZWlnaHQg
PSAxNTA7CiAKLVJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChDb250YWluZXJOb2RlKiBu
b2RlKQotICAgIDogUmVuZGVyQm94KG5vZGUpCitSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFj
ZWQoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJveChlbGVtZW50KQogICAgICwgbV9p
bnRyaW5zaWNTaXplKGNEZWZhdWx0V2lkdGgsIGNEZWZhdWx0SGVpZ2h0KQogewogICAgIHNldFJl
cGxhY2VkKHRydWUpOwogfQogCi1SZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoQ29udGFp
bmVyTm9kZSogbm9kZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKLSAgICA6IFJl
bmRlckJveChub2RlKQorUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCisgICAgOiBSZW5kZXJCb3go
ZWxlbWVudCkKICAgICAsIG1faW50cmluc2ljU2l6ZShpbnRyaW5zaWNTaXplKQogewogICAgIHNl
dFJlcGxhY2VkKHRydWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyUmVwbGFjZWQgOiBwdWJsaWMgUmVuZGVyQm94IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJSZXBsYWNlZChDb250YWluZXJOb2RlKik7Ci0gICAgUmVuZGVy
UmVwbGFjZWQoQ29udGFpbmVyTm9kZSosIGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUp
OworICAgIFJlbmRlclJlcGxhY2VkKEVsZW1lbnQqKTsKKyAgICBSZW5kZXJSZXBsYWNlZChFbGVt
ZW50KiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSk7CiAgICAgdmlydHVhbCB+UmVu
ZGVyUmVwbGFjZWQoKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25z
dCBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGlj
YS5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsaWNhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EoQ29udGFpbmVyTm9k
ZSogbm9kZSkKLSAgICA6IFJlbmRlckJveChub2RlKQorUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVw
bGljYSgpCisgICAgOiBSZW5kZXJCb3goMCkKIHsKICAgICAvLyBUaGlzIGlzIGEgaGFjay4gUmVw
bGljYXMgYXJlIHN5bnRoZXRpYywgYW5kIGRvbid0IHBpY2sgdXAgdGhlIGF0dHJpYnV0ZXMgb2Yg
dGhlCiAgICAgLy8gcmVuZGVyZXJzIGJlaW5nIHJlcGxpY2F0ZWQsIHNvIHRoZXkgYWx3YXlzIHJl
cG9ydCB0aGF0IHRoZXkgYXJlIGlubGluZSwgbm9uLXJlcGxhY2VkLgpAQCAtNDMsNiArNDMsMTMg
QEAgUmVuZGVyUmVwbGljYTo6UmVuZGVyUmVwbGljYShDb250YWluZXJObwogICAgIHNldFJlcGxh
Y2VkKHRydWUpOwogfQogCitSZW5kZXJSZXBsaWNhKiBSZW5kZXJSZXBsaWNhOjpjcmVhdGVBbm9u
eW1vdXMoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlbmRlclJlcGxpY2EqIHJlbmRlcmVy
ID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyUmVwbGljYSgpOworICAgIHJl
bmRlcmVyLT5zZXREb2N1bWVudEZvckFub255bW91cyhkb2N1bWVudCk7CisgICAgcmV0dXJuIHJl
bmRlcmVyOworfQorCiBSZW5kZXJSZXBsaWNhOjp+UmVuZGVyUmVwbGljYSgpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgJKHJldmlzaW9uIDE0MDE5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5k
ZXJSZXBsaWNhIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUmVwbGlj
YShDb250YWluZXJOb2RlKik7CisgICAgc3RhdGljIFJlbmRlclJlcGxpY2EqIGNyZWF0ZUFub255
bW91cyhEb2N1bWVudCopOworCiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclJl
cGxpY2EiOyB9CkBAIC00Nyw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJpdmF0ZToKKyAgICBSZW5k
ZXJSZXBsaWNhKCk7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCShyZXZp
c2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCbG9j
ayogcnVieUFmdGVyQmxvYwogc3RhdGljIFJlbmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXNSdWJ5
SW5saW5lQmxvY2soUmVuZGVyT2JqZWN0KiBydWJ5KQogewogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShydWJ5LT5zdHlsZSgpLCBJTkxJTkVfQkxPQ0spOwotICAgIFJlbmRlckJsb2NrKiBuZXdCbG9j
ayA9IG5ldyAocnVieS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2socnVieS0+ZG9jdW1lbnQo
KSAvKiBhbm9ueW1vdXMgYm94ICovKTsKKyAgICBSZW5kZXJCbG9jayogbmV3QmxvY2sgPSBSZW5k
ZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzKHJ1YnktPmRvY3VtZW50KCkpOwogICAgIG5ld0Jsb2Nr
LT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdCbG9jazsKIH0K
QEAgLTEwOSw4ICsxMDksOCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclJ1YnlSdW4qIGZpbmRSdWJ5
UnVuCiAKIC8vPT09IHJ1YnkgYXMgaW5saW5lIG9iamVjdCA9PT0KIAotUmVuZGVyUnVieUFzSW5s
aW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRl
cklubGluZShub2RlKQorUmVuZGVyUnVieUFzSW5saW5lOjpSZW5kZXJSdWJ5QXNJbmxpbmUoRWxl
bWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlcklubGluZShlbGVtZW50KQogewogfQogCkBAIC0y
MTMsMTEgKzIxMywxMCBAQCB2b2lkIFJlbmRlclJ1YnlBc0lubGluZTo6cmVtb3ZlQ2hpbGQoUmVu
CiAgICAgcnVuLT5yZW1vdmVDaGlsZChjaGlsZCk7CiB9CiAKLQogLy89PT0gcnVieSBhcyBibG9j
ayBvYmplY3QgPT09CiAKLVJlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJSdWJ5QXNCbG9jayhDb250
YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlclJ1YnlBc0Js
b2NrOjpSZW5kZXJSdWJ5QXNCbG9jayhFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxv
Y2soZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJ1YnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eS5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIDxydWJ5PiB3aGVuIHVzZWQgYXMgJ2Rpc3BsYXk6aW5saW5lJwogY2xhc3MgUmVuZGVy
UnVieUFzSW5saW5lIDogcHVibGljIFJlbmRlcklubGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
UnVieUFzSW5saW5lKENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJSdWJ5QXNJbmxpbmUoRWxl
bWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0lubGluZSgpOwogCiAgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3Jl
Q2hpbGQgPSAwKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIC8vIDxydWJ5PiB3aGVuIHVz
ZWQgYXMgJ2Rpc3BsYXk6YmxvY2snIG9yICdkaXNwbGF5OmlubGluZS1ibG9jaycKIGNsYXNzIFJl
bmRlclJ1YnlBc0Jsb2NrIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJSdWJ5QXNCbG9jayhDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyUnVieUFzQmxvY2soRWxl
bWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlBc0Jsb2NrKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJh
c2UuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieUJhc2U6OlJl
bmRlclJ1YnlCYXNlKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2Rl
KQorUmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKCkKKyAgICA6IFJlbmRlckJsb2NrKDAp
CiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKIH0KQEAgLTQ4LDYgKzQ4LDEzIEBAIFJlbmRlclJ1
YnlCYXNlOjp+UmVuZGVyUnVieUJhc2UoKQogewogfQogCitSZW5kZXJSdWJ5QmFzZSogUmVuZGVy
UnVieUJhc2U6OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVu
ZGVyUnVieUJhc2UqIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVu
ZGVyUnVieUJhc2UoKTsKKyAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9j
dW1lbnQpOworICAgIHJldHVybiByZW5kZXJlcjsKK30KKwogYm9vbCBSZW5kZXJSdWJ5QmFzZTo6
aXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyU3R5bGUqKSBjb25zdAog
ewogICAgIHJldHVybiBjaGlsZC0+aXNJbmxpbmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCAr
MzksOSBAQCBjbGFzcyBSZW5kZXJSdWJ5UnVuOwogCiBjbGFzcyBSZW5kZXJSdWJ5QmFzZSA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUnVieUJhc2UoQ29udGFpbmVy
Tm9kZSopOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlCYXNlKCk7CisgICAgCisgICAgc3RhdGlj
IFJlbmRlclJ1YnlCYXNlKiBjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJSdWJ5QmFz
ZSAoYW5vbnltb3VzKSI7IH0KIApAQCAtNDksNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7
CiAKIHByaXZhdGU6CisgICAgUmVuZGVyUnVieUJhc2UoKTsKKwogICAgIHZpcnR1YWwgRVRleHRB
bGlnbiB0ZXh0QWxpZ25tZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCwgZmxvYXQmIGxvZ2ljYWxMZWZ0LCBmbG9hdCYgbG9naWNh
bFdpZHRoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5UnVuLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnlSdW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyUnVieVJ1bjo6
UmVuZGVyUnVieVJ1bihDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9k
ZSkKK1JlbmRlclJ1YnlSdW46OlJlbmRlclJ1YnlSdW4oKQorICAgIDogUmVuZGVyQmxvY2soMCkK
IHsKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKICAgICBzZXRJbmxpbmUodHJ1ZSk7CkBAIC0xOTks
MTcgKzE5OSwxOCBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OnJlbW92ZUNoaWxkKFJlbmRlck9iCiAK
IFJlbmRlclJ1YnlCYXNlKiBSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSgpIGNvbnN0CiB7
Ci0gICAgUmVuZGVyUnVieUJhc2UqIHJiID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJSdWJ5
QmFzZShkb2N1bWVudCgpIC8qIGFub255bW91cyAqLyk7CisgICAgUmVuZGVyUnVieUJhc2UqIHJl
bmRlcmVyID0gUmVuZGVyUnVieUJhc2U6OmNyZWF0ZUFub255bW91cyhkb2N1bWVudCgpKTsKICAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoc3R5bGUoKSwgQkxPQ0spOwogICAgIG5ld1N0eWxlLT5zZXRU
ZXh0QWxpZ24oQ0VOVEVSKTsgLy8gRklYTUU6IHVzZSBXRUJLSVRfQ0VOVEVSPwotICAgIHJiLT5z
ZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwotICAgIHJldHVybiByYjsKKyAgICByZW5kZXJl
ci0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gcmVuZGVyZXI7CiB9
CiAKIFJlbmRlclJ1YnlSdW4qIFJlbmRlclJ1YnlSdW46OnN0YXRpY0NyZWF0ZVJ1YnlSdW4oY29u
c3QgUmVuZGVyT2JqZWN0KiBwYXJlbnRSdWJ5KQogewogICAgIEFTU0VSVChwYXJlbnRSdWJ5ICYm
IHBhcmVudFJ1YnktPmlzUnVieSgpKTsKLSAgICBSZW5kZXJSdWJ5UnVuKiByciA9IG5ldyAocGFy
ZW50UnVieS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyUnVieVJ1bihwYXJlbnRSdWJ5LT5kb2N1bWVu
dCgpIC8qIGFub255bW91cyAqLyk7CisgICAgUmVuZGVyUnVieVJ1biogcnIgPSBuZXcgKHBhcmVu
dFJ1YnktPnJlbmRlckFyZW5hKCkpIFJlbmRlclJ1YnlSdW4oKTsKKyAgICByci0+c2V0RG9jdW1l
bnRGb3JBbm9ueW1vdXMocGFyZW50UnVieS0+ZG9jdW1lbnQoKSk7CiAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHBhcmVudFJ1YnktPnN0eWxlKCksIElOTElORV9CTE9DSyk7CiAgICAgcnItPnNldFN0
eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHJyOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw2IEBAIGNsYXNzIFJlbmRlclJ1YnlUZXh0OwogCiBjbGFzcyBSZW5kZXJSdWJ5UnVu
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJSdWJ5UnVuKENvbnRh
aW5lck5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5UnVuKCk7CiAKICAgICBib29sIGhh
c1J1YnlUZXh0KCkgY29uc3Q7CkBAIC03MSw2ICs3MCw4IEBAIHByb3RlY3RlZDoKICAgICBSZW5k
ZXJSdWJ5QmFzZSogY3JlYXRlUnVieUJhc2UoKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICBSZW5k
ZXJSdWJ5UnVuKCk7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJ5UnVuKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQogICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAkocmV2aXNpb24gMTQw
MTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dChDb250YWlu
ZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlclJ1YnlUZXh0OjpS
ZW5kZXJSdWJ5VGV4dChFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVu
dCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0
LmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
dWJ5VGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVuZGVyUnVieVRleHQgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVi
bGljOgotICAgIFJlbmRlclJ1YnlUZXh0KENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJSdWJ5
VGV4dChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyUnVieVRleHQoKTsKIAogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJSdWJ5
VGV4dCI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXIKICAgICAKICAgICBSZW5kZXJTY3Jv
bGxiYXJQYXJ0KiBwYXJ0UmVuZGVyZXIgPSBtX3BhcnRzLmdldChwYXJ0VHlwZSk7CiAgICAgaWYg
KCFwYXJ0UmVuZGVyZXIgJiYgbmVlZFJlbmRlcmVyKSB7Ci0gICAgICAgIHBhcnRSZW5kZXJlciA9
IG5ldyAob3duaW5nUmVuZGVyZXIoKS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyU2Nyb2xsYmFyUGFy
dChvd25pbmdSZW5kZXJlcigpLT5kb2N1bWVudCgpLCB0aGlzLCBwYXJ0VHlwZSk7CisgICAgICAg
IHBhcnRSZW5kZXJlciA9IFJlbmRlclNjcm9sbGJhclBhcnQ6OmNyZWF0ZUFub255bW91cyhvd25p
bmdSZW5kZXJlcigpLT5kb2N1bWVudCgpLCB0aGlzLCBwYXJ0VHlwZSk7CiAgICAgICAgIG1fcGFy
dHMuc2V0KHBhcnRUeXBlLCBwYXJ0UmVuZGVyZXIpOwogICAgIH0gZWxzZSBpZiAocGFydFJlbmRl
cmVyICYmICFuZWVkUmVuZGVyZXIpIHsKICAgICAgICAgbV9wYXJ0cy5yZW1vdmUocGFydFR5cGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU2Nyb2xs
YmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydChDb250YWluZXJOb2RlKiBub2RlLCBSZW5kZXJT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQotICAgIDogUmVuZGVyQmxv
Y2sobm9kZSkKK1JlbmRlclNjcm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQoUmVuZGVy
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKKyAgICA6IFJlbmRlckJs
b2NrKDApCiAgICAgLCBtX3Njcm9sbGJhcihzY3JvbGxiYXIpCiAgICAgLCBtX3BhcnQocGFydCkK
IHsKQEAgLTQ2LDYgKzQ2LDEzIEBAIFJlbmRlclNjcm9sbGJhclBhcnQ6On5SZW5kZXJTY3JvbGxi
YXJQYXIKIHsKIH0KIAorUmVuZGVyU2Nyb2xsYmFyUGFydCogUmVuZGVyU2Nyb2xsYmFyUGFydDo6
Y3JlYXRlQW5vbnltb3VzKERvY3VtZW50KiBkb2N1bWVudCwgUmVuZGVyU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKK3sKKyAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBy
ZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlclNjcm9sbGJhclBh
cnQoc2Nyb2xsYmFyLCBwYXJ0KTsKKyAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1v
dXMoZG9jdW1lbnQpOworICAgIHJldHVybiByZW5kZXJlcjsKK30KKwogdm9pZCBSZW5kZXJTY3Jv
bGxiYXJQYXJ0OjpsYXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQg
bGF5b3V0Q2hlY2tQb2ludDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuaAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsOCBAQCBjbGFzcyBSZW5kZXJTY3JvbGxiYXI7CiAKIGNsYXNzIFJlbmRlclNjcm9sbGJhclBh
cnQgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclNjcm9sbGJhclBh
cnQoQ29udGFpbmVyTm9kZSosIFJlbmRlclNjcm9sbGJhciogPSAwLCBTY3JvbGxiYXJQYXJ0ID0g
Tm9QYXJ0KTsKKyAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFyUGFydCogY3JlYXRlQW5vbnltb3Vz
KERvY3VtZW50KiwgUmVuZGVyU2Nyb2xsYmFyKiA9IDAsIFNjcm9sbGJhclBhcnQgPSBOb1BhcnQp
OworICAgIAogICAgIHZpcnR1YWwgflJlbmRlclNjcm9sbGJhclBhcnQoKTsKIAogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTY3JvbGxi
YXJQYXJ0IjsgfQpAQCAtNjEsNiArNjIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKIHBy
aXZhdGU6CisgICAgUmVuZGVyU2Nyb2xsYmFyUGFydChSZW5kZXJTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpOwogCiAgICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsUGFydCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCShyZXZpc2lvbiAxNDAx
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MywxNCArNTMsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZW5kZXJTZWFyY2hGaWVs
ZDo6UmVuZGVyU2VhcmNoRmllbGQoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZShub2RlKQorUmVuZGVyU2VhcmNoRmllbGQ6OlJlbmRlclNlYXJj
aEZpZWxkKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUoZWxlbWVudCkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFsc2UpCiAgICAgLCBt
X3NlYXJjaFBvcHVwKDApCiB7Ci0gICAgQVNTRVJUKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSk7Ci0g
ICAgQVNTRVJUKG5vZGUtPnRvSW5wdXRFbGVtZW50KCkpOwotICAgIEFTU0VSVChub2RlLT50b0lu
cHV0RWxlbWVudCgpLT5pc1NlYXJjaEZpZWxkKCkpOworICAgIEFTU0VSVChlbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkpOworICAgIEFTU0VSVChlbGVtZW50LT50b0lucHV0RWxlbWVudCgpKTsKKyAg
ICBBU1NFUlQoZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKS0+aXNTZWFyY2hGaWVsZCgpKTsKIH0K
IAogUmVuZGVyU2VhcmNoRmllbGQ6On5SZW5kZXJTZWFyY2hGaWVsZCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaAkocmV2aXNpb24gMTQwMTk0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51OwogCiBjbGFz
cyBSZW5kZXJTZWFyY2hGaWVsZCA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUs
IHByaXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTZWFyY2hGaWVs
ZChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVyU2VhcmNoRmllbGQoRWxlbWVudCopOwogICAg
IHZpcnR1YWwgflJlbmRlclNlYXJjaEZpZWxkKCk7CiAKICAgICB2b2lkIHVwZGF0ZUNhbmNlbEJ1
dHRvblZpc2liaWxpdHkoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRh
YmxlOjpSZW5kZXJUYWJsZShDb250YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyQmxvY2so
bm9kZSkKK1JlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShFbGVtZW50KiBlbGVtZW50KQorICAgIDog
UmVuZGVyQmxvY2soZWxlbWVudCkKICAgICAsIG1faGVhZCgwKQogICAgICwgbV9mb290KDApCiAg
ICAgLCBtX2ZpcnN0Qm9keSgwKQpAQCAtMTM2Miw3ICsxMzYyLDggQEAgYm9vbCBSZW5kZXJUYWJs
ZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VAogUmVuZGVyVGFibGUqIFJlbmRlclRhYmxlOjpjcmVh
dGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQp
CiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEUpOwotICAg
IFJlbmRlclRhYmxlKiBuZXdUYWJsZSA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5k
ZXJUYWJsZShwYXJlbnQtPmRvY3VtZW50KCkgLyogaXMgYW5vbnltb3VzICovKTsKKyAgICBSZW5k
ZXJUYWJsZSogbmV3VGFibGUgPSBuZXcgKHBhcmVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFi
bGUoMCk7CisgICAgbmV3VGFibGUtPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKHBhcmVudC0+ZG9j
dW1lbnQoKSk7CiAgICAgbmV3VGFibGUtPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAg
ICAgcmV0dXJuIG5ld1RhYmxlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGVudW0gU2tpcEVt
cHR5U2VjdGlvbnNWYWx1ZSB7IERvTm90U2tpcEUKIAogY2xhc3MgUmVuZGVyVGFibGUgOiBwdWJs
aWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlKENvbnRh
aW5lck5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJUYWJsZShFbGVtZW50Kik7CiAgICAgdmly
dHVhbCB+UmVuZGVyVGFibGUoKTsKIAogICAgIC8vIFBlciBDU1MgMyB3cml0aW5nLW1vZGU6ICJU
aGUgZmlyc3QgYW5kIHNlY29uZCB2YWx1ZXMgb2YgdGhlICdib3JkZXItc3BhY2luZycgcHJvcGVy
dHkgcmVwcmVzZW50IHNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAkocmV2aXNpb24gMTQwMTk0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJUYWJsZUNhcHRpb246OlJlbmRlclRhYmxlQ2FwdGlvbihDb250YWluZXJOb2RlKiBub2Rl
KQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKK1JlbmRlclRhYmxlQ2FwdGlvbjo6UmVuZGVyVGFi
bGVDYXB0aW9uKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQog
ewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Fw
dGlvbi5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDYXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgY2xhc3Mg
UmVuZGVyVGFibGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2FwdGlvbiA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVyVGFibGVDYXB0aW9uKENvbnRhaW5l
ck5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJUYWJsZUNhcHRpb24oRWxlbWVudCopOwogICAg
IHZpcnR1YWwgflJlbmRlclRhYmxlQ2FwdGlvbigpOwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDggQEAgc3RydWN0IFNhbWVT
aXplQXNSZW5kZXJUYWJsZUNlbGwgOiBwdWJsaQogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRl
clRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJUYWJsZUNlbGwpLCBSZW5kZXJU
YWJsZUNlbGxfc2hvdWxkX3N0YXlfc21hbGwpOwogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbGxh
cHNlZEJvcmRlclZhbHVlKSA9PSA4LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZV9zaG91bGRfc3RheV9z
bWFsbCk7CiAKLVJlbmRlclRhYmxlQ2VsbDo6UmVuZGVyVGFibGVDZWxsKENvbnRhaW5lck5vZGUq
IG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2RlKQorUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJU
YWJsZUNlbGwoRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAg
ICAgLCBtX2NvbHVtbih1bnNldENvbHVtbkluZGV4KQogICAgICwgbV9jZWxsV2lkdGhDaGFuZ2Vk
KGZhbHNlKQogICAgICwgbV9pbnRyaW5zaWNQYWRkaW5nQmVmb3JlKDApCkBAIC0xMjQ5LDcgKzEy
NDksOCBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2Nyb2xsYmFyc0NoYW5nZWQoCiBSZW5kZXJU
YWJsZUNlbGwqIFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50KQogewogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShwYXJlbnQtPnN0eWxlKCksIFRBQkxFX0NFTEwpOwotICAgIFJlbmRlclRhYmxlQ2VsbCogbmV3
Q2VsbCA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJUYWJsZUNlbGwocGFyZW50
LT5kb2N1bWVudCgpIC8qIGlzIGFub255bW91cyAqLyk7CisgICAgUmVuZGVyVGFibGVDZWxsKiBu
ZXdDZWxsID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlclRhYmxlQ2VsbCgwKTsK
KyAgICBuZXdDZWxsLT5zZXREb2N1bWVudEZvckFub255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkp
OwogICAgIG5ld0NlbGwtPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJu
IG5ld0NlbGw7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgZW51bSBJbmNs
dWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbAogCiBjbGFzcyBSZW5kZXJUYWJsZUNlbGwg
OiBwdWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlclRhYmxl
Q2VsbChDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVDZWxsKEVsZW1l
bnQqKTsKICAgICAKICAgICB1bnNpZ25lZCBjb2xTcGFuKCkgY29uc3QKICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAJKHJldmlzaW9uIDE0
MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJUYWJsZUNvbDo6UmVuZGVyVGFibGVDb2wo
Q29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJveChub2RlKQorUmVuZGVyVGFibGVD
b2w6OlJlbmRlclRhYmxlQ29sKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJCb3goZWxl
bWVudCkKICAgICAsIG1fc3BhbigxKQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJp
YnV0ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCShy
ZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZUNl
bGw7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ29sIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgUmVuZGVyVGFibGVDb2woQ29udGFpbmVyTm9kZSopOworICAgIGV4cGxp
Y2l0IFJlbmRlclRhYmxlQ29sKEVsZW1lbnQqKTsKIAogICAgIFJlbmRlck9iamVjdCogZmlyc3RD
aGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyBy
ZXR1cm4gY2hpbGRyZW4oKS0+Zmlyc3RDaGlsZCgpOyB9CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0
Q2hpbGQoKSBjb25zdCB7IEFTU0VSVChjaGlsZHJlbigpID09IHZpcnR1YWxDaGlsZHJlbigpKTsg
cmV0dXJuIGNoaWxkcmVuKCktPmxhc3RDaGlsZCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDggKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1SZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coQ29udGFpbmVyTm9kZSog
bm9kZSkKLSAgICA6IFJlbmRlckJveChub2RlKQorUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxl
Um93KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJCb3goZWxlbWVudCkKICAgICAsIG1f
cm93SW5kZXgodW5zZXRSb3dJbmRleCkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRy
aWJ1dGVzCkBAIC0yNDksNyArMjQ5LDggQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFu
Z2VkKFdyYXBwZQogUmVuZGVyVGFibGVSb3cqIFJlbmRlclRhYmxlUm93OjpjcmVhdGVBbm9ueW1v
dXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7CiAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9XKTsKLSAgICBSZW5k
ZXJUYWJsZVJvdyogbmV3Um93ID0gbmV3IChwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlclRh
YmxlUm93KHBhcmVudC0+ZG9jdW1lbnQoKSAvKiBpcyBhbm9ueW1vdXMgKi8pOworICAgIFJlbmRl
clRhYmxlUm93KiBuZXdSb3cgPSBuZXcgKHBhcmVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFi
bGVSb3coMCk7CisgICAgbmV3Um93LT5zZXREb2N1bWVudEZvckFub255bW91cyhwYXJlbnQtPmRv
Y3VtZW50KCkpOwogICAgIG5ld1Jvdy0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKICAg
ICByZXR1cm4gbmV3Um93OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhSb3dJbmRleCA9IDB4N0YKIAogY2xhc3MgUmVuZGVyVGFibGVS
b3cgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJUYWJs
ZVJvdyhDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVSb3coRWxlbWVu
dCopOwogCiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyBBU1NFUlQoY2hp
bGRyZW4oKSA9PSB2aXJ0dWFsQ2hpbGRyZW4oKSk7IHJldHVybiBjaGlsZHJlbigpLT5maXJzdENo
aWxkKCk7IH0KICAgICBSZW5kZXJPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IHsgQVNTRVJUKGNo
aWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+bGFzdENo
aWxkKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksOCArODksOCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodEZvCiB9CiAKIAotUmVuZGVy
VGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oQ29udGFpbmVyTm9kZSogbm9kZSkKLSAg
ICA6IFJlbmRlckJveChub2RlKQorUmVuZGVyVGFibGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rp
b24oRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJveChlbGVtZW50KQogICAgICwgbV9j
Q29sKDApCiAgICAgLCBtX2NSb3coMCkKICAgICAsIG1fb3V0ZXJCb3JkZXJTdGFydCgwKQpAQCAt
MTQxNSw3ICsxNDE1LDggQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlv
bgogUmVuZGVyVGFibGVTZWN0aW9uKiBSZW5kZXJUYWJsZVNlY3Rpb246OmNyZWF0ZUFub255bW91
c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkKIHsKICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkocGFyZW50LT5zdHlsZSgpLCBUQUJMRV9ST1dfR1JPVVApOwotICAg
IFJlbmRlclRhYmxlU2VjdGlvbiogbmV3U2VjdGlvbiA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVu
YSgpKSBSZW5kZXJUYWJsZVNlY3Rpb24ocGFyZW50LT5kb2N1bWVudCgpIC8qIGlzIGFub255bW91
cyAqLyk7CisgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBuZXdTZWN0aW9uID0gbmV3IChwYXJlbnQt
PnJlbmRlckFyZW5hKCkpIFJlbmRlclRhYmxlU2VjdGlvbigwKTsKKyAgICBuZXdTZWN0aW9uLT5z
ZXREb2N1bWVudEZvckFub255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkpOwogICAgIG5ld1NlY3Rp
b24tPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld1NlY3Rpb247
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgUmVu
ZGVyVGFibGVSb3c7CiAKIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbiA6IHB1YmxpYyBSZW5kZXJC
b3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlU2VjdGlvbihDb250YWluZXJOb2RlKik7Cisg
ICAgUmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUYWJs
ZVNlY3Rpb24oKTsKIAogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgQVNT
RVJUKGNoaWxkcmVuKCkgPT0gdmlydHVhbENoaWxkcmVuKCkpOyByZXR1cm4gY2hpbGRyZW4oKS0+
Zmlyc3RDaGlsZCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBt
YWtlQ2FwaXRhbGl6ZWQoU3RyaW5nKiBzdHJpCiB9CiAKIFJlbmRlclRleHQ6OlJlbmRlclRleHQo
Tm9kZSogbm9kZSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHIpCi0gICAgIDogUmVuZGVyT2Jq
ZWN0KG5vZGUpCisgICAgIDogUmVuZGVyT2JqZWN0KCFub2RlIHx8IG5vZGUtPmlzRG9jdW1lbnRO
b2RlKCkgPyAwIDogbm9kZSkKICAgICAgLCBtX2hhc1RhYihmYWxzZSkKICAgICAgLCBtX2xpbmVz
RGlydHkoZmFsc2UpCiAgICAgICwgbV9jb250YWluc1JldmVyc2VkVGV4dChmYWxzZSkKQEAgLTE1
MSw2ICsxNTEsMTAgQEAgUmVuZGVyVGV4dDo6UmVuZGVyVGV4dChOb2RlKiBub2RlLCBQYXNzUgog
ICAgICAsIG1fbGFzdFRleHRCb3goMCkKIHsKICAgICBBU1NFUlQobV90ZXh0KTsKKyAgICAvLyBG
SVhNRTogU29tZSBjbGllbnRzIG9mIFJlbmRlclRleHQgKGFuZCBzdWJjbGFzc2VzKSBwYXNzIERv
Y3VtZW50IGFzIG5vZGUgdG8gY3JlYXRlIGFub255bW91cyByZW5kZXJlci4KKyAgICAvLyBUaGV5
IHNob3VsZCBiZSBzd2l0Y2hlZCB0byBwYXNzaW5nIG51bGwgYW5kIHVzaW5nIHNldERvY3VtZW50
Rm9yQW5vbnltb3VzLgorICAgIGlmIChub2RlICYmIG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCisg
ICAgICAgIHNldERvY3VtZW50Rm9yQW5vbnltb3VzKHN0YXRpY19jYXN0PERvY3VtZW50Kj4obm9k
ZSkpOwogCiAgICAgbV9pczhCaXQgPSBtX3RleHQuaXM4Qml0KCk7CiAgICAgaWYgKGlzOEJpdCgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2woQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlckJs
b2NrKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2woRWxlbWVudCog
ZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKHRvVGV4
dEZvcm1Db250cm9sKG5vZGUpKTsKKyAgICBBU1NFUlQodG9UZXh0Rm9ybUNvbnRyb2woZWxlbWVu
dCkpOwogfQogCiBSZW5kZXJUZXh0Q29udHJvbDo6flJlbmRlclRleHRDb250cm9sKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lv
biAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKLSAgICBSZW5kZXJUZXh0Q29udHJvbChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVy
VGV4dENvbnRyb2woRWxlbWVudCopOwogCiAgICAgLy8gVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlv
biBzaG91bGQgbm90IGJlIG1hZGUgcHVibGljIGJlY2F1c2UgaW5uZXJUZXh0RWxlbWVudCBtYXkg
b3V0bGl2ZSB0aGUgcmVuZGVyIHRyZWUuCiAgICAgSFRNTEVsZW1lbnQqIGlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShDb250
YWluZXJOb2RlKiBub2RlKQotICAgIDogUmVuZGVyVGV4dENvbnRyb2wobm9kZSkKK1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShFbGVtZW50KiBl
bGVtZW50KQorICAgIDogUmVuZGVyVGV4dENvbnRyb2woZWxlbWVudCkKIHsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmgJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lKENvbnRhaW5lck5vZGUqKTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZShFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiAxNDAxOTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTMgKzQ5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoQ29udGFpbmVyTm9kZSogbm9kZSkK
LSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShFbGVtZW50KiBlbGVtZW50KQorICAgIDog
UmVuZGVyVGV4dENvbnRyb2woZWxlbWVudCkKICAgICAsIG1fc2hvdWxkRHJhd0NhcHNMb2NrSW5k
aWNhdG9yKGZhbHNlKQogICAgICwgbV9kZXNpcmVkSW5uZXJUZXh0SGVpZ2h0KC0xKQogewotICAg
IEFTU0VSVChub2RlLT5pc0hUTUxFbGVtZW50KCkpOwotICAgIEFTU0VSVChub2RlLT50b0lucHV0
RWxlbWVudCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsKKyAgICBB
U1NFUlQoZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKSk7CiB9CiAKIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg
Y2xhc3MgSFRNTElucHV0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lIDogcHVibGljIFJlbmRlclRleHRDb250cm9sIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUoQ29udGFpbmVyTm9kZSopOworICAgIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZShFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lKCk7CiAgICAgLy8gRklYTUU6IE1vdmUgY3JlYXRlKlN0eWxlKCkgdG8gdGhlaXIgY2xh
c3Nlcy4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4
dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKQEAgLTExMCw3ICsx
MTAsNyBAQCB2b2lkIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGNvbnN0CiAKIGNsYXNz
IFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKENvbnRhaW5lck5vZGUqIG5vZGUp
IDogUmVuZGVyQmxvY2sobm9kZSkgeyB9CisgICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2Nr
KEVsZW1lbnQqIGVsZW1lbnQpIDogUmVuZGVyQmxvY2soZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGhhc0xpbmVJZkVtcHR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRUcmFja0N1
ZS5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGV4dFRyYWNrQ3VlOjpSZW5kZXJUZXh0VHJhY2tD
dWUoVGV4dFRyYWNrQ3VlQm94KiBub2RlKQotICAgIDogUmVuZGVyQmxvY2sobm9kZSkKLSAgICAs
IG1fY3VlKG5vZGUtPmdldEN1ZSgpKQorUmVuZGVyVGV4dFRyYWNrQ3VlOjpSZW5kZXJUZXh0VHJh
Y2tDdWUoVGV4dFRyYWNrQ3VlQm94KiBlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVu
dCkKKyAgICAsIG1fY3VlKGVsZW1lbnQtPmdldEN1ZSgpKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDEwICs2OSw2IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQqIGRvY3VtZW4KICAg
ICAsIG1fcmVuZGVyQ291bnRlckNvdW50KDApCiAgICAgLCBtX2xheW91dFBoYXNlKFJlbmRlclZp
ZXdOb3JtYWxMYXlvdXQpCiB7Ci0gICAgLy8gQ2xlYXIgb3VyIGFub255bW91cyBiaXQsIHNldCBi
ZWNhdXNlIFJlbmRlck9iamVjdCBhc3N1bWVzCi0gICAgLy8gYW55IHJlbmRlcmVyIHdpdGggZG9j
dW1lbnQgYXMgdGhlIG5vZGUgaXMgYW5vbnltb3VzLgotICAgIHNldElzQW5vbnltb3VzKGZhbHNl
KTsKLQogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKICAgICBzZXRJbmxpbmUo
ZmFsc2UpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMCArODUsMTAgQEAgc3RhdGljIHZv
aWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZQogICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0
ZXNTdXNwZW5zaW9uU2NvcGU6OnNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKGNoaWxkLCBwYXJlbnQpOwog
fQogCi1SZW5kZXJXaWRnZXQ6OlJlbmRlcldpZGdldChDb250YWluZXJOb2RlKiBub2RlKQotICAg
IDogUmVuZGVyUmVwbGFjZWQobm9kZSkKK1JlbmRlcldpZGdldDo6UmVuZGVyV2lkZ2V0KEVsZW1l
bnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50KQogICAgICwgbV93aWRn
ZXQoMCkKLSAgICAsIG1fZnJhbWVWaWV3KG5vZGUtPmRvY3VtZW50KCktPnZpZXcoKSkKKyAgICAs
IG1fZnJhbWVWaWV3KGVsZW1lbnQtPmRvY3VtZW50KCktPnZpZXcoKSkKICAgICAvLyBSZWZlcmVu
Y2UgY291bnRpbmcgaXMgdXNlZCB0byBwcmV2ZW50IHRoZSB3aWRnZXQgZnJvbSBiZWluZwogICAg
IC8vIGRlc3Ryb3llZCB3aGlsZSBpbnNpZGUgdGhlIFdpZGdldCBjb2RlLCB3aGljaCBtaWdodCBu
b3QgYmUKICAgICAvLyBhYmxlIHRvIGhhbmRsZSB0aGF0LgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVmKFJlbmRlckFyZW5hKik7CiAKIHByb3RlY3RlZDoK
LSAgICBSZW5kZXJXaWRnZXQoQ29udGFpbmVyTm9kZSopOworICAgIFJlbmRlcldpZGdldChFbGVt
ZW50Kik7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVWaWV3OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBu
YW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAgICAgCi1SZW5kZXJNYXRoTUxCbG9jazo6UmVuZGVyTWF0
aE1MQmxvY2soQ29udGFpbmVyTm9kZSogY29udGFpbmVyKQorUmVuZGVyTWF0aE1MQmxvY2s6OlJl
bmRlck1hdGhNTEJsb2NrKEVsZW1lbnQqIGNvbnRhaW5lcikKICAgICA6IFJlbmRlckZsZXhpYmxl
Qm94KGNvbnRhaW5lcikKICAgICAsIG1faWdub3JlSW5BY2Nlc3NpYmlsaXR5VHJlZShmYWxzZSkK
ICAgICAsIG1fcHJlZmVycmVkTG9naWNhbEhlaWdodChwcmVmZXJyZWRMb2dpY2FsSGVpZ2h0VW5z
ZXQpCkBAIC02NCw3ICs2NCw4IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OmNvbXB1dGVQcmVm
ZXJyZWQKIFJlbmRlck1hdGhNTEJsb2NrKiBSZW5kZXJNYXRoTUxCbG9jazo6Y3JlYXRlQW5vbnlt
b3VzTWF0aE1MQmxvY2soRURpc3BsYXkgZGlzcGxheSkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoc3R5bGUoKSwgZGlzcGxheSk7Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2sqIG5ld0Jsb2NrID0g
bmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCgpIC8qIGlzIGFu
b255bW91cyAqLyk7CisgICAgUmVuZGVyTWF0aE1MQmxvY2sqIG5ld0Jsb2NrID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jaygwKTsKKyAgICBuZXdCbG9jay0+c2V0RG9jdW1l
bnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQoKSk7CiAgICAgbmV3QmxvY2stPnNldFN0eWxlKG5ld1N0
eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld0Jsb2NrOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAkocmV2
aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw4IEBAIGNsYXNzIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOwogCiBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1YmxpYyBSZW5k
ZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWF0aE1MQmxvY2soQ29udGFpbmVy
Tm9kZSopOworICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQqIGNvbnRhaW5lcik7CisKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUq
KSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJKHJldmlzaW9uIDE0MDE5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvciog
UmVuZGVyTWF0aE1MRmVuY2VkCiAgICAgbmV3U3R5bGUtPnNldE1hcmdpbkVuZChMZW5ndGgoKG9w
ZXJhdG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UgPyBnRmVuY2VNYXJnaW5F
bXMgOiBnU2VwYXJhdG9yTWFyZ2luRW5kRW1zKSAqIHN0eWxlKCktPmZvbnRTaXplKCksIEZpeGVk
KSk7CiAgICAgaWYgKG9wZXJhdG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2Up
CiAgICAgICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5ndGgoZ0ZlbmNlTWFyZ2luRW1z
ICogc3R5bGUoKS0+Zm9udFNpemUoKSwgRml4ZWQpKTsKLSAgICBSZW5kZXJNYXRoTUxPcGVyYXRv
ciogbmV3T3BlcmF0b3IgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9y
KG5vZGUoKSAvKiAiYWxtb3N0IGFub255bW91cyIgKi8sIHVDaGFyKTsKKyAgICBSZW5kZXJNYXRo
TUxPcGVyYXRvciogbmV3T3BlcmF0b3IgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhN
TE9wZXJhdG9yKHRvRWxlbWVudChub2RlKCkpLCB1Q2hhcik7CiAgICAgbmV3T3BlcmF0b3ItPnNl
dE9wZXJhdG9yVHlwZShvcGVyYXRvclR5cGUpOwogICAgIG5ld09wZXJhdG9yLT5zZXRTdHlsZShu
ZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdPcGVyYXRvcjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCAr
NDcsOCBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0CiB7CiB9CiAK
LVJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihDb250YWluZXJOb2Rl
KiBub2RlLCBVQ2hhciBvcGVyYXRvckNoYXIpCi0gICAgOiBSZW5kZXJNYXRoTUxCbG9jayhub2Rl
KQorUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlJlbmRlck1hdGhNTE9wZXJhdG9yKEVsZW1lbnQqIGVs
ZW1lbnQsIFVDaGFyIG9wZXJhdG9yQ2hhcikKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1l
bnQpCiAgICAgLCBtX3N0cmV0Y2hIZWlnaHQoMCkKICAgICAsIG1fb3BlcmF0b3IoY29udmVydEh5
cGhlbk1pbnVzVG9NaW51c1NpZ24ob3BlcmF0b3JDaGFyKSkKICAgICAsIG1fb3BlcmF0b3JUeXBl
KERlZmF1bHQpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
dXBkYXRlRnJvbUVsZQogICAgIGJvb2wgc3RyZXRjaERpc2FibGVkID0gZmFsc2U7CiAgICAgCiAg
ICAgLy8gV2UgbWF5IG5lZWQgdGhlIGVsZW1lbnQgbGF0ZXIgaWYgd2UgY2FuJ3Qgc3RyZXRjaC4K
LSAgICBpZiAobm9kZSgpLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSkgeworICAg
IGlmIChub2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICBpZiAoRWxlbWVudCogbW8g
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSkgewogICAgICAgICAgICAgQXRvbWljU3Ry
aW5nIHN0cmV0Y2h5QXR0ciA9IG1vLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OnN0cmV0Y2h5
QXR0cik7CiAgICAgICAgICAgICBzdHJldGNoRGlzYWJsZWQgPSBlcXVhbElnbm9yaW5nQ2FzZShz
dHJldGNoeUF0dHIsICJmYWxzZSIpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MT3BlcmF0b3I6OnVwZGF0ZUZyb21FbGUKICAgICAvLyBFaXRoZXIgc3RyZXRjaCBpcyBkaXNh
YmxlZCBvciB3ZSBkb24ndCBoYXZlIGEgc3RyZXRjaGFibGUgY2hhcmFjdGVyIG92ZXIgdGhlIG1p
bmltdW0gaGVpZ2h0CiAgICAgaWYgKHN0cmV0Y2hEaXNhYmxlZCB8fCAhc2hvdWxkU3RhY2spIHsK
ICAgICAgICAgbV9pc1N0YWNrZWQgPSBmYWxzZTsKLSAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRh
aW5lciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAg
ICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVy
TWF0aE1MQmxvY2sodG9FbGVtZW50KG5vZGUoKSkpOwogICAgICAgICAvLyBUaGlzIGNvbnRhaW5l
ciBkb2Vzbid0IG9mZmVyIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eS4K
ICAgICAgICAgdG9SZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJZ25vcmVJbkFjY2Vz
c2liaWxpdHlUcmVlKHRydWUpOwogICAgICAgICAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlCiAgICAgICAgIFJlbmRlclRleHQqIHRl
eHQgPSAwOwogICAgICAgICBpZiAobV9vcGVyYXRvcikgCiAgICAgICAgICAgICB0ZXh0ID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0KG5vZGUoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlKCZt
X29wZXJhdG9yLCAxKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUoKS0+bm9kZVR5cGUoKSA9PSBO
b2RlOjpFTEVNRU5UX05PREUpCisgICAgICAgIGVsc2UgaWYgKG5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpKQogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIG1vID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUoKSkpCiAgICAgICAgICAgICAgICAgdGV4dCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyVGV4dChub2RlKCksIG1vLT50ZXh0Q29udGVudCgpLnJlcGxhY2UoaHlwaGVuTWludXMsIG1p
bnVzU2lnbikuaW1wbCgpKTsKICAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUg
dGV4dCwgbGVhdmUgaXQgYmxhbmsuCkBAIC0yOTYsNyArMjk2LDcgQEAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyTWF0aE1MT3BlcgogCiBSZW5kZXJCbG9jayogUmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OmNyZWF0ZUdseXBoKFVDaGFyIGdseXBoLCBpbnQgbWF4SGVpZ2h0Rm9yUmVuZGVyZXIs
IGludCBjaGFyUmVsYXRpdmUpCiB7Ci0gICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAo
cmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKKyAgICBSZW5kZXJCbG9j
ayogY29udGFpbmVyID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayh0b0Vs
ZW1lbnQobm9kZSgpKSk7CiAgICAgdG9SZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJ
Z25vcmVJbkFjY2Vzc2liaWxpdHlUcmVlKHRydWUpOwogICAgIGNvbnRhaW5lci0+c2V0U3R5bGUo
Y3JlYXRlU3RhY2thYmxlU3R5bGUobWF4SGVpZ2h0Rm9yUmVuZGVyZXIpKTsKICAgICBhZGRDaGls
ZChjb250YWluZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkocmV2aXNpb24gMTQwMTk0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
bmRlck1hdGhNTE9wZXJhdG9yIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoK
ICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvcihFbGVtZW50Kik7Ci0gICAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IoQ29udGFpbmVyTm9kZSosIFVDaGFyIG9wZXJhdG9yQ2hhcik7CisgICAgUmVuZGVyTWF0
aE1MT3BlcmF0b3IoRWxlbWVudCosIFVDaGFyIG9wZXJhdG9yQ2hhcik7CisKICAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
U3R5bGUqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBNYXRoTUxOYW1lczsKIAotUmVuZGVyTWF0aE1MUm93OjpSZW5kZXJNYXRoTUxSb3coQ29udGFp
bmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKG5vZGUpCitSZW5kZXJNYXRo
TUxSb3c6OlJlbmRlck1hdGhNTFJvdyhFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyTWF0
aE1MQmxvY2soZWxlbWVudCkKIHsKIH0KIApAQCAtNDUsNyArNDUsOCBAQCBSZW5kZXJNYXRoTUxS
b3c6OlJlbmRlck1hdGhNTFJvdyhDb250YWluCiBSZW5kZXJNYXRoTUxSb3cqIFJlbmRlck1hdGhN
TFJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCogcGFyZW50KQogewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnQtPnN0eWxlKCksIEZM
RVgpOwotICAgIFJlbmRlck1hdGhNTFJvdyogbmV3TVJvdyA9IG5ldyAocGFyZW50LT5yZW5kZXJB
cmVuYSgpKSBSZW5kZXJNYXRoTUxSb3cocGFyZW50LT5kb2N1bWVudCgpIC8qIGlzIGFub255bW91
cyAqLyk7CisgICAgUmVuZGVyTWF0aE1MUm93KiBuZXdNUm93ID0gbmV3IChwYXJlbnQtPnJlbmRl
ckFyZW5hKCkpIFJlbmRlck1hdGhNTFJvdygwKTsKKyAgICBuZXdNUm93LT5zZXREb2N1bWVudEZv
ckFub255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkpOwogICAgIG5ld01Sb3ctPnNldFN0eWxlKG5l
d1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIG5ld01Sb3c7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHJldmlz
aW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAogY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJs
b2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxSb3coQ29udGFpbmVyTm9kZSopOworICAg
IFJlbmRlck1hdGhNTFJvdyhFbGVtZW50Kik7CisKICAgICBzdGF0aWMgUmVuZGVyTWF0aE1MUm93
KiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7
CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnRE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuY3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29udGVudERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
IFBhc3NPd25QdHI8Q29udGVudERhdGE+IENvbnRlbnREYXRhOjpjbG8KIAogUmVuZGVyT2JqZWN0
KiBJbWFnZUNvbnRlbnREYXRhOjpjcmVhdGVSZW5kZXJlcihEb2N1bWVudCogZG9jLCBSZW5kZXJT
dHlsZSogcHNldWRvU3R5bGUpIGNvbnN0CiB7Ci0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3
IChkb2MtPnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKGRvYyk7CisgICAgUmVuZGVySW1hZ2Uq
IGltYWdlID0gUmVuZGVySW1hZ2U6OmNyZWF0ZUFub255bW91cyhkb2MpOwogICAgIGltYWdlLT5z
ZXRQc2V1ZG9TdHlsZShwc2V1ZG9TdHlsZSk7CiAgICAgaWYgKG1faW1hZ2UpCiAgICAgICAgIGlt
YWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVh
dGUobV9pbWFnZS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAJKHJldmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHQmxvY2s6OlJl
bmRlclNWR0Jsb2NrKFNWR0VsZW1lbnQqIG5vZGUpIAotICAgIDogUmVuZGVyQmxvY2sobm9kZSkK
K1JlbmRlclNWR0Jsb2NrOjpSZW5kZXJTVkdCbG9jayhTVkdFbGVtZW50KiBlbGVtZW50KQorICAg
IDogUmVuZGVyQmxvY2soZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAkocmV2aXNpb24gMTQwMTk0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
LVJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKENvbnRhaW5lck5vZGUqIG5vZGUpCi0g
ICAgOiBSZW5kZXJJbmxpbmUobm9kZSkKK1JlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5l
KEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCkKIHsKICAgICBz
ZXRBbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkocmV2aXNpb24gMTQwMTk0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNW
R0lubGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJl
bmRlclNWR0lubGluZShDb250YWluZXJOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyU1ZHSW5s
aW5lKEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmUiOyB9CiAgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5jcHAJKHJldmlzaW9uIDE0MDE5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVu
ZGVyU1ZHVFNwYW46OlJlbmRlclNWR1RTcGFuKENvbnRhaW5lck5vZGUqIG5vZGUpCi0gICAgOiBS
ZW5kZXJTVkdJbmxpbmUobm9kZSkKK1JlbmRlclNWR1RTcGFuOjpSZW5kZXJTVkdUU3BhbihFbGVt
ZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyU1ZHSW5saW5lKGVsZW1lbnQpCiB7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgJKHJl
dmlzaW9uIDE0MDE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VFNwYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVuZGVyU1ZHVFNwYW4gOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBSZW5kZXJTVkdUU3BhbihDb250YWluZXJOb2RlKik7CisgICAg
ZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oRWxlbWVudCopOwogICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KIH07CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHRQYXRoLmNwcAkocmV2aXNpb24gMTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZH
VGV4dFBhdGgoQ29udGFpbmVyTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclNWR0lubGluZShub2Rl
KQorUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKEVsZW1lbnQqIGVsZW1lbnQp
CisgICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAkocmV2aXNpb24g
MTQwMTk0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyU1ZHVGV4dFBhdGggOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJTVkdUZXh0UGF0aChDb250YWluZXJOb2RlKik7CisgICAgUmVuZGVy
U1ZHVGV4dFBhdGgoRWxlbWVudCopOwogCiAgICAgUGF0aCBsYXlvdXRQYXRoKCkgY29uc3Q7CiAg
ICAgZmxvYXQgc3RhcnRPZmZzZXQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcAkocmV2aXNpb24gMTQw
MTk0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBSZW5kZXJUYWJsZUNl
bGxEZWF0aFRlc3QgOiBwdWJsaWMgCiAKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsK
LSAgICAgICAgbV9jZWxsID0gbmV3IChhcmVuYSgpKSBSZW5kZXJUYWJsZUNlbGwoZG9jdW1lbnQo
KSk7CisgICAgICAgIG1fY2VsbCA9IFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzKGRv
Y3VtZW50KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1JlbmRlclRhYmxlUm93VGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9SZW5kZXJUYWJsZVJvd1Rlc3Qu
Y3BwCShyZXZpc2lvbiAxNDAxOTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Jl
bmRlclRhYmxlUm93VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgY2xh
c3MgUmVuZGVyVGFibGVSb3dEZWF0aFRlc3QgOiBwdWJsaWMgdAogCiAgICAgdmlydHVhbCB2b2lk
IFNldFVwKCkKICAgICB7Ci0gICAgICAgIG1fcm93ID0gbmV3IChhcmVuYSgpKSBSZW5kZXJUYWJs
ZVJvdyhkb2N1bWVudCgpKTsKKyAgICAgICAgbV9yb3cgPSBSZW5kZXJUYWJsZVJvdzo6Y3JlYXRl
QW5vbnltb3VzKGRvY3VtZW50KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpCg==
</data>
<flag name="commit-queue"
          id="201939"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>