LyogSGV5LCBFbWFjcywgb3BlbiB0aGlzIGZpbGUgd2l0aCAtKi0gY29kaW5nOiBjcDEyNTAgLSotCiAqCiAqIFdpbmUgY29tbWFuZCBwcm9tcHQKICogQ3plY2ggTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDE5OTkgRCBBIFBpY2tsZXMKICogQ29weXJpZ2h0IChDKSAyMDA0IERhdmlkIEtyZWRiYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKCi8qIEN6ZWNoIHN0cmluZ3MgaW4gQ1AxMjUwICovCgpTVFJJTkdUQUJMRQp7CiAgV0NNRF9BVFRSSUIsICJO4XBvduxkYSBrIEFUVFJJQlxuIgogIFdDTURfQ0FMTCwKIkNBTEwgPGThdmtvdv0gc291Ym9yPiBqZSB1nu124W4ga2Ugc3B1mnTsbu0gcPjta2F6+VxuXAp6IGppbulobyBk4XZrb3bpaG8gc291Ym9ydS4gS2R5niBzZSBi7Gggdm9sYW7paG8gZOF2a2926WhvIHNvdWJvcnUgdWtvbujtLCBrb250cm9sYSBzZSB2cuF07VxuXAp2b2xhau1j7W11IHNvdWJvcnUuIFD47WtheiBDQUxMIG35nmUgcPhlZOF2YXQgcGFyYW1ldHJ5XG5cCnZvbGFu6SBwcm9jZWR1+GUuXG5cClxuXApabexueSB2IGRlZmF1bHRu7W0gYWRyZXPh+GksIHByb23sbm79Y2ggcHJvc3T4ZWTtIGF0ZC4sIHVk7GxhbulcblwKdm9sYW5vdSBwcm9jZWR1cm91IGpzb3UgemTsZOxueSB2b2xhau1j7W0uXG4iCgogIFdDTURfQ0QsICAgICAiTuFwb3bsZGEgayBDRFxuIgogIFdDTURfQ0hESVIsICAiTuFwb3bsZGEgayBDSERJUlxuIgoKICBXQ01EX0NMUywgICAgIkNMUyB2eW1hnmUgb2JyYXpvdmt1IHRlcm1pbuFsdVxuIgoKICBXQ01EX0NPUFksICAgIk7hcG927GRhIGsgQ09QWVxuIgogIFdDTURfQ1RUWSwgICAiTuFwb3bsZGEgayBDVFRZXG4iCiAgV0NNRF9EQVRFLCAgICJO4XBvduxkYSBrIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIk7hcG927GRhIGsgREVMXG4iCiAgV0NNRF9ESVIsICAgICJO4XBvduxkYSBrIERJUlxuIgoKICBXQ01EX0VDSE8sCiJFQ0hPIDz4ZXTsemVjPiB6b2JyYXrtIDz4ZXTsemVjPiBuYSBwb3We7XZhbultIHRlcm1pbuFsb3bpbSB6YfjtemVu7S5cblwKXG5cCkVDSE8gT04genD5c29i7SwgnmUgdpplY2hueSBu4XNsZWR1au1j7SBw+O1rYXp5IHYgZOF2a2926W0gc291Ym9ydSBidWRvdVxuXAp6b2JyYXplbnkgbmEgdGVybWlu4WxvdultIHph+O16ZW7tIHD4ZWQgc3b9bSBzcHWadOxu7W0uXG5cClxuXApFQ0hPIE9GRiB2eXBpc2924W7tIHD47WthevkgemFr4Z5lIChFQ0hPIGplIE9GRiBkZWZhdWx0buwuXG5cClD4ZWRzYWTtLWxpIHNlIHD47WthenUgRUNITyBPRkYgQCBuZWJ1ZGUgcPjta2F6IEVDSE8gT0ZGIHZ5cHPhblxuXApuYSB0ZXJtaW7hbG926SB6YfjtemVu7S5cbiIKCiAgV0NNRF9FUkFTRSwgICJO4XBvduxkYSBrIEVSQVNFXG4iCgogIFdDTURfRk9SLAoiUPjta2F6IEZPUiB2eWtvbuEgemFkYW5vdSBha2NpIHBybyBrYZ5k/SB6ZSB6YWRhbukgc2t1cGlueSBzb3Vib3L5LlxuXApcblwKU3ludGF4ZTogRk9SICVwcm9t7G5u4SBJTiAoc2t1cGluYSBzb3Vib3L5KSBETyBha2NlXG5cClxuXApWIHByb2dyYW11IHdjbWQgbmVu7SB0+GViYSB6ZHZvam92YXQgem5hayAlIHD4ZWQgcHJvbexubm91IHD4aSBwb3WeaXTtIHD47WthenVcblwgRk9SIHYgZOF2a2926W0gc291Ym9ydS5cbiIKCiAgV0NNRF9HT1RPLAoiUPjta2F6IEdPVE8gcPhlZOEgdv1rb24gbmEgamlu6SBt7XN0b1xuXAp2IGThdmtvdultIHNvdWJvcnUuXG5cClxuXApO4XbsmnTtLCBrdGVy/W0gc2Ugb3puYeh1amUgY+1sIHNrb2t1IEdPVE8gbfmeZSBi/XQgYZ4gMjU1IHpuYWv5XG5cCmRsb3Vo6S4gTmVzbe0gdpphayBvYnNhaG92YXQgbWV6ZXJ5IChvZGxpmm7pIGNob3bhbu0gb2Qgamlu/WNoIG9wZXJh6G7tY2hcblwKc3lzdOlt+SkuIEV4aXN0dWrtLWxpIGR27CBuZWJvIHbtY2Ugc3Rlam79Y2ggbuF27Jp07SB2IGplZG5vbSBk4XZrb3bpbVxuXApzb3Vib3J1LCBwYWsgcHJ2bu0gYnVkZSB2eWtvbuFuby4gU2tvayBHT1RPIG5hIG5lZXhpc3R1au1j7SBu4XbsmnTtXG5cCnVrb27o7SB2/WtvbiBk4XZrb3bpaG8gc291Ym9ydS5cblwKXG5cCkdPVE8gc2UgbmVk4SBwb3We7XQgaW50ZXJha3Rpdm7sLlxuIgoKICBXQ01EX0hFTFAsICAgIk7hcG927GRhIGsgSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYgc2xvdZ7tIGsgcG9kbe1u7G7pbXUgdv1rb251IHD47WthevkuXG5cClxuXApTeW50YXhlOiBJRiBbTk9UXSBFWElTVCBzb3Vib3IgcPjta2F6XG5cCgkgSUYgW05PVF0g+GV07HplYzE9PfhldOx6ZWMyIHD47WthelxuXAoJIElGIFtOT1RdIEVSUk9STEVWRUwg6O1zbG8gcPjta2F6XG5cClxuXApWZSBkcnVo6SBmb3Jt7CBw+O1rYXp1IG11c+0gYv10IPhldOx6ZWMxIGEg+GV07HplYzIgdXphdvhlbnkgdiBkdm9qaXT9Y2hcblwKdXZvem92a+FjaC4gU3Jvdm7hbu0gbmVu7SBjaXRsaXbpIG5hIHZlbGlrb3N0IHDtc21lbi5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCBuYXN0YXZ1amUgam1lbm92a3Ugc3Zhemt1LWRpc2t1LiAgXG5cClxuXApTeW50YXhlOiBMQUJFTCBbZGlzazpdXG5cCkJ1ZGV0ZSB2eXp24W5pIGsgemFk4W7tIGptZW5vdmt5LlxuXApKbWVub3ZrdSBzaSBt+Z5ldGUgem9icmF6aXQgcPjta2F6ZW0gVk9MLlxuIgoKICBXQ01EX01ELCAgICAgIk7hcG927GRhIGsgTURcbiIKICBXQ01EX01LRElSLCAgIk7hcG927GRhIGsgTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHD4ZXN1bmUgc291Ym9yIOhpIGFkcmVz4fggbmEgamlu6SBt7XN0byB2IHNvdWJvcm926W0gc3lzdOltdS5cblwKXG5cCkplLWxpIHD4ZXNvdXbhbiBhZHJlc+H4LCBqc291IHD4ZXN1bnV0eSB2mmVjaG55IGplaG8gcG9kYWRyZXPh+GUgYSBzb3Vib3J5LlxuXApcblwKTU9WRSBzZWyeZSBqc291LWxpIHpkcm9qb3bhIGEgY+1sb3bhIG9ibGFzdCBuYSBqZWRub3Rr4WNoIHMgamlu/W1pIERPUyBw7XNtZW55IGRpc2v5LlxuIgoKICBXQ01EX1BBVEgsCiJQQVRIIHpvYnJheu0g6Gkgem3sbu0gY2VzdHksIHYgbmljaJ4gd2NtZCBobGVk4SBzb3Vib3J5LlxuXApcblwKUEFUSCBiZXogYXJndW1lbnT5IHpvYnJheu0gbW9tZW504Wxu7CBwbGF0bukgbmFzdGF2ZW7tIChw+GVkIHBydm7tIHpt7G5vdVxuXApqZSB0byBob2Rub3RhIHD4ZXZ6YXThIHplIHNvdWJvcnUgd2luZS5jb25mKS4gS2Ugem3sbuwgcPhpcG9qdGUgayBw+O1rYXp1XG5cClBBVEggbm92b3UgY2VzdHUuXG5cClxuXApKZSB0YWt06Z4gbW+ebukgem3sbml0IFBBVEggcG91nml07W0gcHJvbexubukgcHJvc3T4ZWTtIFBBVEgsXG5cCm5hcPjta2xhZDpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcCBcbiIKCiAgV0NNRF9QQVVTRSwKIlBBVVNFIHpvYnJheu0gbmEgb2JyYXpvdmNlIHRleHQgJ1ByZXNzIFJldHVybiBrZXkgdG8gY29udGludWUnXG5cCmEgdnnoa+EsIGRva3VkIHWeaXZhdGVsIG5lc3Rpc2tuZSBrbOF2ZXN1IEVudGVyLiBKZSB0byB1nml0Zehu6SBobGF2buxcblwKcHJvdG8sIGFieSBzaSB1nml2YXRlbCBtb2hsIHD4Zejtc3Qgdv1zdHVwIHogdv1rb251IHD4ZWRjaOF6ZWrtY2ggcPjta2F6+SxcblwKbmWeIHNlIHR5dG8gb2Ryb2x1au0geiBvYnJhem92a3kuXG4iCgogIFdDTURfUFJPTVBULAoiUFJPTVBUIG5hc3Rhdu0gdv16dnUgcPjta2F6b3bpaG8g+OFka3UuXG5cClxuXArYZXTsemVjIHphIHD47WthemVtIFBST01QVCAoYSBtZXplcm91IGJlenByb3N0+GVkbuwgemEgUFJPTVBUKVxuXApzZSB6b2JyYXrtIG5hIHph6OF0a3Uga2GeZOkgbm926SBw+O1rYXpvdukg+OFka3kuXG5cClxuXApUeXRvIHpuYWt5IG1hau0gdiD4ZXTsemPtY2ggc3BlY2nhbG7tIHb9em5hbTpcblwKXG5cCiQkICAgIFpuYWsgZG9sYXJ1ICAgICAgICAgJF8gICAgT2T44WRrb3bhbu0gICAgICAgICAkYiAgICBabmFrIHJvdXJ5ICh8KVxuXAokZCAgICBEYXR1bSAgICAgICAgICAgICAgICRlICAgIEVzY2FwZSAgICAgICAgICAgICAgJGcgICAgWm5hbelua28gdux0mu0gbmWeXG5cCiRsICAgIFpuYW3pbmtvIG1lbprtIG5lniAgJG4gICAgUO1zbWVubyBkaXNrdSAgICAgICAkcCAgICBDZXN0YVxuXAokcSAgICBSb3Zu7XRrbyAgICAgICAgICAgICR0ICAgIMhhcyAgICAgICAgICAgICAgICAgJHYgICAgVmVyemUgd2NtZFxuXApcblwKUFJPTVBUIGJleiBwYXJhbWV0cvkgcmVzZXR1amUgcHJvbXB0IG5hIGRlZmF1bHRu7SxcblwKa3Rlcv0gamUgc2xvnmVuIHogY2VzdHkgayBzb3XoYXNu6W11IGFkcmVz4fhpICh26GV0buwgcO1zbWVuYSBkaXNrdVxuXAopIGEgem5hbelua2EgIHbsdJrtIG5lniAoPikuXG5cCihqYWtvIGplIHYgRE9TLXUgUFJPTVBUICRwJGcpLlxuXApcblwKUHJvbXB0IG35nmUgYv10IHpt7G7sbiBpIHpt7G5vdSBwcm9t7G5u6SBwcm9zdPhlZO0gUFJPTVBULFxuXAroaWxpIHD47WtheiAnU0VUIFBST01QVD10ZXh0JyBt4SB0ZW50/Z4gZWZla3QgamFrbyAnUFJPTVBUIHRleHQnXG4iCgogIFdDTURfUkVNLAoi2OFka3kgemHo7W5hau1j7SBSRU0gKG7hc2xlZG92YW79bSBtZXplcm91KVxuXApuZWpzb3Ugdnlrb27hbnkuIFJFTSBqZSBwcm90byBwb3We7XbhbiBqYWtvIGtvbWVudOH4b3b9IHD47Wthei5cbiIKCiAgV0NNRF9SRU4sICAgICJO4XBvduxkYSBrIFJFTlxuIgogIFdDTURfUkVOQU1FLCAiTuFwb3bsZGEgayBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIk7hcG927GRhIGsgUkRcbiIKICBXQ01EX1JNRElSLCAgIk7hcG927GRhIGsgUk1ESVJcbiIKCiAgV0NNRF9TRVQsCiJTRVQgem9icmF67SBuZWJvIHpt7G7tIHByb23sbm7pIHByb3N0+GVk7SB3Y21kLlxuXApcblwKU0VUIGJleiBhcmd1bWVudPkgdWvhnmUgc2916GFzbukgbmFzdGF2ZW7tIHByb3N0+GVk7S5cblwKXG5cClN5bnRheGUgcHJvIG5hc3RhdmVu7SBhIHpt7G51IHByb23sbm7pIHByb3N0+GVk7SBqZTpcblwKXG5cCiAgICAgIFNFVCA8cHJvbexubuE+PTxob2Rub3RhPlxuXAogICAgICBcblwKICAgICAga2RlIDxwcm9t7G5u4T4gYSA8aG9kbm90YT4gbXVz7SBi/XQgcHJvc3RhIG1lemVyXG5cCiAgICAgIGEgc3BlY2nhbG7tY2ggem5ha/kgYSBtZXppIDxwcm9t7G5u4T4gcm92bu10a28gPGhvZG5vdGE+XG5cCiAgICAgIG5lc23tIGL9dCBtZXplcnkuXG5cCiAgICAgIFxuXAogICAgICBWZSBXaW5lIGpzb3UgdmlkaXRlbG7pIHByb23sbm7pIHByb3N0+GVk7SBvcGVyYehu7WhvXG5cCiAgICAgIHN5c3TpbXUsIHZlIGt0ZXLpbSBqZSBXaW5lIHNwdZp07G4uIFByb3RvIHV2aWTtdGUgbW5vaGVtIHbtYyBwcm9t7G5u/WNoXG5cCiAgICAgIHByb3N0+GVk7SwgbmWeIHUgbmF0aXZu7SBXaW4zMiBpbXBsZW1lbnRhY2UuIE5lbu0gbW+ebulcblwKICAgICAgbexuaXQgcHJvbexubukgcHJvc3T4ZWTtIGhvc3RpdGVsc2vpaG8gb3BlcmHobu1obyBzeXN06W11IHogd2NtZC5cbiIKICAKICBXQ01EX1NISUZULAoiU0hJRlQgdZ7tduFuIHYgZOF2a292/WNoIHNvdWJvcmVjaCBrIG9kc3RyYW7sbu0gamVkbm9obyBwYXJhbWV0cnUgemUgemHo4XRrdVxuXApqZWppY2ggc2V6bmFtdSwgdGFrnmUgcGFyYW1ldHIgMiBzZSBzdGFuZSBwYXJhbWV0cmVtIDEgYXRkLiBOZW3hIJ7hZG79XG5cCmVmZWt0LCBqZS1saSB6YWThbiBuYSBw+O1rYXpvdm91IPjhZGt1LlxuIgoKICBXQ01EX1RJTUUsICAgIk7hcG927GRhIGsgVElNRVxuIgoKICBXQ01EX1RJVExFLCAgIk5hc3Rhdu0gdGl0dWxlayBva25hIHdjbWQsIHN5bnRheGUgVElUTEUgW/hldOx6ZWNdXG4iCgogIFdDTURfVFlQRSwKIlRZUEUgPHNvdWJvcj4gdnlw7ZplIDxzb3Vib3I+IG5hIGtvbnpvbG926SB6YfjtemVu7SAobmVibyBqaW5hbSxcblwKamUtbGkgdv1zdHVwIHD4ZW3scm924W4pLiBOZW7tIHpqaZqdb3bhbm8sIGJ1ZGUtbGkgdnlwc+FuIOhpdGVsbv0gdGV4dC5cbiIKCiAgV0NNRF9WRVJJRlksCiJWRVJJRlkgamUgcG91nu124W4gayBuYXN0YXZlbu0gbmVibyB6ammadOxu7SBzdGF2dSBw+O16bmFrdSB2ZXJpZnkuXG5cClN5bnRheGU6XG5cClxuXApWRVJJRlkgT04JTmFzdGF27SBw+O16bmFrXG5cClZFUklGWSBPRkYJWnJ1mu0gcPjtem5ha1xuXApWRVJJRlkJCVpvYnJheu0gYWt0deFsbu0gc3Rhdi5cblwKXG5cClD47XpuYWsgdmVyaWZ5IG5lbeEgdmUgV2luZSCe4WRub3UgZnVua2NpLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiB6b2JyYXrtIHZlcnppIHNwdZp07G7paG8gcHJvZ3JhbXUgd2NtZC5cbiIKCiAgV0NNRF9WT0wsICAgICJO4XBvduxkYSBrIFZPTFxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHVrb27o7SBi7J7tY+0gc2V6ZW7tIGEgdnLhdO0ga29udHJvbHVcblwKb3BlcmHobu1tdSBzeXN06W11IG5lYm8gcPjta2F6b3bpbXUgaW50ZXJwcmV0dSxcblwKemUga3RlculobyBieWwgd2NtZCBzcHWadOxuLlxuIgoKICAxMDAwLCAiVmVzdGF27G7pIHD47WthenkgV0NNRCBqc291OlxuXApBVFRSSUJcdFx0Wm9icmF67SBuZWJvIG5hc3Rhdu0gRE9TLW92c2vpIHNvdWJvcm926SBhdHRyaWJ1dHlcblwKQ0FMTFx0XHRaYXZvbOEgZOF2a292/SBzb3Vib3IgeiBqaW7paG9cblwKQ0QgKENIRElSKVx0Wm3sbu0gcHJhY292bu0gYWRyZXPh+FxuXApDTFNcdFx0VnltYZ5lIG9rbm8gdGVybWlu4Wx1XG5cCkNPUFlcdFx0S29w7XJ1amUgc291Ym9yeVxuXApDVFRZXHRcdFpt7G7tIHZzdHVwbuwvdv1zdHVwbu0gemH47Xplbu1cblwKREFURVx0XHRVa+GeZSBuZWJvIG5hc3Rhdu0gc3lzdOltb3bpIGRhdHVtXG5cCkRFTCAoRVJBU0UpXHRTbWGeZSBqZWRlbiBuZWJvIHbtY2Ugc291Ym9y+VxuXApESVJcdFx0Vnlw7ZplIG9ic2FoIGFkcmVz4fhlXG5cCkVDSE9cdFx0Vnlw7ZplIHRleHQgbmEgdGVybWlu4WxcblwKSEVMUFx0XHRab2JyYXrtIGRldGFpbG7tIG7hcG927GR1IGsgdOltYXR1XG5cCk1EIChNS0RJUilcdFZ5dHZv+O0gYWRyZXPh+FxuXApNT1ZFXHRcdFD4ZXN1bmUgc291Ym9yLCBza3VwaW51IHNvdWJvcvkgbmVibyBhZHJlc+H4b3b9IHN0cm9tXG5cClBBVEhcdFx0TmFzdGF27SBuZWJvIHVr4Z5lIHByb2hsZWThdmFu6SBjZXN0eVxuXApQUk9NUFRcdFx0Wm3sbu0gdv16dnUgcPjta2F6b3bpaG8g+OFka3VcblwKUkVOIChSRU5BTUUpXHRQ+GVqbWVudWplIHNvdWJvclxuXApSRCAoUk1ESVIpXHRTbWGeZSBhZHJlc+H4XG5cClNFVFx0XHROYXN0YXbtIG5lYm8gem9icmF67SBwcm9t7G5ub3UgcHJvc3T4ZWTtXG5cClRJTUVcdFx0VWvhnmUg6GkgbmFzdGF27SBzeXN06W1vdv0g6GFzXG5cClRJVExFXHRcdE5hc3Rhdu0gdGl0dWxlayBva25hIGLsnu1j7SBXQ01EIGluc3RhbmNlXG5cClRZUEVcdFx0Vnlw7ZplIG9ic2FoIHRleHRvdulobyBzb3Vib3J1XG5cClZFUlx0XHRab2JyYXrtIHZlcnppIFdDTURcblwKVk9MXHRcdFVr4Z5lIGptZW5vdmt1IGRpc2t1XG5cCkVYSVRcdFx0VWtvbujtIFdDTURcblxuXApaYWRlanRlIEhFTFAgPHD47Wthej4gcHJvIHBvZHJvYm7saprtIGluZm9ybWFjZSBvIG7sa3RlcultIHogdv2aZSB1dmVkZW79Y2ggcPjta2F6+VxuIgp9Cg==