<?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>102031</bug_id>
          
          <creation_ts>2012-11-12 18:31:51 -0800</creation_ts>
          <short_desc>Avoid calling calculateLayerBounds() and convertToLayerCoords() more than once per layer paint</short_desc>
          <delta_ts>2012-11-14 17:14:25 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765102</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 18:31:51 -0800</bug_when>
    <thetext>Avoid calling calculateLayerBounds() and convertToLayerCoords() more than once per layer paint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765104</commentid>
    <comment_count>1</comment_count>
      <attachid>173787</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 18:34:45 -0800</bug_when>
    <thetext>Created attachment 173787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765199</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-12 21:25:34 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/134356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765787</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-13 10:41:26 -0800</bug_when>
    <thetext>Hard to be sure it was this patch, but this looks like an improvement on a bunch of chromium perf bots. In theory, it could also be http://trac.webkit.org/changeset/134351, but that seems unlikely to me.

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_jslibstylejquery/report.html?graph=jslib_style_jquery_jQuery____is__visible_&amp;history=150&amp;rev=167405

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_jslibstylejquery/report.html?graph=jslib_style_jquery_jQuery____show__&amp;history=150&amp;rev=167405

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_jslibstylejquery/report.html?graph=jslib_style_jquery_jQuery___height___x10&amp;history=150&amp;rev=167405

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_jslibstylejquery/report.html?graph=jslib_style_jquery_jQuery___width___x10&amp;history=150&amp;rev=167405

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_jslibstylejquery/report.html?graph=jslib_style_jquery_jQuery___css_color__x100&amp;history=150&amp;rev=167405

http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/dromaeo_jslibstylejquery/report.html?graph=jslib_style_jquery_jQuery___height___x10&amp;history=150&amp;rev=167405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765791</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-13 10:44:39 -0800</bug_when>
    <thetext>I would like to think that it was this patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767500</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-11-14 17:14:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/12705357&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173787</attachid>
            <date>2012-11-12 18:34:45 -0800</date>
            <delta_ts>2012-11-12 18:39:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102031-20121112183244.patch</filename>
            <type>text/plain</type>
            <size>18937</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUxZTVlYTUyNTUyMmEx
