From 6b27b4a2f10b2176019e33cec59051b155d68e95 Mon Sep 17 00:00:00 2001 From: nilsding Date: Sat, 8 Nov 2014 19:33:18 +0100 Subject: [PATCH] goddamnit, @pixeldesu. --- .gitignore | 2 + public/assets/.gitkeep | 0 ...esome-4ed609d2268f7a77f33a7ab262547929.otf | Bin 85908 -> 0 bytes ...CENSE-97bcc277e2efa413c33894b953eb2605.txt | 27 - ...cons-d91c7a6cc324e51a9c5bc91b79f762b1.woff | Bin 141604 -> 0 bytes ...Icons-e60a99ffdabd6f99860d3c1a13c62f84.svg | 751 - ...Icons-e99830618ce76c2854d6d0dbf9989c7b.eot | Bin 141748 -> 0 bytes ...Icons-f2f882cedf940c50384f6e7adca3979f.ttf | Bin 141528 -> 0 bytes ...cation-2586af1985f260752f7ec7a36eb90890.js | 14205 ------------- ...ion-2586af1985f260752f7ec7a36eb90890.js.gz | Bin 116070 -> 0 bytes ...cation-78a7445399a3f15109b216fc73b488f7.js | 14193 ------------- ...ion-78a7445399a3f15109b216fc73b488f7.js.gz | Bin 109889 -> 0 bytes ...ation-bb1cd459b648f4e6cffebaff12f599a8.css | 16422 ---------------- ...on-bb1cd459b648f4e6cffebaff12f599a8.css.gz | Bin 51176 -> 0 bytes ...gular-01ac2925443b477770637236eac3ae93.svg | 229 - ...gular-7adc8d5445918d3b2ccb2ee19d3cc85e.ttf | Bin 41280 -> 0 bytes ...ular-827db11d800feb83e913d47915a9b4f3.woff | Bin 23320 -> 0 bytes ...gular-aeb099b68de9718c8af59d46df10f80c.eot | Bin 20335 -> 0 bytes ...font-2a70762cb334acd0ddb491df30246b29.woff | Bin 24116 -> 0 bytes ...bfont-9ba54892a0cc1c595663feec81684049.ttf | Bin 40140 -> 0 bytes ...bfont-a90a6c1b72fd4504f5cc1b609a7f7eb5.svg | 251 - ...bfont-b7ba64273c6a483855c760d043e9d1a0.eot | Bin 40342 -> 0 bytes ...font-14a76ad5958723e744b85b99e5683ba2.woff | Bin 23632 -> 0 bytes ...bfont-5c8844d3dc1e21ec8056b781c7bdc574.svg | 251 - ...bfont-7c5e699c46cf4586dde45431ad137fdf.ttf | Bin 39508 -> 0 bytes ...bfont-efd1b9b0049a91d579e9436f430831b7.eot | Bin 39722 -> 0 bytes ...cense-fe2337a6603b4d2f66432eb4c8069890.txt | 18 - ...bfont-545cce9effeedb730f0de0e9a0a22eb0.eot | Bin 56006 -> 0 bytes ...font-bb10eaac75c3dec069251d8bd1cb85d3.woff | Bin 65452 -> 0 bytes ...bfont-d89415175e73a34d1e4138e3729bb23d.svg | 520 - ...bfont-fbea1c23016dac61cc3dc642ba207b4e.ttf | Bin 112160 -> 0 bytes ...fest-db99fe052ab26a1469db12a64df6bcfb.json | 1 - ...ion 2-9dcadfbf9efdc210c038c156912aa583.txt | 53 - ...font-0958c879105668f083a953b84625722d.woff | Bin 19788 -> 0 bytes ...bfont-0c147f3bc27bf81924fbad04264dcd0e.svg | 251 - ...bfont-96ef042b63353ac3ab3ad525cb5652a7.eot | Bin 30858 -> 0 bytes ...bfont-b9ad35f89c9d14e45a9375429997aabe.ttf | Bin 30680 -> 0 bytes ...font-0052f2a35d481ebb0ee34fc222c30354.woff | Bin 21940 -> 0 bytes ...bfont-1f9524032c2cb836871f3c206f3dcf8e.svg | 251 - ...bfont-3fc19a6b78811c07dbdd72d20100d872.eot | Bin 34166 -> 0 bytes ...bfont-90bbfabfbab3c2b0e81e002e68ae4e07.ttf | Bin 33960 -> 0 bytes ...bfont-81a3c89813d8f17e19bd88a03e57e010.svg | 251 - ...bfont-d12881b61f44981ccc68673d9b207ab3.eot | Bin 30602 -> 0 bytes ...bfont-d19d727d46a43f774bc0c969fb7b90c3.ttf | Bin 30404 -> 0 bytes ...font-fa7755cd4c3fbcd000a3a63c752c2ea7.woff | Bin 19972 -> 0 bytes ...bfont-4bff1c6a796ad81f98de3a44cfd38f15.ttf | Bin 33532 -> 0 bytes ...bfont-6ba45a234d2d5e15b692a8f99a51babf.eot | Bin 33758 -> 0 bytes ...font-a106b1a17dcb9e6afbeb5e2f2f693334.woff | Bin 21824 -> 0 bytes ...bfont-db023c4693f74ddb118ff60fdb4fa053.svg | 251 - ...bfont-4a06075aa2e9b081e139b1dc6896d9ab.ttf | Bin 34612 -> 0 bytes ...bfont-4e20df177cdc59f0e379e6bb6cb0e4be.svg | 251 - ...bfont-f3ab5d676dc990906f4c74c94820d0eb.eot | Bin 34798 -> 0 bytes ...font-fe3f352cbe173f35fe520ca2dd5dca24.woff | Bin 22416 -> 0 bytes ...bfont-4ee68e813553725bd5884f0780200549.eot | Bin 29794 -> 0 bytes ...bfont-bd873fe2dcf814ceb6485d2b6a985a7d.svg | 252 - ...font-db6d7f6fb181d93ced7cbdac5a249b35.woff | Bin 19396 -> 0 bytes ...bfont-f56ee9dc218e174a0f063a7d041e1f6a.ttf | Bin 29612 -> 0 bytes ...font-a733afd10de5b163a7664d8f66fae03f.woff | Bin 22444 -> 0 bytes ...bfont-b1bb04dfaa37878c35f3dee45af59cbd.svg | 252 - ...bfont-dea29c36b16d22e8b379746bb955d116.ttf | Bin 34368 -> 0 bytes ...bfont-e22fc33da48cad944b6c9f1bd7c59a59.eot | Bin 34578 -> 0 bytes ...bfont-1f25a33419f5ffece1e8a921191a17cf.svg | 252 - ...font-5215b72548dee707f1520d4c3d71c5b7.woff | Bin 19624 -> 0 bytes ...bfont-5f9aeb194d103ea2201ceb0c134edbe0.ttf | Bin 29744 -> 0 bytes ...bfont-a9f7b6c10ad7fddc14f03ecc42f11762.eot | Bin 29934 -> 0 bytes ...font-79109db53d90cc4c183deb373706d504.woff | Bin 19736 -> 0 bytes ...bfont-927d0b10fc8cf792a5166038d454519a.svg | 251 - ...bfont-e091875f1f40664568f05f047fabd0c7.ttf | Bin 30156 -> 0 bytes ...bfont-f2b34cf206e7f9bab2fc4294a2c4d8e7.eot | Bin 30350 -> 0 bytes ...font-1b5b9716c93e2de54d65bfba84c83fd7.woff | Bin 22332 -> 0 bytes ...bfont-3be7c827e5df53db3eb4367906b26342.svg | 251 - ...bfont-71efdf1a11b9366891318b0300ca3a41.ttf | Bin 34644 -> 0 bytes ...bfont-efd8c5eed369693f53630ed9e28cd7e3.eot | Bin 34866 -> 0 bytes ...bfont-1369bb2aac016a6e55d95341563ea89c.svg | 266 - ...bfont-303d36666d1bcbde888e368277d06609.ttf | Bin 45496 -> 0 bytes ...bfont-558780e705e5ba884be18b9db6ccc2e0.eot | Bin 45684 -> 0 bytes ...font-ee522df786ece9cdfb8cae596b7a8b11.woff | Bin 30296 -> 0 bytes ...font-5bd3c45ce702357fb2d8dfb11da97248.woff | Bin 32432 -> 0 bytes ...bfont-99a5243705298a189b0eb0f18cba01e5.eot | Bin 49060 -> 0 bytes ...bfont-a896976ba7254717664070c59abdab73.ttf | Bin 48876 -> 0 bytes ...bfont-c32e1d0d32ab1df75ffc139b2389f469.svg | 266 - ...font-03cbfd8bb6472d39fd0b2a868ff954f9.woff | Bin 29576 -> 0 bytes ...bfont-57ebb70858a9df9642afb3859dd6f28d.ttf | Bin 44512 -> 0 bytes ...bfont-b781a8f4f5554280310c12136864d7a8.eot | Bin 44688 -> 0 bytes ...bfont-f62d9c2d1b61cfd64604dead23aed213.svg | 266 - ...bfont-1a4fb3dddc48a92cce93a270dfd016bf.eot | Bin 46728 -> 0 bytes ...bfont-3d105da13536d451851f333488079b7a.ttf | Bin 46524 -> 0 bytes ...font-6b0574d28a85306267228c0cd2cabe65.woff | Bin 30948 -> 0 bytes ...bfont-ee4c4744f76413f015013baabeed63c9.svg | 268 - ...font-0471dd308467dd1f46edd81990378392.woff | Bin 28416 -> 0 bytes ...bfont-4050238cb9cc61dfb02aae0164f4f14b.svg | 264 - ...bfont-4b3f426410b142a337418b6fbc4eb596.ttf | Bin 42916 -> 0 bytes ...bfont-8713fee9a3fec7b9fecab2962ca411ee.eot | Bin 43136 -> 0 bytes ...font-27e17db6323d29e129257aec5da167ff.woff | Bin 30540 -> 0 bytes ...bfont-46ce9419ebe129fa6a56472317f96e31.ttf | Bin 47068 -> 0 bytes ...bfont-74cb2f2282018238e5e095e1469f373c.svg | 264 - ...bfont-8a219cc12effb8e1adbef927927fc4ea.eot | Bin 47284 -> 0 bytes ...cense-57b25596fad49a2329de5c4bd52c84b3.txt | 26 - ...e 1.0-7d8d1d949916bbc15f573c5d986ab92c.txt | 35 - ...bfont-3043257a245641aed204848b6fdd515f.svg | 232 - ...font-709de1c7f3783ccb63ec4e32c6d8fcff.woff | Bin 25168 -> 0 bytes ...bfont-dc463bb4d0117d3353fc05d5816183c2.ttf | Bin 44496 -> 0 bytes ...bfont-f12a2ea3568e6e0229333b86d6f494b4.eot | Bin 21818 -> 0 bytes ...bfont-0d2acd0b5ff6fceecb70145a04c027d6.ttf | Bin 52880 -> 0 bytes ...font-16eb6d7371908bfb654c3a950aa86158.woff | Bin 27996 -> 0 bytes ...bfont-bdef7d1c8aeebf0566e8cca1ec1e4b95.eot | Bin 24348 -> 0 bytes ...bfont-bfd2e420c4e574376eed954669eb8752.svg | 232 - ...bfont-1b3445724dca13f9e928f256f35ffc10.ttf | Bin 48748 -> 0 bytes ...font-a5ab1858f273c97b9fcd026b45e8bef2.woff | Bin 26840 -> 0 bytes ...bfont-b3d3ab463377f04d8e0a3e17d60a1f79.svg | 232 - ...bfont-c9a4379df35fdb54c18c1a60245892a0.eot | Bin 23422 -> 0 bytes ...bfont-1bb376f807eca2c7bd2010d858e8a30a.eot | Bin 22359 -> 0 bytes ...font-47a12d6bc569d13a1a2df99edb9409fe.woff | Bin 25684 -> 0 bytes ...bfont-e18a9830771a4d6c101d5c55116f20e5.ttf | Bin 46168 -> 0 bytes ...bfont-ff9e3ee88b1fd77ac8308872ee4ce89e.svg | 232 - ...bfont-0d8834f8d5622a041dd3d219d3463e49.svg | 232 - ...font-640eb7f86dd08fd7a7ff5ea34fd4afd4.woff | Bin 29200 -> 0 bytes ...bfont-8892e67b8017ff08a85474d08797df42.ttf | Bin 55128 -> 0 bytes ...bfont-d965810df3a76247d7b37c6638265ac9.eot | Bin 25679 -> 0 bytes ...bfont-0b6d939f37cf884b39876d8f7007c317.svg | 232 - ...font-50f42b2ad8cb3aa88e428fd0f5a97c60.woff | Bin 25756 -> 0 bytes ...bfont-c741f976f1c5ec168a8afd77896d9fd5.eot | Bin 22399 -> 0 bytes ...bfont-cf9178abed3f431df02d9a436e4e76dc.ttf | Bin 44176 -> 0 bytes ...bfont-018ef8cc07c35b07382a85bdf2b91736.eot | Bin 24995 -> 0 bytes ...font-1bd39fc6cef098be238b37df4bcd707b.woff | Bin 28500 -> 0 bytes ...bfont-a469e1b168e0fd68b667de01e4b2dbc1.ttf | Bin 52764 -> 0 bytes ...bfont-e4d9df96ab2fb6ef2b0c975a1e69ca32.svg | 232 - ...bfont-274175869c48a070894ca11fbaaa5698.svg | 232 - ...font-6f4873d646ca4c97c370560385aacffa.woff | Bin 25816 -> 0 bytes ...bfont-79aafe5d968c4e4b3acfef08e4bc9d70.ttf | Bin 45652 -> 0 bytes ...bfont-b1548f571a28bb34112df94e882a0c21.eot | Bin 22516 -> 0 bytes ...bfont-52829160098a1c928f43a9ff458bc19b.ttf | Bin 55748 -> 0 bytes ...bfont-7917a927b139bbe04187bd56ccd93e2d.eot | Bin 25217 -> 0 bytes ...font-c5b3512e41f30d11f7babf808ef17092.woff | Bin 28888 -> 0 bytes ...bfont-f66b216932cff76aed39d5652396fbf1.svg | 232 - 135 files changed, 2 insertions(+), 53177 deletions(-) create mode 100644 public/assets/.gitkeep delete mode 100644 public/assets/FontAwesome-4ed609d2268f7a77f33a7ab262547929.otf delete mode 100644 public/assets/LICENSE-97bcc277e2efa413c33894b953eb2605.txt delete mode 100755 public/assets/Material-Design-Icons-d91c7a6cc324e51a9c5bc91b79f762b1.woff delete mode 100755 public/assets/Material-Design-Icons-e60a99ffdabd6f99860d3c1a13c62f84.svg delete mode 100755 public/assets/Material-Design-Icons-e99830618ce76c2854d6d0dbf9989c7b.eot delete mode 100755 public/assets/Material-Design-Icons-f2f882cedf940c50384f6e7adca3979f.ttf delete mode 100644 public/assets/application-2586af1985f260752f7ec7a36eb90890.js delete mode 100644 public/assets/application-2586af1985f260752f7ec7a36eb90890.js.gz delete mode 100644 public/assets/application-78a7445399a3f15109b216fc73b488f7.js delete mode 100644 public/assets/application-78a7445399a3f15109b216fc73b488f7.js.gz delete mode 100644 public/assets/application-bb1cd459b648f4e6cffebaff12f599a8.css delete mode 100644 public/assets/application-bb1cd459b648f4e6cffebaff12f599a8.css.gz delete mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-01ac2925443b477770637236eac3ae93.svg delete mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-7adc8d5445918d3b2ccb2ee19d3cc85e.ttf delete mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-827db11d800feb83e913d47915a9b4f3.woff delete mode 100644 public/assets/bootstrap/glyphicons-halflings-regular-aeb099b68de9718c8af59d46df10f80c.eot delete mode 100755 public/assets/droid-sans/DroidSans-Bold-webfont-2a70762cb334acd0ddb491df30246b29.woff delete mode 100755 public/assets/droid-sans/DroidSans-Bold-webfont-9ba54892a0cc1c595663feec81684049.ttf delete mode 100755 public/assets/droid-sans/DroidSans-Bold-webfont-a90a6c1b72fd4504f5cc1b609a7f7eb5.svg delete mode 100755 public/assets/droid-sans/DroidSans-Bold-webfont-b7ba64273c6a483855c760d043e9d1a0.eot delete mode 100755 public/assets/droid-sans/DroidSans-webfont-14a76ad5958723e744b85b99e5683ba2.woff delete mode 100755 public/assets/droid-sans/DroidSans-webfont-5c8844d3dc1e21ec8056b781c7bdc574.svg delete mode 100755 public/assets/droid-sans/DroidSans-webfont-7c5e699c46cf4586dde45431ad137fdf.ttf delete mode 100755 public/assets/droid-sans/DroidSans-webfont-efd1b9b0049a91d579e9436f430831b7.eot delete mode 100755 public/assets/droid-sans/Google Android License-fe2337a6603b4d2f66432eb4c8069890.txt delete mode 100644 public/assets/fontawesome-webfont-545cce9effeedb730f0de0e9a0a22eb0.eot delete mode 100644 public/assets/fontawesome-webfont-bb10eaac75c3dec069251d8bd1cb85d3.woff delete mode 100644 public/assets/fontawesome-webfont-d89415175e73a34d1e4138e3729bb23d.svg delete mode 100644 public/assets/fontawesome-webfont-fbea1c23016dac61cc3dc642ba207b4e.ttf delete mode 100644 public/assets/manifest-db99fe052ab26a1469db12a64df6bcfb.json delete mode 100755 public/assets/open-sans/Apache License Version 2-9dcadfbf9efdc210c038c156912aa583.txt delete mode 100755 public/assets/open-sans/OpenSans-Bold-webfont-0958c879105668f083a953b84625722d.woff delete mode 100755 public/assets/open-sans/OpenSans-Bold-webfont-0c147f3bc27bf81924fbad04264dcd0e.svg delete mode 100755 public/assets/open-sans/OpenSans-Bold-webfont-96ef042b63353ac3ab3ad525cb5652a7.eot delete mode 100755 public/assets/open-sans/OpenSans-Bold-webfont-b9ad35f89c9d14e45a9375429997aabe.ttf delete mode 100755 public/assets/open-sans/OpenSans-BoldItalic-webfont-0052f2a35d481ebb0ee34fc222c30354.woff delete mode 100755 public/assets/open-sans/OpenSans-BoldItalic-webfont-1f9524032c2cb836871f3c206f3dcf8e.svg delete mode 100755 public/assets/open-sans/OpenSans-BoldItalic-webfont-3fc19a6b78811c07dbdd72d20100d872.eot delete mode 100755 public/assets/open-sans/OpenSans-BoldItalic-webfont-90bbfabfbab3c2b0e81e002e68ae4e07.ttf delete mode 100755 public/assets/open-sans/OpenSans-ExtraBold-webfont-81a3c89813d8f17e19bd88a03e57e010.svg delete mode 100755 public/assets/open-sans/OpenSans-ExtraBold-webfont-d12881b61f44981ccc68673d9b207ab3.eot delete mode 100755 public/assets/open-sans/OpenSans-ExtraBold-webfont-d19d727d46a43f774bc0c969fb7b90c3.ttf delete mode 100755 public/assets/open-sans/OpenSans-ExtraBold-webfont-fa7755cd4c3fbcd000a3a63c752c2ea7.woff delete mode 100755 public/assets/open-sans/OpenSans-ExtraBoldItalic-webfont-4bff1c6a796ad81f98de3a44cfd38f15.ttf delete mode 100755 public/assets/open-sans/OpenSans-ExtraBoldItalic-webfont-6ba45a234d2d5e15b692a8f99a51babf.eot delete mode 100755 public/assets/open-sans/OpenSans-ExtraBoldItalic-webfont-a106b1a17dcb9e6afbeb5e2f2f693334.woff delete mode 100755 public/assets/open-sans/OpenSans-ExtraBoldItalic-webfont-db023c4693f74ddb118ff60fdb4fa053.svg delete mode 100755 public/assets/open-sans/OpenSans-Italic-webfont-4a06075aa2e9b081e139b1dc6896d9ab.ttf delete mode 100755 public/assets/open-sans/OpenSans-Italic-webfont-4e20df177cdc59f0e379e6bb6cb0e4be.svg delete mode 100755 public/assets/open-sans/OpenSans-Italic-webfont-f3ab5d676dc990906f4c74c94820d0eb.eot delete mode 100755 public/assets/open-sans/OpenSans-Italic-webfont-fe3f352cbe173f35fe520ca2dd5dca24.woff delete mode 100755 public/assets/open-sans/OpenSans-Light-webfont-4ee68e813553725bd5884f0780200549.eot delete mode 100755 public/assets/open-sans/OpenSans-Light-webfont-bd873fe2dcf814ceb6485d2b6a985a7d.svg delete mode 100755 public/assets/open-sans/OpenSans-Light-webfont-db6d7f6fb181d93ced7cbdac5a249b35.woff delete mode 100755 public/assets/open-sans/OpenSans-Light-webfont-f56ee9dc218e174a0f063a7d041e1f6a.ttf delete mode 100755 public/assets/open-sans/OpenSans-LightItalic-webfont-a733afd10de5b163a7664d8f66fae03f.woff delete mode 100755 public/assets/open-sans/OpenSans-LightItalic-webfont-b1bb04dfaa37878c35f3dee45af59cbd.svg delete mode 100755 public/assets/open-sans/OpenSans-LightItalic-webfont-dea29c36b16d22e8b379746bb955d116.ttf delete mode 100755 public/assets/open-sans/OpenSans-LightItalic-webfont-e22fc33da48cad944b6c9f1bd7c59a59.eot delete mode 100755 public/assets/open-sans/OpenSans-Regular-webfont-1f25a33419f5ffece1e8a921191a17cf.svg delete mode 100755 public/assets/open-sans/OpenSans-Regular-webfont-5215b72548dee707f1520d4c3d71c5b7.woff delete mode 100755 public/assets/open-sans/OpenSans-Regular-webfont-5f9aeb194d103ea2201ceb0c134edbe0.ttf delete mode 100755 public/assets/open-sans/OpenSans-Regular-webfont-a9f7b6c10ad7fddc14f03ecc42f11762.eot delete mode 100755 public/assets/open-sans/OpenSans-Semibold-webfont-79109db53d90cc4c183deb373706d504.woff delete mode 100755 public/assets/open-sans/OpenSans-Semibold-webfont-927d0b10fc8cf792a5166038d454519a.svg delete mode 100755 public/assets/open-sans/OpenSans-Semibold-webfont-e091875f1f40664568f05f047fabd0c7.ttf delete mode 100755 public/assets/open-sans/OpenSans-Semibold-webfont-f2b34cf206e7f9bab2fc4294a2c4d8e7.eot delete mode 100755 public/assets/open-sans/OpenSans-SemiboldItalic-webfont-1b5b9716c93e2de54d65bfba84c83fd7.woff delete mode 100755 public/assets/open-sans/OpenSans-SemiboldItalic-webfont-3be7c827e5df53db3eb4367906b26342.svg delete mode 100755 public/assets/open-sans/OpenSans-SemiboldItalic-webfont-71efdf1a11b9366891318b0300ca3a41.ttf delete mode 100755 public/assets/open-sans/OpenSans-SemiboldItalic-webfont-efd8c5eed369693f53630ed9e28cd7e3.eot delete mode 100755 public/assets/pt-serif/PTF55F-webfont-1369bb2aac016a6e55d95341563ea89c.svg delete mode 100755 public/assets/pt-serif/PTF55F-webfont-303d36666d1bcbde888e368277d06609.ttf delete mode 100755 public/assets/pt-serif/PTF55F-webfont-558780e705e5ba884be18b9db6ccc2e0.eot delete mode 100755 public/assets/pt-serif/PTF55F-webfont-ee522df786ece9cdfb8cae596b7a8b11.woff delete mode 100755 public/assets/pt-serif/PTF56F-webfont-5bd3c45ce702357fb2d8dfb11da97248.woff delete mode 100755 public/assets/pt-serif/PTF56F-webfont-99a5243705298a189b0eb0f18cba01e5.eot delete mode 100755 public/assets/pt-serif/PTF56F-webfont-a896976ba7254717664070c59abdab73.ttf delete mode 100755 public/assets/pt-serif/PTF56F-webfont-c32e1d0d32ab1df75ffc139b2389f469.svg delete mode 100755 public/assets/pt-serif/PTF75F-webfont-03cbfd8bb6472d39fd0b2a868ff954f9.woff delete mode 100755 public/assets/pt-serif/PTF75F-webfont-57ebb70858a9df9642afb3859dd6f28d.ttf delete mode 100755 public/assets/pt-serif/PTF75F-webfont-b781a8f4f5554280310c12136864d7a8.eot delete mode 100755 public/assets/pt-serif/PTF75F-webfont-f62d9c2d1b61cfd64604dead23aed213.svg delete mode 100755 public/assets/pt-serif/PTF76F-webfont-1a4fb3dddc48a92cce93a270dfd016bf.eot delete mode 100755 public/assets/pt-serif/PTF76F-webfont-3d105da13536d451851f333488079b7a.ttf delete mode 100755 public/assets/pt-serif/PTF76F-webfont-6b0574d28a85306267228c0cd2cabe65.woff delete mode 100755 public/assets/pt-serif/PTF76F-webfont-ee4c4744f76413f015013baabeed63c9.svg delete mode 100755 public/assets/pt-serif/PTZ55F-webfont-0471dd308467dd1f46edd81990378392.woff delete mode 100755 public/assets/pt-serif/PTZ55F-webfont-4050238cb9cc61dfb02aae0164f4f14b.svg delete mode 100755 public/assets/pt-serif/PTZ55F-webfont-4b3f426410b142a337418b6fbc4eb596.ttf delete mode 100755 public/assets/pt-serif/PTZ55F-webfont-8713fee9a3fec7b9fecab2962ca411ee.eot delete mode 100755 public/assets/pt-serif/PTZ56F-webfont-27e17db6323d29e129257aec5da167ff.woff delete mode 100755 public/assets/pt-serif/PTZ56F-webfont-46ce9419ebe129fa6a56472317f96e31.ttf delete mode 100755 public/assets/pt-serif/PTZ56F-webfont-74cb2f2282018238e5e095e1469f373c.svg delete mode 100755 public/assets/pt-serif/PTZ56F-webfont-8a219cc12effb8e1adbef927927fc4ea.eot delete mode 100755 public/assets/pt-serif/Paratype PT Sans Free Font License-57b25596fad49a2329de5c4bd52c84b3.txt delete mode 100755 public/assets/ubuntu/Ubuntu Font License 1.0-7d8d1d949916bbc15f573c5d986ab92c.txt delete mode 100755 public/assets/ubuntu/Ubuntu-B-webfont-3043257a245641aed204848b6fdd515f.svg delete mode 100755 public/assets/ubuntu/Ubuntu-B-webfont-709de1c7f3783ccb63ec4e32c6d8fcff.woff delete mode 100755 public/assets/ubuntu/Ubuntu-B-webfont-dc463bb4d0117d3353fc05d5816183c2.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-B-webfont-f12a2ea3568e6e0229333b86d6f494b4.eot delete mode 100755 public/assets/ubuntu/Ubuntu-BI-webfont-0d2acd0b5ff6fceecb70145a04c027d6.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-BI-webfont-16eb6d7371908bfb654c3a950aa86158.woff delete mode 100755 public/assets/ubuntu/Ubuntu-BI-webfont-bdef7d1c8aeebf0566e8cca1ec1e4b95.eot delete mode 100755 public/assets/ubuntu/Ubuntu-BI-webfont-bfd2e420c4e574376eed954669eb8752.svg delete mode 100755 public/assets/ubuntu/Ubuntu-C-webfont-1b3445724dca13f9e928f256f35ffc10.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-C-webfont-a5ab1858f273c97b9fcd026b45e8bef2.woff delete mode 100755 public/assets/ubuntu/Ubuntu-C-webfont-b3d3ab463377f04d8e0a3e17d60a1f79.svg delete mode 100755 public/assets/ubuntu/Ubuntu-C-webfont-c9a4379df35fdb54c18c1a60245892a0.eot delete mode 100755 public/assets/ubuntu/Ubuntu-L-webfont-1bb376f807eca2c7bd2010d858e8a30a.eot delete mode 100755 public/assets/ubuntu/Ubuntu-L-webfont-47a12d6bc569d13a1a2df99edb9409fe.woff delete mode 100755 public/assets/ubuntu/Ubuntu-L-webfont-e18a9830771a4d6c101d5c55116f20e5.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-L-webfont-ff9e3ee88b1fd77ac8308872ee4ce89e.svg delete mode 100755 public/assets/ubuntu/Ubuntu-LI-webfont-0d8834f8d5622a041dd3d219d3463e49.svg delete mode 100755 public/assets/ubuntu/Ubuntu-LI-webfont-640eb7f86dd08fd7a7ff5ea34fd4afd4.woff delete mode 100755 public/assets/ubuntu/Ubuntu-LI-webfont-8892e67b8017ff08a85474d08797df42.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-LI-webfont-d965810df3a76247d7b37c6638265ac9.eot delete mode 100755 public/assets/ubuntu/Ubuntu-M-webfont-0b6d939f37cf884b39876d8f7007c317.svg delete mode 100755 public/assets/ubuntu/Ubuntu-M-webfont-50f42b2ad8cb3aa88e428fd0f5a97c60.woff delete mode 100755 public/assets/ubuntu/Ubuntu-M-webfont-c741f976f1c5ec168a8afd77896d9fd5.eot delete mode 100755 public/assets/ubuntu/Ubuntu-M-webfont-cf9178abed3f431df02d9a436e4e76dc.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-MI-webfont-018ef8cc07c35b07382a85bdf2b91736.eot delete mode 100755 public/assets/ubuntu/Ubuntu-MI-webfont-1bd39fc6cef098be238b37df4bcd707b.woff delete mode 100755 public/assets/ubuntu/Ubuntu-MI-webfont-a469e1b168e0fd68b667de01e4b2dbc1.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-MI-webfont-e4d9df96ab2fb6ef2b0c975a1e69ca32.svg delete mode 100755 public/assets/ubuntu/Ubuntu-R-webfont-274175869c48a070894ca11fbaaa5698.svg delete mode 100755 public/assets/ubuntu/Ubuntu-R-webfont-6f4873d646ca4c97c370560385aacffa.woff delete mode 100755 public/assets/ubuntu/Ubuntu-R-webfont-79aafe5d968c4e4b3acfef08e4bc9d70.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-R-webfont-b1548f571a28bb34112df94e882a0c21.eot delete mode 100755 public/assets/ubuntu/Ubuntu-RI-webfont-52829160098a1c928f43a9ff458bc19b.ttf delete mode 100755 public/assets/ubuntu/Ubuntu-RI-webfont-7917a927b139bbe04187bd56ccd93e2d.eot delete mode 100755 public/assets/ubuntu/Ubuntu-RI-webfont-c5b3512e41f30d11f7babf808ef17092.woff delete mode 100755 public/assets/ubuntu/Ubuntu-RI-webfont-f66b216932cff76aed39d5652396fbf1.svg diff --git a/.gitignore b/.gitignore index f9d232ee..1b5bb6c3 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ coverage/ # Curse you, JetBrains! .idea/ + +/public/assets diff --git a/public/assets/.gitkeep b/public/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/public/assets/FontAwesome-4ed609d2268f7a77f33a7ab262547929.otf b/public/assets/FontAwesome-4ed609d2268f7a77f33a7ab262547929.otf deleted file mode 100644 index 81c9ad949b47f64afeca5642ee2494b6e3147f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85908 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 uQr82 diff --git a/public/assets/LICENSE-97bcc277e2efa413c33894b953eb2605.txt b/public/assets/LICENSE-97bcc277e2efa413c33894b953eb2605.txt deleted file mode 100644 index 6f9c3cf2..00000000 --- a/public/assets/LICENSE-97bcc277e2efa413c33894b953eb2605.txt +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) 2014 The Polymer Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/public/assets/Material-Design-Icons-d91c7a6cc324e51a9c5bc91b79f762b1.woff b/public/assets/Material-Design-Icons-d91c7a6cc324e51a9c5bc91b79f762b1.woff deleted file mode 100755 index e06f547cd6fe02b608ec66af0166ece136456e47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141604 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