NGJhYmM1NmMwOWVjNTg2MTU0OTcxYzk1Mi4uZmZiZDRkYjFkMjM5NGJmY2Y1NzYyNjBhYjI5ZjNi
MzcxZTdlYTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTExLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEF2b2lkIGNhbGxp
bmcgY2FsY3VsYXRlTGF5ZXJCb3VuZHMoKSBhbmQgY29udmVydFRvTGF5ZXJDb29yZHMoKSBtb3Jl
IHRoYW4gb25jZSBwZXIgbGF5ZXIgcGFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoKSBhbmQg
Y2FsbGVlcyBjb3VsZCBlbmQgdXAgY2FsbGluZyBjb252ZXJ0VG9MYXllckNvb3JkcygpCisgICAg
ICAgIGFuZCBjYWxjdWxhdGVMYXllckJvdW5kcygpIG11bHRpcGxlIHRpbWVzIGZvciBwYWludGlu
ZyBhIHNpbmdsZSBsYXllci4KKyAgICAgICAgCisgICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hldGhl
ciB3ZSd2ZSBjb21wdXRlZCB0aGUgcm9vdC1yZWxhdGl2ZSBib3VuZHMgYW5kIGRvIGl0IG9uIGRl
bWFuZC4KKyAgICAgICAgQ29tcHV0ZSB0aGUgb2Zmc2V0IHJlbGF0aXZlIHRvIHJvb3RMYXllciBv
bmNlLCBhbmQgcGFzcyBpdCBhcm91bmQgYXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyCisgICAgICAg
IHRvIGZ1bmN0aW9ucyB0aGF0IG5lZWQgaXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhbGN1bGF0ZUNvbXBv
c2l0ZWRCb3VuZHMpOgorCisyMDEyLTExLTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgorCiAgICAgICAgIENoYW5nZSBjYWxjdWxhdGVMYXllckJvdW5kcygpIGZyb20g
YSBzdGF0aWMgZnVuY3Rpb24gdG8gYSBtZW1iZXIgZnVuY3Rpb24KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjAyMgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjOWQ4NjljY2UzOTNlYmUxMjU1NmNmYjU0NDI4
ZTdhM2VhNjBjNWViLi42N2UxMmZmNWQ3MDIyZmE4NDUxYjZmZGU0N2FlMjc3NzgzZGVmZDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMxNzIsMTcgKzMx
NzIsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBib29sIHNob3VsZFBhaW50T3V0
bGluZSA9IGlzU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFy
czsKICAgICBib29sIHNob3VsZFBhaW50Q29udGVudCA9IG1faGFzVmlzaWJsZUNvbnRlbnQgJiYg
aXNTZWxmUGFpbnRpbmdMYXllciAmJiAhaXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzOwogCi0g
ICAgLy8gQ2FsY3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1c2Ugb25seSB3aGVuIHdl
IG5lZWQgdGhlbS4KLSAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzOwotICAgIENsaXBSZWN0IGRh
bWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3Q7Ci0gICAgTGF5b3V0UG9pbnQg
cGFpbnRPZmZzZXQ7Ci0gICAgCiAgICAgYm9vbCB1c2VDbGlwUmVjdCA9IHRydWU7CiAgICAgR3Jh
cGhpY3NDb250ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBjb250ZXh0OwogICAgIAog
ICAgIC8vIEVuc3VyZSBvdXIgbGlzdHMgYXJlIHVwLXRvLWRhdGUuCiAgICAgdXBkYXRlTGF5ZXJM
aXN0c0lmTmVlZGVkKCk7CiAKKyAgICBMYXlvdXRQb2ludCBvZmZzZXRGcm9tUm9vdDsKKyAgICBj
b252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBvZmZzZXRGcm9tUm9v
dCk7CisKKyAgICBJbnRSZWN0IHJvb3RSZWxhdGl2ZUJvdW5kczsKKyAgICBib29sIHJvb3RSZWxh
dGl2ZUJvdW5kc0NvbXB1dGVkID0gZmFsc2U7CisKICAgICAvLyBBcHBseSBjbGlwLXBhdGggdG8g
Y29udGV4dC4KICAgICBib29sIGhhc0NsaXBQYXRoID0gZmFsc2U7CiAgICAgUmVuZGVyU3R5bGUq
IHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKQEAgLTMxOTIsNyArMzE5MywxMyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aQogICAgICAgICAgICAgaGFzQ2xpcFBhdGggPSB0cnVlOwogICAg
ICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICAgICAgU2hhcGVDbGlwUGF0aE9wZXJh
dGlvbiogY2xpcFBhdGggPSBzdGF0aWNfY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4oc3R5
bGUtPmNsaXBQYXRoKCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgt
PnBhdGgoY2FsY3VsYXRlTGF5ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgMCkpLCBj
bGlwUGF0aC0+d2luZFJ1bGUoKSk7CisKKyAgICAgICAgICAgIGlmICghcm9vdFJlbGF0aXZlQm91
bmRzQ29tcHV0ZWQpIHsKKyAgICAgICAgICAgICAgICByb290UmVsYXRpdmVCb3VuZHMgPSBjYWxj
dWxhdGVMYXllckJvdW5kcyhwYWludGluZ0luZm8ucm9vdExheWVyLCAmb2Zmc2V0RnJvbVJvb3Qs
IDApOworICAgICAgICAgICAgICAgIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgt
PnBhdGgocm9vdFJlbGF0aXZlQm91bmRzKSwgY2xpcFBhdGgtPndpbmRSdWxlKCkpOwogICAgICAg
ICB9CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgZWxzZSBpZiAoc3R5bGUtPmNsaXBQYXRoKCkt
PmdldE9wZXJhdGlvblR5cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CkBA
IC0zMjAwLDggKzMyMDcsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHJlbmRlcmVyKCktPmRvY3VtZW50KCk7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogSXQgZG9lc24ndCB3b3JrIHdpdGggZm9yd2FyZCBvciBleHRlcm5hbCBTVkcg
cmVmZXJlbmNlcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDA1
KQogICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmdl
dEVsZW1lbnRCeUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFnbWVudCgpKSA6IDA7
Ci0gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVz
OjpjbGlwUGF0aFRhZykgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5yZW5kZXJlcigp
KS0+YXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlcigpLCBjYWxjdWxhdGVMYXllckJvdW5k
cyhwYWludGluZ0luZm8ucm9vdExheWVyLCAwKSwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmNsaXBQYXRoVGFnKSAmJiBlbGVtZW50LT5yZW5kZXJlcigpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFyb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkgeworICAgICAgICAg
ICAgICAgICAgICByb290UmVsYXRpdmVCb3VuZHMgPSBjYWxjdWxhdGVMYXllckJvdW5kcyhwYWlu
dGluZ0luZm8ucm9vdExheWVyLCAmb2Zmc2V0RnJvbVJvb3QsIDApOworICAgICAgICAgICAgICAg
ICAgICByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyKj4oZWxlbWVudC0+cmVuZGVyZXIoKSktPmFwcGx5Q2xpcHBpbmdUb0NvbnRl
eHQocmVuZGVyZXIoKSwgcm9vdFJlbGF0aXZlQm91bmRzLCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGNvbnRleHQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKICAgICB9
CkBAIC0zMjEwLDEzICszMjIzLDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyIGZpbHRlclBh
aW50ZXIoZmlsdGVyUmVuZGVyZXIoKSAmJiBwYWludHNXaXRoRmlsdGVycygpKTsKICAgICBpZiAo
ZmlsdGVyUGFpbnRlci5oYXZlRmlsdGVyRWZmZWN0KCkgJiYgIWNvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSkgewotICAgICAgICBMYXlvdXRQb2ludCByb290TGF5ZXJPZmZzZXQ7Ci0gICAgICAg
IGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIHJvb3RMYXllck9m
ZnNldCk7CiAgICAgICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMt
PmZpbHRlckluZm8oKTsKICAgICAgICAgQVNTRVJUKGZpbHRlckluZm8pOwogICAgICAgICBMYXlv
dXRSZWN0IGZpbHRlclJlcGFpbnRSZWN0ID0gZmlsdGVySW5mby0+ZGlydHlTb3VyY2VSZWN0KCk7
Ci0gICAgICAgIGZpbHRlclJlcGFpbnRSZWN0Lm1vdmUocm9vdExheWVyT2Zmc2V0LngoKSwgcm9v
dExheWVyT2Zmc2V0LnkoKSk7Ci0gICAgICAgIGlmIChmaWx0ZXJQYWludGVyLnByZXBhcmVGaWx0
ZXJFZmZlY3QodGhpcywgY2FsY3VsYXRlTGF5ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXll
ciwgMCksIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZmlsdGVyUmVwYWludFJlY3QpKSB7
CisgICAgICAgIGZpbHRlclJlcGFpbnRSZWN0Lm1vdmUob2Zmc2V0RnJvbVJvb3QueCgpLCBvZmZz
ZXRGcm9tUm9vdC55KCkpOworCisgICAgICAgIGlmICghcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0
ZWQpIHsKKyAgICAgICAgICAgIHJvb3RSZWxhdGl2ZUJvdW5kcyA9IGNhbGN1bGF0ZUxheWVyQm91
bmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsICZvZmZzZXRGcm9tUm9vdCwgMCk7CisgICAgICAg
ICAgICByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoZmlsdGVyUGFpbnRlci5wcmVwYXJlRmlsdGVyRWZmZWN0KHRoaXMsIHJvb3RSZWxh
dGl2ZUJvdW5kcywgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmaWx0ZXJSZXBhaW50UmVj
dCkpIHsKICAgICAgICAgICAgIC8vIE5vdyB3ZSBrbm93IGZvciBzdXJlLCB0aGF0IHRoZSBzb3Vy
Y2UgaW1hZ2Ugd2lsbCBiZSB1cGRhdGVkLCBzbyB3ZSBjYW4gcmV2ZXJ0IG91ciB0cmFja2luZyBy
ZXBhaW50IHJlY3QgYmFjayB0byB6ZXJvLgogICAgICAgICAgICAgZmlsdGVySW5mby0+cmVzZXRE
aXJ0eVNvdXJjZVJlY3QoKTsKIApAQCAtMzIzNyw5ICszMjU0LDE0IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpCiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKKworICAgIC8vIENhbGN1
bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlIG9ubHkgd2hlbiB3ZSBuZWVkIHRoZW0u
CisgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kczsKKyAgICBDbGlwUmVjdCBkYW1hZ2VSZWN0LCBj
bGlwUmVjdFRvQXBwbHksIG91dGxpbmVSZWN0OworICAgIExheW91dFBvaW50IHBhaW50T2Zmc2V0
OworCiAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCB8fCBzaG91bGRQYWludE91dGxpbmUgfHwg
aXNQYWludGluZ092ZXJsYXlTY3JvbGxiYXJzKSB7Ci0gICAgICAgIGNhbGN1bGF0ZVJlY3RzKGxv
Y2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAobG9j
YWxQYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlD
bGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVS
ZWN0LAorICAgICAgICBjYWxjdWxhdGVSZWN0cyhsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIs
IGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJU
ZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVj
dHMsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBsYXllckJvdW5kcywgZGFtYWdl
UmVjdCwgY2xpcFJlY3RUb0FwcGx5LCBvdXRsaW5lUmVjdCwgJm9mZnNldEZyb21Sb290LAogICAg
ICAgICAgICAgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMgPyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBS
ZXNwZWN0T3ZlcmZsb3dDbGlwKTsKICAgICAgICAgcGFpbnRPZmZzZXQgPSB0b1BvaW50KGxheWVy
Qm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0lu
Zm8uc3ViUGl4ZWxBY2N1bXVsYXRpb24pOwogICAgICAgICBpZiAodGhpcyA9PSBsb2NhbFBhaW50
aW5nSW5mby5yb290TGF5ZXIpCkBAIC0zMjYyLDcgKzMyODQsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aQogCiAgICAgLy8gV2Ugd2FudCB0byBwYWludCBvdXIgbGF5ZXIsIGJ1dCBvbmx5IGlm
IHdlIGludGVyc2VjdCB0aGUgZGFtYWdlIHJlY3QuCiAgICAgaWYgKHRoaXMgIT0gbG9jYWxQYWlu
dGluZ0luZm8ucm9vdExheWVyIHx8ICEobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50
aW5nT3ZlcmZsb3dDb250ZW50cykpCi0gICAgICAgIHNob3VsZFBhaW50Q29udGVudCAmPSBpbnRl
cnNlY3RzRGFtYWdlUmVjdChsYXllckJvdW5kcywgZGFtYWdlUmVjdC5yZWN0KCksIGxvY2FsUGFp
bnRpbmdJbmZvLnJvb3RMYXllcik7CisgICAgICAgIHNob3VsZFBhaW50Q29udGVudCAmPSBpbnRl
cnNlY3RzRGFtYWdlUmVjdChsYXllckJvdW5kcywgZGFtYWdlUmVjdC5yZWN0KCksIGxvY2FsUGFp
bnRpbmdJbmZvLnJvb3RMYXllciwgJm9mZnNldEZyb21Sb290KTsKICAgICAKICAgICBpZiAobG9j
YWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdCYWNrZ3JvdW5kUGhh
c2UpIHsKICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAmJiAhc2VsZWN0aW9uT25seSkg
ewpAQCAtMzczNCw3ICszNzU2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0
TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICBDbGlw
UmVjdCBiZ1JlY3Q7CiAgICAgQ2xpcFJlY3QgZmdSZWN0OwogICAgIENsaXBSZWN0IG91dGxpbmVS
ZWN0OwotICAgIGNhbGN1bGF0ZVJlY3RzKHJvb3RMYXllciwgaGl0VGVzdExvY2F0aW9uLnJlZ2lv
bigpLCB1c2VUZW1wb3JhcnlDbGlwUmVjdHMgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBSb290UmVs
YXRpdmVDbGlwUmVjdHMsIGhpdFRlc3RSZWN0LCBsYXllckJvdW5kcywgYmdSZWN0LCBmZ1JlY3Qs
IG91dGxpbmVSZWN0LCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOworICAgIGNhbGN1bGF0
ZVJlY3RzKHJvb3RMYXllciwgaGl0VGVzdExvY2F0aW9uLnJlZ2lvbigpLCB1c2VUZW1wb3JhcnlD
bGlwUmVjdHMgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBSb290UmVsYXRpdmVDbGlwUmVjdHMsIGhp
dFRlc3RSZWN0LCBsYXllckJvdW5kcywgYmdSZWN0LCBmZ1JlY3QsIG91dGxpbmVSZWN0LCAwLCBJ
bmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpOwogICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcg
YXJlIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHotZGVwdGggb2YgdGhlIGhpdCBwb2lu
dCBvZiAzZC10cmFuc2Zvcm1lZAogICAgIC8vIGRlc2NlbmRhbnRzLgpAQCAtNDE1NSw3ICs0MTc3
LDggQEAgQ2xpcFJlY3QgUmVuZGVyTGF5ZXI6OmJhY2tncm91bmRDbGlwUmVjdChjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJSZWcKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Y2Fs
Y3VsYXRlUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiBy
ZWdpb24sIENsaXBSZWN0c1R5cGUgY2xpcFJlY3RzVHlwZSwgY29uc3QgTGF5b3V0UmVjdCYgcGFp
bnREaXJ0eVJlY3QsIExheW91dFJlY3QmIGxheWVyQm91bmRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2xpcFJlY3QmIGJhY2tncm91bmRSZWN0LCBDbGlwUmVjdCYgZm9yZWdy
b3VuZFJlY3QsIENsaXBSZWN0JiBvdXRsaW5lUmVjdCwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxl
dmFuY3kgcmVsZXZhbmN5LCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwIHJlc3BlY3RPdmVyZmxv
d0NsaXApIGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwUmVjdCYg
YmFja2dyb3VuZFJlY3QsIENsaXBSZWN0JiBmb3JlZ3JvdW5kUmVjdCwgQ2xpcFJlY3QmIG91dGxp
bmVSZWN0LCBjb25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFu
Y3ksIFNob3VsZFJlc3BlY3RPdmVyZmxvd0NsaXAgcmVzcGVjdE92ZXJmbG93Q2xpcCkgY29uc3QK
IHsKICAgICBpZiAocm9vdExheWVyICE9IHRoaXMgJiYgcGFyZW50KCkpIHsKICAgICAgICAgYmFj
a2dyb3VuZFJlY3QgPSBiYWNrZ3JvdW5kQ2xpcFJlY3Qocm9vdExheWVyLCByZWdpb24sIGNsaXBS
ZWN0c1R5cGUsIHJlbGV2YW5jeSwgcmVzcGVjdE92ZXJmbG93Q2xpcCk7CkBAIC00MTY3LDcgKzQx
OTAsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMoY29uc3QgUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgUmVuZGVyUmVnaW9uKiByZWcKICAgICBvdXRsaW5lUmVjdCA9IGJhY2tn
cm91bmRSZWN0OwogICAgIAogICAgIExheW91dFBvaW50IG9mZnNldDsKLSAgICBjb252ZXJ0VG9M
YXllckNvb3Jkcyhyb290TGF5ZXIsIG9mZnNldCk7CisgICAgaWYgKG9mZnNldEZyb21Sb290KQor
ICAgICAgICBvZmZzZXQgPSAqb2Zmc2V0RnJvbVJvb3Q7CisgICAgZWxzZQorICAgICAgICBjb252
ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIG9mZnNldCk7CiAgICAgbGF5ZXJCb3VuZHMgPSBM
YXlvdXRSZWN0KG9mZnNldCwgc2l6ZSgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgY2xpcCByZWN0
cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIGNoaWxkIGxheWVycy4KQEAgLTQyODMsNyArNDMwOSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlcGFpbnRCbG9ja1NlbGVjdGlvbkdhcHMoKQogICAgICAg
ICByZW5kZXJlcigpLT5yZXBhaW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCi1ib29sIFJlbmRlckxh
eWVyOjppbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywg
Y29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXll
cikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExh
eW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25z
dCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJv
b3QpIGNvbnN0CiB7CiAgICAgLy8gQWx3YXlzIGV4YW1pbmUgdGhlIGNhbnZhcyBhbmQgdGhlIHJv
b3QuCiAgICAgLy8gRklYTUU6IENvdWxkIGVsaW1pbmF0ZSB0aGUgaXNSb290KCkgY2hlY2sgaWYg
d2UgZml4IGJhY2tncm91bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUgUmVuZGVyVmlldwpAQCAtNDMw
NCw3ICs0MzMwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW8KICAgICAgICAgCiAgICAgLy8g
T3RoZXJ3aXNlIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgc2lu
Z2xlIGxheWVyIGFuZCBzZWUgaWYgaXQgaW50ZXJzZWN0cwogICAgIC8vIHRoZSBkYW1hZ2UgcmVj
dC4KLSAgICByZXR1cm4gYm91bmRpbmdCb3gocm9vdExheWVyKS5pbnRlcnNlY3RzKGRhbWFnZVJl
Y3QpOworICAgIHJldHVybiBib3VuZGluZ0JveChyb290TGF5ZXIsIG9mZnNldEZyb21Sb290KS5p
bnRlcnNlY3RzKGRhbWFnZVJlY3QpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpsb2Nh
bEJvdW5kaW5nQm94KCkgY29uc3QKQEAgLTQzNTUsMTUgKzQzODEsMjAgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJMYXllcjo6bG9jYWxCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Ym91bmRpbmdCb3goY29uc3QgUmVuZGVyTGF5
ZXIqIGFuY2VzdG9yTGF5ZXIpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3VuZGlu
Z0JveChjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgY29uc3QgTGF5b3V0UG9pbnQq
IG9mZnNldEZyb21Sb290KSBjb25zdAogeyAgICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IGxv
Y2FsQm91bmRpbmdCb3goKTsKICAgICBpZiAocmVuZGVyZXIoKS0+aXNCb3goKSkKICAgICAgICAg
cmVuZGVyQm94KCktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1bHQpOwogICAgIGVsc2UKICAgICAg
ICAgcmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1
bHQpOworCiAgICAgTGF5b3V0UG9pbnQgZGVsdGE7Ci0gICAgY29udmVydFRvTGF5ZXJDb29yZHMo
YW5jZXN0b3JMYXllciwgZGVsdGEpOworICAgIGlmIChvZmZzZXRGcm9tUm9vdCkKKyAgICAgICAg
ZGVsdGEgPSAqb2Zmc2V0RnJvbVJvb3Q7CisgICAgZWxzZQorICAgICAgICBjb252ZXJ0VG9MYXll
ckNvb3JkcyhhbmNlc3RvckxheWVyLCBkZWx0YSk7CisgICAgCiAgICAgcmVzdWx0Lm1vdmVCeShk
ZWx0YSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzNzMsNyArNDQwNCw3IEBAIEludFJl
Y3QgUmVuZGVyTGF5ZXI6OmFic29sdXRlQm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBw
aXhlbFNuYXBwZWRJbnRSZWN0KGJvdW5kaW5nQm94KHJvb3QoKSkpOwogfQogCi1JbnRSZWN0IFJl
bmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0
b3JMYXllciwgQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncyBmbGFncykgY29uc3QKK0ludFJlY3Qg
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNl
c3RvckxheWVyLCBjb25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QsIENhbGN1bGF0ZUxh
eWVyQm91bmRzRmxhZ3MgZmxhZ3MpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NlbGZQYWludGluZ0xh
eWVyKCkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC00NDI0LDcgKzQ0NTUsNyBAQCBJ
bnRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXll
ciogYW5jZXN0b3JMYXllciwgQ2FsYwogCiAgICAgaWYgKFJlbmRlckxheWVyKiByZWZsZWN0aW9u
ID0gcmVmbGVjdGlvbkxheWVyKCkpIHsKICAgICAgICAgaWYgKCFyZWZsZWN0aW9uLT5pc0NvbXBv
c2l0ZWQoKSkgewotICAgICAgICAgICAgSW50UmVjdCBjaGlsZFVuaW9uQm91bmRzID0gcmVmbGVj
dGlvbi0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgZGVzY2VuZGFudEZsYWdzKTsKKyAgICAg
ICAgICAgIEludFJlY3QgY2hpbGRVbmlvbkJvdW5kcyA9IHJlZmxlY3Rpb24tPmNhbGN1bGF0ZUxh
eWVyQm91bmRzKHRoaXMsIDAsIGRlc2NlbmRhbnRGbGFncyk7CiAgICAgICAgICAgICB1bmlvbkJv
dW5kcy51bml0ZShjaGlsZFVuaW9uQm91bmRzKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NDAs
NyArNDQ3MSw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNv
bnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBDYWxjCiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1
ckxheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQoaSk7CiAgICAgICAgICAgICBpZiAoIWN1ckxheWVy
LT5pc0NvbXBvc2l0ZWQoKSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgY2hpbGRVbmlvbkJv
dW5kcyA9IGN1ckxheWVyLT5jYWxjdWxhdGVMYXllckJvdW5kcyh0aGlzLCBkZXNjZW5kYW50Rmxh
Z3MpOworICAgICAgICAgICAgICAgIEludFJlY3QgY2hpbGRVbmlvbkJvdW5kcyA9IGN1ckxheWVy
LT5jYWxjdWxhdGVMYXllckJvdW5kcyh0aGlzLCAwLCBkZXNjZW5kYW50RmxhZ3MpOwogICAgICAg
ICAgICAgICAgIHVuaW9uQm91bmRzLnVuaXRlKGNoaWxkVW5pb25Cb3VuZHMpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC00NDUxLDcgKzQ0ODIsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVy
OjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwg
Q2FsYwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAg
ICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IHBvc1pPcmRlckxpc3QtPmF0KGkpOwog
ICAgICAgICAgICAgaWYgKCFjdXJMYXllci0+aXNDb21wb3NpdGVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBJbnRSZWN0IGNoaWxkVW5pb25Cb3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5ZXJC
b3VuZHModGhpcywgZGVzY2VuZGFudEZsYWdzKTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IGNo
aWxkVW5pb25Cb3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgMCwg
ZGVzY2VuZGFudEZsYWdzKTsKICAgICAgICAgICAgICAgICB1bmlvbkJvdW5kcy51bml0ZShjaGls
ZFVuaW9uQm91bmRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDQ2Miw3ICs0NDkz
LDcgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVu
ZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIENhbGMKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIg
PSBub3JtYWxGbG93TGlzdC0+YXQoaSk7CiAgICAgICAgICAgICBpZiAoIWN1ckxheWVyLT5pc0Nv
bXBvc2l0ZWQoKSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgY3VyQWJzQm91bmRzID0gY3Vy
TGF5ZXItPmNhbGN1bGF0ZUxheWVyQm91bmRzKHRoaXMsIGRlc2NlbmRhbnRGbGFncyk7CisgICAg
ICAgICAgICAgICAgSW50UmVjdCBjdXJBYnNCb3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5
ZXJCb3VuZHModGhpcywgMCwgZGVzY2VuZGFudEZsYWdzKTsKICAgICAgICAgICAgICAgICB1bmlv
bkJvdW5kcy51bml0ZShjdXJBYnNCb3VuZHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC00NDkwLDcgKzQ1MjEsMTAgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJC
b3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIENhbGMKICAgICB9CiAKICAg
ICBMYXlvdXRQb2ludCBhbmNlc3RvclJlbE9mZnNldDsKLSAgICBjb252ZXJ0VG9MYXllckNvb3Jk
cyhhbmNlc3RvckxheWVyLCBhbmNlc3RvclJlbE9mZnNldCk7CisgICAgaWYgKG9mZnNldEZyb21S
b290KQorICAgICAgICBhbmNlc3RvclJlbE9mZnNldCA9ICpvZmZzZXRGcm9tUm9vdDsKKyAgICBl
bHNlCisgICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKGFuY2VzdG9yTGF5ZXIsIGFuY2VzdG9y
UmVsT2Zmc2V0KTsKICAgICB1bmlvbkJvdW5kcy5tb3ZlQnkoYW5jZXN0b3JSZWxPZmZzZXQpOwog
ICAgIAogICAgIHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KHVuaW9uQm91bmRzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggN2RjYTQ3ZWZmNzg3YzhjMDljZmJk
NmE1M2NhMzBjNzU3NTAzYTEyNS4uOTBlOTdkMWUxMWI2MzUzODY5YjJkZDk5ODgyNTAyMGVkOTFj
Yjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUzMiw4ICs1
MzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBtZXRob2QgZmlndXJlcyBvdXQgb3VyIGxheWVy
Qm91bmRzIGluIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvCiAgICAgLy8gfHJvb3RMYXllcn0uICBJ
dCBhbHNvIGNvbXB1dGVzIG91ciBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kIGNsaXAgcmVjdHMK
ICAgICAvLyBmb3IgcGFpbnRpbmcvZXZlbnQgaGFuZGxpbmcuCisgICAgLy8gUGFzcyBvZmZzZXRG
cm9tUm9vdCBpZiBrbm93bi4KICAgICB2b2lkIGNhbGN1bGF0ZVJlY3RzKGNvbnN0IFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIFJlbmRlclJlZ2lvbiosIENsaXBSZWN0c1R5cGUsIGNvbnN0IExheW91
dFJlY3QmIHBhaW50RGlydHlSZWN0LCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENsaXBSZWN0JiBiYWNrZ3JvdW5kUmVjdCwgQ2xpcFJlY3QmIGZvcmVn
cm91bmRSZWN0LCBDbGlwUmVjdCYgb3V0bGluZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICBDbGlwUmVjdCYgYmFja2dyb3VuZFJlY3QsIENsaXBSZWN0JiBmb3JlZ3JvdW5kUmVjdCwgQ2xp
cFJlY3QmIG91dGxpbmVSZWN0LCBjb25zdCBMYXlvdXRQb2ludCogb2Zmc2V0RnJvbVJvb3QgPSAw
LAogICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kg
PSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCA9
IFJlc3BlY3RPdmVyZmxvd0NsaXApIGNvbnN0OwogCiAgICAgLy8gQ29tcHV0ZSBhbmQgY2FjaGUg
Y2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSBnaXZlbiBsYXllciBhcyB0aGUgcm9vdApAQCAt
NTQ4LDEwICs1NDksMTEgQEAgcHVibGljOgogICAgIExheW91dFJlY3Qgc2VsZkNsaXBSZWN0KCkg
Y29uc3Q7IC8vIFJldHVybnMgdGhlIGJhY2tncm91bmQgY2xpcCByZWN0IG9mIHRoZSBsYXllciBp
biB0aGUgZG9jdW1lbnQncyBjb29yZGluYXRlIHNwYWNlLgogICAgIExheW91dFJlY3QgbG9jYWxD
bGlwUmVjdCgpIGNvbnN0OyAvLyBSZXR1cm5zIHRoZSBiYWNrZ3JvdW5kIGNsaXAgcmVjdCBvZiB0
aGUgbGF5ZXIgaW4gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3BhY2UuCiAKLSAgICBib29sIGludGVy
c2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyKSBjb25zdDsK
KyAgICAvLyBQYXNzIG9mZnNldEZyb21Sb290IGlmIGtub3duLgorICAgIGJvb2wgaW50ZXJzZWN0
c0RhbWFnZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QsIGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91
dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDApIGNvbnN0OwogCi0gICAgLy8gQm91bmRpbmcgYm94
IHJlbGF0aXZlIHRvIHNvbWUgYW5jZXN0b3IgbGF5ZXIuCi0gICAgTGF5b3V0UmVjdCBib3VuZGlu
Z0JveChjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyKSBjb25zdDsKKyAgICAvLyBCb3VuZGlu
ZyBib3ggcmVsYXRpdmUgdG8gc29tZSBhbmNlc3RvciBsYXllci4gUGFzcyBvZmZzZXRGcm9tUm9v
dCBpZiBrbm93bi4KKyAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94KGNvbnN0IFJlbmRlckxheWVy
KiByb290TGF5ZXIsIGNvbnN0IExheW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDApIGNvbnN0
OwogICAgIC8vIEJvdW5kaW5nIGJveCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhpcyBsYXllci4K
ICAgICBMYXlvdXRSZWN0IGxvY2FsQm91bmRpbmdCb3goKSBjb25zdDsKICAgICAvLyBQaXhlbCBz
bmFwcGVkIGJvdW5kaW5nIGJveCByZWxhdGl2ZSB0byB0aGUgcm9vdC4KQEAgLTU2NSw3ICs1Njcs
OCBAQCBwdWJsaWM6CiAgICAgICAgIERlZmF1bHRDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzID0g
IEluY2x1ZGVTZWxmVHJhbnNmb3JtIHwgVXNlTG9jYWxDbGlwUmVjdElmUG9zc2libGUgfCBJbmNs
dWRlTGF5ZXJGaWx0ZXJPdXRzZXRzCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIENhbGN1
bGF0ZUxheWVyQm91bmRzRmxhZ3M7Ci0gICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kcyhj
b25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFn
cyA9IERlZmF1bHRDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzKSBjb25zdDsKKyAgICAvLyBDYW4g
cGFzcyBvZmZzZXRGcm9tUm9vdCBpZiBrbm93bi4KKyAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVy
Qm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zdCBMYXlvdXRQb2lu
dCogb2Zmc2V0RnJvbVJvb3QgPSAwLCBDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzID0gRGVmYXVs
dENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MpIGNvbnN0OwogICAgIAogICAgIC8vIFdBUk5JTkc6
IFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG9mZnNldCBmb3IgdGhlIHBhcmVudCBhcyB0aGlzIGlz
IHdoYXQgdXBkYXRlTGF5ZXJQb3NpdGlvbnMgZXhwZWN0cy4KICAgICBMYXlvdXRQb2ludCBjb21w
dXRlT2Zmc2V0RnJvbVJvb3QoYm9vbCYgaGFzTGF5ZXJPZmZzZXQpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBi
ZDg1YmMzYTc4MmIxNjU2ZDMwYTExMzk4Y2JhNzZkMjYwNjhmMjM1Li45NjAyOWMwMGE1YjQ3NzEx
MjFjNWEwYmNiZjg4Yzk4ZTQzNjUzN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNjY1LDcgKzY2NSw3IEBAIEludFJl
Y3QgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGNvbnN0
IFJlbmRlckxheWVyKiBsYXllCiB7CiAgICAgaWYgKCFjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQog
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAgIHJldHVybiBsYXllci0+Y2FsY3VsYXRlTGF5
ZXJCb3VuZHMoYW5jZXN0b3JMYXllciwgUmVuZGVyTGF5ZXI6OkRlZmF1bHRDYWxjdWxhdGVMYXll
ckJvdW5kc0ZsYWdzIHwgUmVuZGVyTGF5ZXI6OkV4Y2x1ZGVIaWRkZW5EZXNjZW5kYW50cyk7Cisg
ICAgcmV0dXJuIGxheWVyLT5jYWxjdWxhdGVMYXllckJvdW5kcyhhbmNlc3RvckxheWVyLCAwLCBS
ZW5kZXJMYXllcjo6RGVmYXVsdENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MgfCBSZW5kZXJMYXll
cjo6RXhjbHVkZUhpZGRlbkRlc2NlbmRhbnRzKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmxheWVyV2FzQWRkZWQoUmVuZGVyTGF5ZXIqIC8qcGFyZW50Ki8sIFJlbmRlckxheWVy
KiAvKmNoaWxkKi8pCg==
</data>
<flag name="review"
          id="188596"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>