P)S(Nm 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 k; - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/assets/Material-Design-Icons-e99830618ce76c2854d6d0dbf9989c7b.eot b/public/assets/Material-Design-Icons-e99830618ce76c2854d6d0dbf9989c7b.eot deleted file mode 100755 index a097ba68dae84b4fe74e5e6b533598898ca7296f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141748 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 e%$8k}C?RS0m5+Rytc)xU4$So|c4gw-dz0c& z&)mS^;z)9DcRbUzc*%`T9g)aL_agD#5v%&K#n=e)!#CY%MQ9_twEnXAQ?GURzWQgr zRrfyo59{7%b=8;H(mfK?;-vwH6 z>fGO2AGUrO4B6jm z@F-y~6Y>ABVg-s`s4C2^eS-rRr8p?NM>!QJd>CVpSfx(M*;VXVgnHsRV zI=ebiv%!5`stn75qPS~ja4B5o^Z_}Z?G3W^dYPX@&h6~p%7&dj0J%q7)5IZl^GYg$8#H{Cx0VXz1_TG4H#(R z?u)Ga{KiLs=M?KO*VgdbNq#NaK|(bQ zDH@j{>{EMyc}?ST2`n}c=49&cF{yYUU$Yu-5{E%YQb-coWmad-3M&(>N>T}*Gqer- zS5?YnkX@ze5=Knsmng5X$_tCTq!ly|nE>)Uau3Vz$gR%zs_SRV*4kN4VM=$&#K`ix z0d&Zc;;qR36-J&GsqG?EUGk>@E1SlD%5O*ik-=qq)|O$cI6W7CfJ?&@=oS4ReT01* zx-c?S5u+*LtDq9`V;Jc^hPEPvD`IoOnpy?_J>A0ZF<4e*%Pv6CtZOQKF`tXtP1lsbx7u?@gXIam8dA>^W zQ^;Ftebsso+qS3So0&5f;9Gk+`=7>va2E%{o&M{1CMIW7v={)7=cpx#P66qS{?{C8 zlW|%@1ci!JZ-wI82MSB_g9ozuy26rx>8<+Sc?s`mexQ&$d#^aXv~aH zXdg?NpU;iAja_IP)|}}8dkXW%_Fo%P=(#3|ZBUE2UUh$6pli+)R}6m@PoNe2pPu$Q z#vl^5wqbqNx)nIJ!%V*~1^ot-Pm~HI8}293q;kB=A)*Ev@+7jV4Mj!-OR?f(&I3beJ@-<|(l;qGFr@ZRB12Rd6@d)lO?=pTzqpnG@U&9nb^X--mm zHeqiiKd?b~#FDo+U7HKDE!9W1XQOG(1!0AWF^=2i#_h&W8E=QB|2K{Q7xNBs z1LoBj|3d3DR*Nl_7p_O;+u`T;NLGKxN;EBDcWJ zc!mahN5Q_43c;Lk>k3CfQJuZdYpeKC<#22U?UOlz99fC&wea(pog=j@2YAfQ($Thi z7OP?*a^Q!eRX|}y!NV;|?!%P6D9-wF4r~zyvs4~FY^+bBUtqxz^|Dn_u66wfO|}`Js9hCy04J8l?eOfoV|aLb8cDuztZY*-1`W6i5k2CfO;$WJao6obPZ3 zfG38yq#1r3mR)(EZJ?ubB-*zxnVgI*_8uG_I-1U2Kb|=@w9>b`qrIaL35QeNiyg_9 zmQXPe2(*VDpcHh-B-G&H=Ns{S##)D$U>zZvffccL-{RHO&8JLaInZ}#Ae z-@=F&3b z$gcIe#XVOI4vr#}l%Aypl{(3>T@j{n#=yd;^D?c|(KOhw z+-$9zJ@ts9Qqega8>OSC^pWF+>x!e|St$w}f8`fRMUz$XPot=JGMz~~|K&h8q?1IB zT}n5D|CGdPQfgqN&?LL1Y{gkvmkN|RmWbz*#1YwV-2utlkftFig-YXvw0I^dt=L>@ z&dla++m+reW1j8>AstVpUNr~PG|bbYGdMeu`KiN9V43J1yd#sD3q4&d{u<9)+D|@> z_fSlvlbu_(Nm@Se1{GyebLpTtl$IXGbH1Qh)~6flW0$kcKuchxtXVE`t*h;tcoIcN*?~>`E zo<;j9Kh-+&Q_1^azf1~IUgUgJ<~k*y0(#Y0>uxo#d#P?d{QKvOb?mX4C);k7usl-2zW|ngHRJ-B)MEk7vBk?zv%d@`mh0IMm(*fhy3{9tuxn z>D(UwE9N@Qh2Y?!!GXgA_{BkxW`+0J0y2riPd}4_4gF&NJ(|iOWB{lAuhjE-JESiq zKbEq(De23qn>}^2t(&EFqA$ovrRFZ-I80!~w&UUhv(Zd28inwjOl=o1Sh;7VbaUzB zwv*e|LyH4f(R?2Iozkzp{@4DSQo>OBpG_+>C6z2~Ql*JFQLRsLthi)W;} zk+&n6BH4~dSZpqsl}#V_u?dT=0>8W_BKFXyo1>~`i2i!t1mrQ6zjBfpo(#^V#Q#Yk^E zlwaTKfU8;9Lh;SeqAi-YzVnN}`*d*cXsR$XbHiwADp+heOu6nT58h#9Zbf^`Xzz7s zuj6fp_QqX1iUUI-iy$#QV-~O&zT?mqOQ1Z%oqPdU9*e!e@(!r zY@%y1($|JYe4@US%s>0$J7tDGnZ2**ZqL)d`;T=UVE3^<_eObmche%t1T4F0QP*x&Ncu^Z~GmDTt-O) z<^CV_&zV&Nc&2_Ga54-~OL;M4n1&sfaF=G9?^$K_h9RzybtB~U&84WfwD>7!u z!DiwW49I05xw2S|&j6K^Y*@xOyOk8mj|eMz@1fTOMRRjcr+VhW3{u zKm`xVFvC9!L}5OTNS`@zq%#?87QyPrz3f#5mKl~l@IX>L{J%O!J34xU9}%{ztaqrl zAfOR%5$cL1-ibPNz_n){7{Ta4Tarm_>*{MEfFzTH zY@Q5S1p>eG1IDYIGgemx{#)^)FXo+{xaXeLRr>GLWtC%7l9%)16TEn*%}2+jGX5GgK2ZyQ=%ycA+t^u9=gFb8**&?D!Jb%JEBjBYMZZ)46v* z-#sDbzRUfz+mGC>Zkd%&Ae=6riH!O$8 zFeemOfK5XQtl)s^^o;H);5$*w&&9IIDWN1 zHFVDS-1rzCL;<&s{XhdZ=_4N*p7^^s@Pt-DF++&4y#lQwrJu#_k;)$; z(?^+E7sgz1<08NlS~^=6dkzi_T{L>l;|C5bEWiYF4FfAhTEinT`#*bOHCd~0!`vWu zLD9EJ5&!MM#qMF?s5(y{SY%Vq=tV=rx!&rxS)sQ?#val|F0qnN(wEN|U$EX~K5Kki zKrg4Jo7@I?ddW#v`&5jLyutM;*DIvghF{0P$Ys^k7+|8@5^r#{nWB1;;zdq+=hJ-; zG$d))`{qzGFJ!{RAFCvHeX@@{sR0T+-pvZn^P8!a*>mgdKpG`6w_3h%``0 zJ_7CW48aWCz$Q_|^mZPDTDBjW>Yy<2a<5vVwRWdD8;64;hk6SW&A4miM zAZY{iNK3e@1=@o^Gy9tmfCYd6+FHP10|BK8z1OkkU zs2??|l^Yc#_!JrrG@Rc=EyGBhA%FsS?@K_10KJ+93&ry<`aDE^g2z>#P@}k_gwFtl z6GoT%k@|yLMgxHUa7IW$FA#|!oCWg95f@XBLLz||9}P@vptTE-A%wy}=pv|<1Z?1B zi9w78!!FRsId9e-N__xz4kM5NPXt|ramKAjh?@h}2xFGecG4sWTY}oj=rXj;0BZ!* z!NAgv)r3)?u>jl)7ekY;_BsNh;BKMnQr`j-hJFc-g5JY}2XGU94|2Dm8T1~M+tSob zufjy8K@$Z2fWGPo5wH%uii)7+fzlZ&MIuB{EvZ`x@B;0_FV%|ZC4GFM$pF0!8h|=N20Ae>_ofwaAa&sfgOGM9z;WD^FEL@yLgO&7}={2uOd8ChCI& zz|2CVBR>Z25U@Gk*1(SMVcg+gSCYDp{R&j z+YS}M+Gi?)y_c2<m-O&p{p$)?ep=tV@Y>>CM_iRdVZcq_1C_-2QWBfF!9iwW|y z2EYn49#n1@kwR{STn%a|z66|FD%nfq3$% z-CDszIaCY;kf{ zn^Mu~jZB?AJvV=)xpw9J-07?pZ}1LgKVZ9 zX%S>Xq)1TG#aAjeN}f`DDxBk)Yfr+t1+fh-J(nU$6y@OZa>&607}O_i?NJ>0;Gw?$ zeaWTHU9ql-Zf3-r1K2*6*msTj^Towqr(iR1^Y*Xj-rUgx0~zz+gNOS2_9s{7s}b?` z+Jmj)7g1C!6E|(iuH)`x$5N;x&>UdKygL&^+}u)fKT?qlO6GlW;e+ry`NhHqmi}@6 zbaH<`a+I*E7EEzH9rw(eFIJ1p-9w=k+ZDB6gNYP?@!c?5T=M!j`tXo(F`__cPKe zvS6JR!^D}G!u~H0whwl8jCB6>U!RqfCU1XJWaygdBb8fjZDI9h^W!Es%eG+VZQyLM z$xoJuJ;Go6WCn~SIHR{s68v3jpoG7~1E8;9v&CF1W3KfP66P2|yJUh0on#^N_60uXTO5fZ|L zeNME$D#@B%MnCjUyP=nZxS5L5hnT|$g-bA01!|NIK;@J|NFO=ZrK2U50}+!b;G$$> zCK9d;oT?ZX67FC4vPszofSE`Ra&S-~)gjMWa%dwQ1t|Gpv;Jq;tS!8oynoUBv9L(v z*R|l3MV6&pM7Q^g*;ra+(!q3$4tAZ|x6gd!K>m{D10$4k{S~_zsd|2D>TSpNzdAFq z9B;ZZpMS-T$L+}AV?)@$sjgdcl5CMCktzf^56yrl;O|84L3Ly}idKVu~tcS@x`kao>{=>(+@o)>_Xu) zU;lcPV}ErV$*!XVgHzGZV4nRp3S9(u`a#t5ZtEFU&lqet6nkUDfJYF8usxR!ATl?D zAkg^i7zODP_Iogf|H%s3e*|WWxRJ`T&*5n4D!jisMW0mbMS7pig|*rR_~=M(^w%^nER`~9!{(<2M1G!!6R*UEBQu=tyZXS$dRu`kValg z0J0zo*ukQg>Q9s1D%}0hP-=i{C>Lk1HdKR)5$jjIw}qTHpz&xyO-L#T0zDDp{f!mT zefb^t6n0)1#*^%YdG_C->_RKX8$dy%R!ereO3|@lFbBL1%B`s4_K#1pLmW&n6qKJ=<5Pu1hMWb178mrouQ6GttKGsKhLT?svq&$lx zT8?X*(Bz~(KHh>9PJQj7eDLC~u1KV->*9lUVbV*v?{yB|q!sGJ64@ZlP2iJV2JVZv zSh;IS$`Q1jhaKZcqIq)I=8XD&h`Ywi%lAD zG9CmsCKUkEO^#PQtBV=IRZ==u0~4Zw!m!Kn3B}{9iwI$Z#sYIzA+aYBpNwTr?Adc76Pt|VYq6Nf;#~J`^1R#KjdNL?t6p#Q&Lk4! z9i8Ke_)K5lOgu5(*)g6-%=B8M7=)^eo{x7YdFi?WIrREmtyDJkH+_^x^w^4AiYrX?ATH*a7>ZS1rd3ai z94*Fko*6CWGG%`+qIIkA{pJ{DN$F;{c7md30l&V0C=9aY(N1o^$~(nF!^6Z!SSCb{ zvJEX-rxu07OnCD7hG+O`F}bnvuVV>-QYKt#EKLXrguU{4@FH{D@gQ!F0@&-bb2)1^ zMnEm#B+P>52Cyd+hk)HV@FyQC$n74|<3C(=)6-Wyc<1qZM)q1mU?6z&RyXp)_CH_s zZ%DTe{qyC2_0&N1K5^5#HbmF&|LoNyB(jZh1y~J+fY4CqCl&xEOA!7ybD6n-Rk9Hv zd^VfUZ?gU-3z@EheW!>082tD!NVG^gg&_MB znl0-fT!>Jd(Xl()HPsLBu{FZqgJT}+Z^SAC>*yO~M5JLO>rb^rTsiA?z(!zZmyAX5 z%!FYBlkr{=48aUH7c!Fpl=`JhDW}0P`^zNa*`;IR@H5|^Cn&!8@83&!e0F92`_j(5 z$TE5p@E`inXC$p;5UeQhA0Y$*1WJ$L3xpZ#s@cWa#n>^s^j2}rPgSqWefBYwdUEj$ zzw6IFmOJ}Rk)K$cSp4d|$lh-M#x>%-^PgRr|NgPX)AZ(#e{9}D00>_3V;&>&ag;v6 zdthU}8hagtdc_7fI~1lUaqw!FQfwA!CTj6o(&1*dA$o@;y-Lx=&6FVS*MG%8A>$t+ z=Y%^-hK~U`x3)RSY?lljnJi8=d^IPTAh~_>mCwEtSuB0w5p@F`i;K{mDz;Y6GRgi7 zN=InL@k!h-)s#iW_yCDJmsu7F%uiZ!_fs|Gszb3Np=6?Ujo@wZ3r{{d_4wzG9{t?o zQ(~R(b^*djv_0>$Uq5x~H-4t|nP*ym<~N-A3m(qOWA;YT4j^okMuyl2VZlErB`Ouu zsK9C05QWu(If<-*Vimd?TT1qDS-Jqj*E08@5D{mJxqJo6ND6!fJS_H~gNVo`6cKtB)Ok>#PUW0Y{r14?2 z$e|AVW)z~@ti+WCRoeEHw52QOln#~0t|kW5iv@F0f2WA;Sy{8f)IFbPGFV||fW9CD zT7?N9zK|QBIQwH|c{lkbBiCO)qPb+BZx0i*h95YjowL_;4)d%ltE4ENvx{D7+`P_J z6mP8P1>ud7_5o7^pjDV9py8CLh-M531~7g=HSmWV3Q7A=0yK{(mIyrn%97GX7NH|q za}^U~V-3DurO9k5I|)T4ej&4v-z53JtN^);=V`z6OHvCn7faP-l6^BOjS0}Vuo6l| zvpo_XjEc4BU^vnaU6LVW_B@Q5A?2TwN@v2H_1Q!bYAWws29sl z(hnzMywP|Mv|7fPoT-urLy`rU_Y|YAXotL>aftxR8X#p-*Df2B=zvNqAzfY77b)aQ z^}-k%6BU7S^L*;2t3pRI0+6FtR z;7(Zaf=##=hn-Yycx~VmA9fD5MWEe}wM7OyzshI0bS{S6v~ z{7j34axL~@zjkSC)UZX_WFW1)HS8is#jaRwa*cHjwNfl(0z?^oDTj6ZBYSV^=naL! z+)3mx5DxH$Mrwp0?_F8`REf~UT3&Z-01h5O`?I907cR$0ev}I_AOFbIO@Z#VwqZFY z5aBG-{<@Zf*O~ST7hW>pgYy;LYho2Cd*F5RmW>TvEq%m&m{serhjj;#g>|fy>_5de zf_IJ8E5PT_F;M%>-xUvdFo=?IEbDzyFPoCrNy5xZPiW%^AAPr%ewI@s%e^m{_e<`t zF`kN0A+QZ^ar*W;S1o#}{?$A?XY+p82TVOje;1WrCejEk&EUZ~hmnGM$-S4%n#TBv znSFO3Jb3rMnG@sgW3TWQ@n^dZ#=7J7WIWb=Fr7Zw9gB;Ncz5jJu3uzXOh3co7uC_( zvsbYaa?sWqA}yD+BpIqQovQU5Ds!0W?KwaCy==D%k~Ys12<(^zd5JWMw$o98@~2Jn&j6qcQO+61@m( z9h?zaO|jmIKZ4nmq5g;j#QCG)D`YX537i;q*iPjSvSIU&m8U-ly1)-XU^BiFK1m=3 z?kPUyJaK&Fr-8Z1b{U!nQqqabz9;jHW?I}J0~x95l(w2WMX&XK`(g6ajE3wD?kFhq zT4A{f@Hu#6BjuOK23q0N!B?s`X$Dm*2*jV_3A%@gxV?d`2i~5xJV(z3L{>U?%PW7N zl@40Hjoe!X_Vq0G^(e4IKyzUbuiJ`9+2+zv_i;s{}~A zAF$qlZchEkv|oWSr}0(Hdjy4OK;qF=Th}ste+@UIF~Jy?mxF{4fb#)i5W#3 zdWiylF<9^hBfUJ@k;fMvlO#Dh&+nHWW3mkj%_cp%D>H67Ry5T*j+#kyW83WzqCa_L z*RE@)ZsCk|&0S+~^XS$Z@-z1TyyMh;yh+N43mI-LM03+E;(L3qOYd4p-U{DRVZwbD z?w@4fSmnp>J9UR>IipJ=7m=|p&J5RdE6q7)-LIgJB)$hPcxYIpl_4lswR=P)6YER9 zP2|O2c=)$6D!0B$qP?fGTH}lZhTVU3tQ3cEa|A zIz?Ol<>(6>z0Lq=lHu?ro{E}yU~Dch#sWTfXq^^AuGBKp@16d*4Z zFsDhsK=g1w_JP{F!9jxzI%<4koPEdNVy7txjZA#Ya0Fvg4&f0Jq@Ib)oM9h@DUNj4 z<_h0M&L_f^1V?k?t6JJEAC;8n<8`VMA5YSRH4Os$&!8{53oTB|K}nv2P1Zk zrx8yeA$bTsrt8`Wq>s$}4ZpXN*WdM#xuRfxvYK(wN0qWIbw+xBloo{2%8Ko2LBf1c zwp^^Q{lMM3lW`oF%DOCxKX!ZW$~j}@$7s6z^4?CR?5nC#IzvKeI-Pze?=Q1PvqWrUO1ipfxVI{>!jIc-AB)EYw za!XOH_F=Is0w89NoMnwg15s-QYL&k`XZ%x;wtM7?z&ByMz?*+d(^aS}W`IMoGwAUoG z)$1m9PwOM})H?bfnkECDoFS1M3*=x^S|1XlVsr>v#_tW4N<&P`E0B*VA43`X+=ePw?GC436)N^q_SE+%)9_MZ=B)?TC7)K5?l5+?xE2s zY&r|ikh~xnj8@yZ$*xElnr8s~k_qER$__Hed=s*35Vk3? zez7?y@*yy@WEY)fEh~+#xt7gVi%8G5RxV`i5)-L7MBpOvp7f3W18V@qV1-Hi^bo$B zKR=b@XO@SD`d!9Dq~`~}!88e?x?Ba4`xq2yW;lR`-|$!RAyV17sKjcg3}2!)=f{uu zUI3#qFddD?O3e8x(@rTCg-fpcll4oY$b7H7pFatv5lh62ZtUQk8Q&KiPQ>SjTvpu4 zq4{`XIJj?cJ`u;Cp}7RU&1iMn44z2L4dKCfVt&w;X2AwxwBhw`$b4{N*TjmS!JG*} z=duDnnK-zi5M)lrx0v$H7@RPM!9;89#J^DLEP#6jo=3e_Jzzd%CM!t-WOY|^n^UU(jx zBW?q^%$pT64$2Em$(+c-b{i*8J=)71{Y?*hW%y~^qgWu`F%D%>EPDqkP*a@uui*W8 zem~rU@qV!)->=&Pv=*!ztVTd1n#RKO)gPL{=NCu@L^J51uC8Oa+pn%Mn9nmg__Gi$ zy?3Q63r{{-`}MAU^$WEdaKP;_o-kJ7*Z8Nj?*bww341{4)97$xL9~B*;X5X{ksl=< zBwTy&zO1=vg!z4VBOJ!z2X18-pMQSwJKy0?^Ha_dzT^GS)mjiu6>oss$;XZmCQY!> zggD9f#BtAc+zxbBNSMzu1f{@9+(A?gKTWmwHydq`uUQ{OvwAKA9V1O~@?uZNtvFd- z)5z z=6?Ctc|MQl^YVEPUPWH20bmGU3|p+Lwb1Ok?MElUs}iTFV0%;Kt?f%EUSFl zr3AVN7Kl8{T%AX?Vu@*xq)*aEWqf@m zuou#$S%l2FcfkH*VjK{9K@lLeBX2u2Fu7`&y->Zqa58<05D}X28ws9DpNt97G_5riTr4=3G;h0uT?*iV5Nx{RoAd0`47cXa)&m`c`;ULgj$i#=_SuE!pI>-3 z`@PS9{wvqgk66DW+|x#gVer@QiQMtcx$fQZ#NK3bZz8cfHrqQlIIu7>bYx)QK+oih z_7|R|&EQ%43om~D^VeK+%}4E{*L?IEOdQgWN`E`zT}F``50P%5t5Kq?zP5E=`O5;% zG(w7sm%VkG*2?r-FVhik4U7{rQ*hWs7+a-M(o01jspLcr1cd0g=1KPO7;IV5ibGcJ zbu7ImSu)l96VUI@pT0^a(Ais*g z;;(#zwbJk)7hxB;>3F6uYL6yn5WqS_UaR;j{z`u38!n_h?tXVdbH^lS@77HCaANFi z4GUI3SD?S|;E-sen$eNI=ELn6JT5~A`}(;r`hmavE_4F@bzQ-HDq%jAK*zjeJAP~q zaX;qRj^} zI0&In{3C9hdZa2&kja*ppNBICJaRVdNvyFF>+mQ?8Rg70#%M#rF2EEFqUa85C*Jqk z*G}>8-q*f%ulVr!D!GZfYQH8`^n5kdI%vYCB0UZHBe2xI<63f1yjelc(Y50FY6xak zOqy{xvVu1}U+ut;N*PMh*df#pb;~F|(Nhxw!9n}>!kA86U(FG~oo?^>Uwm@nkxw7H z^wW<_nCs{zDBj$DB|_?bZR6z0Pra%0SAVthO`jq@qeeTEh}J}1B!Nl(w@@3^YY}NjR{Rthms(hwkL?JI+ zZFRYzBkDK8nT^BNvL#+PSZ zj|*o}x;5ps3r3#W>F5Z_m!Zo@AoDrwopI)k(s8CUG4M!n;*)s%GvlM|S-^~FhOD9U z2Z;3~Sa2D-OG4a7kf5 z-v^4~l)ewNE{WdKm)O3oaYb_t{+qwz;#FLFSE-u)#vcT#34W1VnWdS*$xYxX5~z^cq>#=?%v z_lws#jXC-9gN^<-+VfcpW)UsI|YNqp!6! zEM9syis#s4TsmPVya`N#UlML@?dwROe@*;9#`{m0;=d=}`(YeoEH0oKEb z2?=)LmbX?y#yg13lFwDp%ThSrV2%Y$CXg=H);6}*iENTPt`k@~;BK6^O7Yc&lYhBj z|HJt!wSI>0{5I8#>{TGVuq7us)Al%OmI|wQkb0>FHAd&uK9C!td`>X?>Q;M_gJOw) zE$F4|ykR91ER7^&LC|?As@N^n-V6-AAph+q_w})tifl&Yc_U&BLRu?2ramH|Pc_27Hip zLj>8t;$!z8_tRPe>?>P7w6eTfeKx)FlWeS}Mvg&{}sEsGfh>E|@LjfBcOGR@`=)E+1IZnNxU)N(00MOS;^Cnj zm)x~GnV9YC97g}N*-sMyVv|tM+%<20G=~ghx4G|Gt}8(D;8I^hXh`JQ=HQu->f7BX zvj5`JV%g9evZK_tmlL4l(UQ~nTe|=}9qxk<>{#xW(b0?mts}&*#`E%io35@mwr}$I z@W^!A$@Zl^*_DL~kh~^q&8oYko`@;RmRc5TsGalg0x~J4SXITi4hnS; ztv~OG=Q2rFlETs@&r$CiR&aSgNOuShIV%EOZ0(d;QcVdb!maVJSbLa~!v@V0uJ*+x z2o9^w*JN-aayzQrr^uTsDpI}hWguGurWkpmD&4yi@jXc<9;WnrW_j*kb$>e$_c?M^ z;zQ+`KXv>DI2U$|mQRvC1aU-+ux@RqF|ugp%I(s^PJ+z>{+hZPZm^#?c`S=OEsug& zgT9NsRNxnYV-u(}P+U}9kDBsWCGT+Sjz(yI_uhG|3_@>H00H*d?SKaeKLq#$c<(%q zJ}L^2J!Zpa20ph~HzX7923F&{jSmqOmy#a8`NEVQSUBA(FjvwwQj4(I2rqCpcrL2A z*+sW>P-nAU5Satxuw=XGq7nw+?p4-G6!vmqf0zw@IQj(eGWu8&iku=~*tT#a6>sVU zb!^YFM1xUb84BK(ASoTgot>%ZiKh-7zWCz9hn_mYX&!{Q(SFzR>nHyI_O3m!s^ZN5 z<|HBS=e>Cn%*_j8UPK5X)hI!u4Q|k=NyIglpwXa2q#6|!^r~4)D_X2jvs=2$3bsg4 zqhh7qRHMa~YHYD3n!2=&EmhpGmRhXYHeB}i%{h~M$OCcr&)vZ9&NuTtX3lHQoOygx zP)Y-#R=+-pA<3Wb<0#P09w7RB%w8~K#=O+n6t20o7nzA8se}l7fVEw`V~22OfNxz9 zEQ7sfG;n{!StTVM3!}V|biMj!p{`1}z)HTk%r(p4io4({dbSH@JCoL(GwPgua}^i{ zeLC1nvpBPfbFXrpRv~?1hJ`Fzq&@fQ+KBhH%*QFxzpRmUW7%F?+8DB<(b}X>jb0ZL zcK6*pVCjjGuGC}QcGsw1pJiv~5!+a|G_qoxcE60JMsvNl>_(BrwdK;ce3t!=RQ!tM zKi!nojjZ60EcUS*nZY#n-ElZgL*6kQTa(_Md7Ssx7}6BrGpL(){9!B5{^JA5vaplc z=2)A!*984na(X0_`JXGS#z(}JC0$-pUmt~jemFnG_IGjyy-i5}+EgR^P7~erbeWc$ z^QdK;how;EPRp@JImbqSbFFT6lO%e*ob;6uoKYUw5u|lDik`@x-&Q(%q1Cu>_U!9s zswTP}<&Eg!Rt+%<3ul+M<*VVz7W7S))|BM&ROYW(kzeWYa0|v*Us6(GniJ){$XPh( zqi^zIJ%({1cZI)!XF$KK|CLd+vun;Ss*y!?5PZSFeCgq)2E;33%su< zXIu6}Z7W&q`Wp*_XN9$aWyQ>pedZIh;}bGt<>Nib)|u<8(Hz6hm>f@IV|qb+d@>*R zgoH9*W23K(1n5V`?vq+EVJ4d%1yUTrmfC&7tv}h55KOcDe*bZ{$HXm~bAR(rc2jDY ztIzyRoEzI6uvZWACJs`;+g)E*^ZoVz`|ixsUr_p!=zqNLj`Tg--|n%}%i;KwuxFEU zBOSXl%X$2r+Q6Cop*?}AVO{ff>*`h|`{)+3G&qP-DqFZUvRfxv^K}KRFnq=pxp{M< zX9Sm;%!r{mOYMN{R{L83j1q5 z+}Q(A&DAX+vkPAMlt)7+f_#O~nrFXvWXQ(uAT>8v`q{I@caPN=lIr!&%eKyH3YpF? z#hGXOD!iUFt6{2}DKN~PFZ7Zh-ASqJn=fS6*)tXu6)i01IMKjJ$ zt;)&0xG4Fg_uO!R!&(--Y9>Z%$AMw`PIa!M^lQnpG4VQn=F<@pEAwB;0sePiz|VMIROBOz7xO>sMl+@+eworSQ^vwQ^xU0lma5U2x-%_&Uikblw$$x6 zU}A16{X5PNH_IXY1G3qfey#`j?I*6hv4gv8@}t&HEaV#E9fdZ_8V=HdF}1=ShEG+i zkp>-Io>P0y(F*w3D!E$T$(%iWvgP>p;-^&i+c%YNxaZ9*cSbhto~K#PXR&=daw$)8 zir1OpbMlSo0^J#BB&X!Z+v_{|Dh;u&V0%-q%%7TbvR&)^G11(sO22jOCbMkk5;aW^ z00o*(!qnHW=>K%PEu7=ucDr>tsfBE}-GcRag7=Aj``BM^<`coROT$S>-IALELxKTz9AD3G+b1CNvS9hVhgdR-dOVJ!5Wa>fDU!OF>HcgZv;B0-a|w6arxajc|m_~wpX|lx6okS zW7hGeab1$k37)D1`SLyLd?)0Fjr$6+{F5#H3)t;_zw)~`_n4w!b_;&Txbn$3ioKRZ z_EBDlOQeK)RNMA9;_6|aYkOPK=SbiAQ%=I3xFLzh7ZV#tS3f>akSe<>KfmPINJ)PF zRb`VMo%@)qJ#jHH*-4)4n3y=BJV`wkGXC$ofm_UW%hnCYE=mqmS-PEKf2&kGBTh^*eNyHn zXJ1_7#8ZYT=h{Df9Z$WeOkABf<1te@J>r*2A!mZI-%R)M2FGR6*h_FFOQP?X6MB#A zTIYlvMaDXh@^ypCbcW%=9tLMZq z$yDz&Ih4>>$*KOz}=6r^8GXZIG(Hp|pFunWBM9#P4fN{e4pU(|^C%YctKunZ3 zBCwB6r!7?y>51mN>fjfL#(jx1y@y_KnV!TR6P*Pku@TSFr%ifkVuIJ3kXV{7CcSo@Dc@&XStERr zXJX91pj{cvcMr6=YO`5x*8)z{+jSS^TGhT}kEbF#`wPk5H07I{l;{b5OwP*BYdfcI z#vD&l3a4C@WM+OLBfTVH8hz!2_%f&eU17-9bv4;%rlh2&r=*;j9Y5>xva+^{;H>Ya z$7>g@oiqAzvM1?`=^4d|iD_ZeJaKWkDc&OS7|!iOrf2g$2|m9rpCFSzyC-ZL;Vf=< zdnpS9H;p*SGs|^ds-`O7cjXDS^%jnWK<{k@^j~I4GY&E!k(#>Ab;0CWjN`LqVubQT&c%bbG+~X8U5CT{daM`(fMO^Cj+VM3jU$Qbrl5S)r&B$EmN(X5JDa+f035~q)CC%71 z>0(=W5*MC3U3e0gP{=Lj)@EHVC>!z zJ;R?We^U;T6Mds2p~NNK@F;7Zhp}|G-CHRuabv^iO1zI4a3C@w>*h;d4op3xLrD{P zw(G{O2kl5XbXiDiyJCy7%GjtPO^orxhJne~geILfCzM@eBwa!y=j3rh{7y$^z>zb0 zqEqC+&~AGoXHe{-jjZTOekK%J;|S66TLtt2iP;06NiA)3Wz#l3y@Vtuq?g~Ae;Q$c7if_gB&;P z2WD;qX6@u5tRpB_Fai|%cskOE13+;Xv6s8Z^Z})`RZ892v{lCZ%2pGUpIb@n2FlZb zc}%Y$=4S$xtBJ#)gHvJzIFs=+Y4fauJYB88*~|Ip)&UC`uU-W#Y_Xdv=MDkqRTC^v zO(?MoIG?=pY3qVDKy3s;e(fl*sFRO%8F2)tV?GzL3>Sl-T)mfIewWk&mlBtC0S$+E zX`6w|mjFv>d&yDYioL*jr@~^4bmn%W3m^#&1|h^byQwMJCZoFy8JX_5nAt3^&#j>w%Rq zL<6x4xQYCmRuNl(Rhxk?`+=KT<__{ZhWMy&2X1R2Xyf(>g7)uV{7&Y7=WgJxN`hs$ zYYQ<7tnC5r-U!@NM~v`xKLXrKo%?9-KF06g33PT6O#g>o;xO<4?R_PUC?~prbu|R- zeYJq-2fo$}JV<(dCecdl0Un~vLzI1JFF{)mQ|{qIz}Gv0M-qrN1oQjG24Vw)J$Fu&*9iBW#;^#d<3?S(Gj#d=_OIYGJa#}Ktd2eBFWH`?u`z1}^* z532~4;iXK1^h+$m%anbYdM_Vl)!q)g;ssu9Al4Af@6}P@N3Fn~a^N-Ed94TdG39>} zK`bYRfW1qI{lHJ_2j!?8Kx`mJfS;&E+JxKg24S1J2|4!Qn@`yFW7U0)jVifod@!JMq zs1?@9cI}NQ}!b-@W)W%C~$=K|I`3{+(8Tie`XnuQs$Elz+Wiyml5F8 z)xgLq;J;c3+W9N<`D;6|7xU^vP$9*ZED|FPXbAdjHkKo4-dm#@!iVvs(M5{Psx)FfLD>i&L0&`;aR@51oMc$D6m$^>pk}P2OK;ldJ4azr0% zH`IbMVmnkd)2sJGEv$q(m%8U}hB}XWHRPR7+ZQZ{`eH3qZ64I38e$0Q!Um{1%GPaw zT1?(Wbp&l*TtIX|)khGki9=AAtRW6VUD`n$gu0Bnm$Cep^+GjxiCqNwP0Xu_{3Y9= z{(c1N%56~1EZbG(P+ux0nD0{N(ZaGVYk|6&^4GAet&Cq=26bHwR9hNB{kB1<<*T4> zsDx_IBSxWatRprO%y;E_sGB;WzT5|OGv#j~&3A#iHG(({{lrwjJtj=682L)IGHXb^I*Hz0B+0{ZRL9fVv;Va;VN~LPF;G0L$~hPN=Wc zK&_+guQo${tqbZw+Io|uVd?SlHTAL=KyL?6`NRZu@o zfO?(w-ta;7Gw(NfoNrR@XMzJzKkpz$q4sq_y;VsZf%*mYS;wmVw7tKFI0!WWqLrZi zft^rq7Zdda<=);*>?4jsy^~4M<~#jRgP{a@WDV4(%=6QuP$T5CPE~(B0`<3zP@@N-j`5fRmBdlq z>20BheybW_SsmQdoCvEY_Q9IA3RZXvu^CoG0W8*sR^%F3Y+GB=&BP$Am|9{8RxI-X zd(^EZNQ3-Y`uD`2I6N&<{8OAwC%^J%adh!XhYn$SwL^!Je$k=B=vSc7p{H>s_YDpm zg>t-y5Z39DOc9$lZQHbI+onz1Hf`FrY17lFdyk`Q+gyxg+@<$g+)Q8C%h1lgu?Z*|*_V7I7I1d&=430$tn=7PyTTR_cSW54n|TSK|);+6TFql5%LJa&}Mp_uq*W BAPxWk diff --git a/public/assets/Material-Design-Icons-f2f882cedf940c50384f6e7adca3979f.ttf b/public/assets/Material-Design-Icons-f2f882cedf940c50384f6e7adca3979f.ttf deleted file mode 100755 index f0c07f7a91f4c73c9f0972e47aa5e653daa30df4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141528 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

9rLLtfHkP8=eC>7lE4jploM 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 diff --git a/public/assets/application-2586af1985f260752f7ec7a36eb90890.js b/public/assets/application-2586af1985f260752f7ec7a36eb90890.js deleted file mode 100644 index 577a829e..00000000 --- a/public/assets/application-2586af1985f260752f7ec7a36eb90890.js +++ /dev/null @@ -1,14205 +0,0 @@ -/*! - * jQuery JavaScript Library v1.11.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:42Z - */ - - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var deletedIds = []; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.11.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( support.ownLast ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v1.10.19 - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-04-18 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== strundefined && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, - doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", function() { - setDocument(); - }, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", function() { - setDocument(); - }); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { - div.innerHTML = "

"; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowclip^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.unique( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !(--remaining) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - - -var strundefined = typeof undefined; - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownLast = i !== "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery(function() { - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -}); - - - - -(function() { - var div = document.createElement( "div" ); - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( elem ) { - var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute("classid") === noData; -}; - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[0], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data( this, key, value ); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; -}; -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - // Minified: var a,b,c - var input = document.createElement( "input" ), - div = document.createElement( "div" ), - fragment = document.createDocumentFragment(); - - // Setup - div.innerHTML = "
a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - div.innerHTML = ""; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - support.noCloneEvent = true; - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } -})(); - - -(function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) - for ( i in { submit: true, change: true, focusin: true }) { - eventName = "on" + i; - - if ( !(support[ i + "Bubbles" ] = eventName in window) ) { - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - col: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!support.noCloneEvent || !support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - deletedIds.push( id ); - } - } - } - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[i], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "