From 773e9af0a0da5504a4784b9ad0392f1ada4e151f Mon Sep 17 00:00:00 2001 From: Amayes SADAOUI Date: Sun, 12 Mar 2017 14:12:56 +0100 Subject: [PATCH] controler --- .idea/Symphony_S_A.iml | 6 +- .idea/workspace.xml | 400 +- composer.json | 1 + composer.lock | 1327 ++- composer.phar | Bin 0 -> 1836198 bytes src/AppBundle/Controller/HelloController.php | 35 + .../Controller/HelloControllerTest.php | 25 + var/cache/dev/annotations.map | 3 + var/cache/dev/appDevDebugProjectContainer.php | 4328 ++++++++ .../dev/appDevDebugProjectContainer.php.meta | 1 + var/cache/dev/appDevDebugProjectContainer.xml | 2800 +++++ .../appDevDebugProjectContainerCompiler.log | 456 + ...ppDevDebugProjectContainerUrlGenerator.php | 54 + ...DebugProjectContainerUrlGenerator.php.meta | 1 + .../appDevDebugProjectContainerUrlMatcher.php | 119 + ...evDebugProjectContainerUrlMatcher.php.meta | 1 + var/cache/dev/classes.map | 99 + var/cache/dev/classes.php | 9764 +++++++++++++++++ var/cache/dev/classes.php.meta | 1 + .../pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI | 4 + .../pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu | 6 + .../pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 | 4 + .../pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- | 4 + .../pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h | 6 + .../pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE | 6 + .../pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q | 4 + .../pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A | 6 + .../pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd | 6 + .../pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI | 6 + .../pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ | 6 + .../pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U | 4 + .../pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f | 6 + .../pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt | 6 + .../pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 | 6 + .../pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr | 6 + .../pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm | 4 + .../pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k | 4 + .../pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R | 4 + .../pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV | 4 + .../pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY | 6 + .../pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF | 4 + .../pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK | 6 + .../pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol | 4 + .../pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 | 4 + .../pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X | 4 + .../pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh | 4 + .../pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX | 6 + .../pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 | 6 + .../pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S | 4 + .../pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX | 4 + .../pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG | 4 + .../pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj | 4 + .../pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ | 6 + .../pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N | 4 + .../pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 | 4 + .../pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe | 6 + .../pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD | 6 + .../pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU | 4 + .../pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J | 6 + .../pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a | 4 + .../pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG | 4 + .../pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy | 6 + .../pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e | 4 + .../pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 | 4 + .../pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk | 4 + .../pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum | 4 + .../pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi | 6 + .../pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE | 6 + .../pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul | 4 + .../pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA | 6 + .../pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC | 6 + .../pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 | 4 + .../pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 | 6 + .../pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y | 6 + .../pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E | 6 + .../pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n | 6 + .../pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 | 4 + var/cache/dev/profiler/23/64/246423 | Bin 0 -> 131116 bytes var/cache/dev/profiler/26/46/d94626 | Bin 0 -> 289405 bytes var/cache/dev/profiler/d9/f4/dcf4d9 | Bin 0 -> 209205 bytes var/cache/dev/profiler/f4/97/e697f4 | Bin 0 -> 132493 bytes var/cache/dev/profiler/index.csv | 4 + ...368ac88822579b2f135e7891c8da4aaded3f3b.php | 80 + ...37db9aeb4eeb4182230564b784cce757a68fde.php | 405 + ...e93255d471d5417750ca6332ab00bdf5d66417.php | 1119 ++ ...6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php | 66 + ...06624d733587a6261ffd914e750aa6451c5cb7.php | 173 + ...feb614df3f6329b6ec4f64ec01d9a470c26e88.php | 66 + ...09404817157e76a380160acb92a167fefaedbc.php | 386 + ...6399221d2608b309f21d8097400f8b4468f671.php | 847 ++ ...ad7a69e7859952d590d26fa09b0dbaa98aef15.php | 66 + ...4a7b7b5bc10ef92ef04b94e1297ad823f70caa.php | 154 + ...1b80442f39980bfa5b58d0160b5ddc4681abfd.php | 219 + ...7f605b8becc3ea53d5c619102340a8ab549a0f.php | 1019 ++ ...5a5d4379088451697f2c223ca7c587e8797d42.php | 70 + ...51c09e3b5a77ce10bb4186b8b524d49834960f.php | 940 ++ ...091148afe939b0c9c35bcd96cdcd077a74c770.php | 1571 +++ ...61be09ea5e55aec049bf9056b600ac088c37d3.php | 395 + ...e8f2495741ce63014010110676d1d75c8c4f84.php | 590 + ...34ef67c0a378d51a8af8895353dcd52bb8cdf4.php | 154 + ...7268e8b49f3e38b65a09b487a79a7c0dad4e70.php | 2024 ++++ ...39e0de6921a7da33d85b10647e58bd8341b1d6.php | 170 + ...1941baaa573d420c90e339d0f948b6de0a18e4.php | 149 + ...e4183fd9cc59259985e573cae4bd34041b305d.php | 391 + ...b00812505da9b56251552530b3f73f7347cacb.php | 632 ++ ...c4ef0f917279c6c94f490065a692a69c551eb5.php | 66 + ...8e60addec06fcf7d735ccb91f0b1aa857d95b1.php | 155 + ...bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php | 96 + ...f900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php | 68 + ...158e8508d815ffebccbf0995e56374ffbff7b3.php | 259 + ...94d2251cb7431a28b744c4b0f2ef398adf4224.php | 81 + ...ce368c7c43c1c541d63b5001faabcaa1a10af3.php | 70 + ...28bf8865eb1542240f4ad7fde929cd91e5b5f1.php | 1628 +++ ...fae063acc921f9b7ba52403dffdc9a161e5c04.php | 1122 ++ ...18d75106f984580e89c6c75684bb1bbce243ee.php | 147 + ...1239e871b99523e3ccf0a35dd9c2fc334addef.php | 214 + ...76db1716a1169bab57e1bb4112bbfa3819cc4c.php | 120 + ...5adf4a7f382039d5f5d60b26452fa1a9bdf986.php | 70 + ...50a169d9a5fb82e05afaaa8d87a250260ebbee.php | 62 + ...6dca21095f7a61812b364de12a15f7f38b78ec.php | 91 + ...83cf960ce5a9f8d09ad76932b947d49930dd48.php | 832 ++ ...c6e80bb705e6099fab1b761851b81cdd928abb.php | 853 ++ ...3e3648c64e25db63865d6b529e9c0b3a980581.php | 97 + ...c18e905369826016c015c2b18db5579cf7e319.php | 405 + ...bab40a3626a746a51e7cc5139b9a7140e2c607.php | 333 + var/cache/test/annotations.map | 3 + .../test/appTestDebugProjectContainer.php | 4330 ++++++++ .../appTestDebugProjectContainer.php.meta | 1 + .../test/appTestDebugProjectContainer.xml | 2753 +++++ .../appTestDebugProjectContainerCompiler.log | 447 + ...appTestDebugProjectContainerUrlMatcher.php | 124 + ...stDebugProjectContainerUrlMatcher.php.meta | 1 + var/cache/test/classes.map | 100 + .../pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- | 4 + .../pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI | 4 + .../pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu | 6 + .../pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 | 4 + .../pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar | 4 + .../pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE | 6 + .../pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A | 6 + .../pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd | 6 + .../pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI | 6 + .../pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ | 6 + .../pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U | 4 + .../pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt | 6 + .../pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 | 6 + .../pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr | 6 + .../pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm | 4 + .../pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k | 4 + .../pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV | 4 + .../pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF | 4 + .../pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK | 6 + .../pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol | 4 + .../pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx | 6 + .../pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X | 4 + .../pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh | 4 + .../pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX | 6 + .../pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 | 6 + .../pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S | 4 + .../pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX | 4 + .../pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG | 4 + .../pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj | 4 + .../pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ | 6 + .../pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N | 4 + .../pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 | 4 + .../pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe | 6 + .../pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD | 6 + .../pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU | 4 + .../pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J | 6 + .../pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a | 4 + .../pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG | 4 + .../pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy | 6 + .../pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x | 4 + .../pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e | 4 + .../pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr | 4 + .../pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 | 4 + .../pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk | 4 + .../pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum | 4 + .../pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi | 6 + .../pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE | 6 + .../pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul | 4 + .../pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA | 6 + .../pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 | 4 + .../pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 | 6 + .../pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y | 6 + .../pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E | 6 + .../pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n | 6 + .../pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 | 4 + .../pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 | 6 + ...06624d733587a6261ffd914e750aa6451c5cb7.php | 173 + ...158e8508d815ffebccbf0995e56374ffbff7b3.php | 259 + var/logs/dev.log | 10 + var/logs/test.log | 6 + vendor/bin/phpunit | 1 + vendor/composer/autoload_classmap.php | 462 + vendor/composer/autoload_files.php | 2 +- vendor/composer/autoload_namespaces.php | 1 + vendor/composer/autoload_psr4.php | 3 + vendor/composer/autoload_static.php | 494 +- vendor/composer/installed.json | 1250 +++ vendor/myclabs/deep-copy/.gitattributes | 7 + vendor/myclabs/deep-copy/.gitignore | 6 + vendor/myclabs/deep-copy/.travis.yml | 37 + vendor/myclabs/deep-copy/LICENSE | 20 + vendor/myclabs/deep-copy/README.md | 290 + vendor/myclabs/deep-copy/composer.json | 21 + vendor/myclabs/deep-copy/doc/clone.png | Bin 0 -> 12380 bytes vendor/myclabs/deep-copy/doc/deep-clone.png | Bin 0 -> 14009 bytes vendor/myclabs/deep-copy/doc/deep-copy.png | Bin 0 -> 10895 bytes vendor/myclabs/deep-copy/doc/graph.png | Bin 0 -> 6436 bytes .../deep-copy/src/DeepCopy/DeepCopy.php | 246 + .../src/DeepCopy/Exception/CloneException.php | 6 + .../Doctrine/DoctrineCollectionFilter.php | 31 + .../DoctrineEmptyCollectionFilter.php | 24 + .../Filter/Doctrine/DoctrineProxyFilter.php | 20 + .../deep-copy/src/DeepCopy/Filter/Filter.php | 17 + .../src/DeepCopy/Filter/KeepFilter.php | 17 + .../src/DeepCopy/Filter/ReplaceFilter.php | 35 + .../src/DeepCopy/Filter/SetNullFilter.php | 22 + .../Matcher/Doctrine/DoctrineProxyMatcher.php | 20 + .../src/DeepCopy/Matcher/Matcher.php | 16 + .../src/DeepCopy/Matcher/PropertyMatcher.php | 37 + .../DeepCopy/Matcher/PropertyNameMatcher.php | 30 + .../DeepCopy/Matcher/PropertyTypeMatcher.php | 38 + .../DeepCopy/Reflection/ReflectionHelper.php | 39 + .../src/DeepCopy/TypeFilter/ReplaceFilter.php | 27 + .../DeepCopy/TypeFilter/ShallowCopyFilter.php | 14 + .../TypeFilter/Spl/SplDoublyLinkedList.php | 37 + .../src/DeepCopy/TypeFilter/TypeFilter.php | 12 + .../src/DeepCopy/TypeMatcher/TypeMatcher.php | 31 + .../reflection-common/.gitignore | 4 + .../phpdocumentor/reflection-common/LICENSE | 22 + .../phpdocumentor/reflection-common/README.md | 1 + .../reflection-common/composer.json | 29 + .../reflection-common/composer.lock | 974 ++ .../reflection-common/phpunit.xml.dist | 26 + .../reflection-common/src/Element.php | 32 + .../reflection-common/src/File.php | 40 + .../reflection-common/src/Fqsen.php | 78 + .../reflection-common/src/Location.php | 57 + .../reflection-common/src/Project.php | 25 + .../reflection-common/src/ProjectFactory.php | 27 + .../tests/common/bootstrap.php | 10 + .../tests/unit/FqsenTest.php | 88 + .../reflection-docblock/.gitignore | 2 + .../reflection-docblock/.scrutinizer.yml | 32 + .../reflection-docblock/.travis.yml | 36 + .../phpdocumentor/reflection-docblock/LICENSE | 21 + .../reflection-docblock/README.md | 69 + .../reflection-docblock/composer.json | 28 + .../reflection-docblock/composer.lock | 1120 ++ .../01-interpreting-a-simple-docblock.php | 27 + .../examples/02-interpreting-tags.php | 24 + .../examples/03-reconstituting-a-docblock.php | 27 + .../examples/04-adding-your-own-tag.php | 135 + .../playing-with-descriptions/02-escaping.php | 47 + .../reflection-docblock/phpmd.xml.dist | 23 + .../reflection-docblock/phpunit.xml.dist | 33 + .../reflection-docblock/src/DocBlock.php | 220 + .../src/DocBlock/Description.php | 103 + .../src/DocBlock/DescriptionFactory.php | 192 + .../src/DocBlock/ExampleFinder.php | 170 + .../src/DocBlock/Serializer.php | 143 + .../src/DocBlock/StandardTagFactory.php | 314 + .../reflection-docblock/src/DocBlock/Tag.php | 26 + .../src/DocBlock/TagFactory.php | 93 + .../src/DocBlock/Tags/Author.php | 100 + .../src/DocBlock/Tags/BaseTag.php | 52 + .../src/DocBlock/Tags/Covers.php | 84 + .../src/DocBlock/Tags/Deprecated.php | 97 + .../src/DocBlock/Tags/Example.php | 158 + .../DocBlock/Tags/Factory/StaticMethod.php | 18 + .../src/DocBlock/Tags/Factory/Strategy.php | 18 + .../src/DocBlock/Tags/Formatter.php | 27 + .../Tags/Formatter/PassthroughFormatter.php | 31 + .../src/DocBlock/Tags/Generic.php | 91 + .../src/DocBlock/Tags/Link.php | 77 + .../src/DocBlock/Tags/Method.php | 230 + .../src/DocBlock/Tags/Param.php | 141 + .../src/DocBlock/Tags/Property.php | 118 + .../src/DocBlock/Tags/PropertyRead.php | 118 + .../src/DocBlock/Tags/PropertyWrite.php | 118 + .../src/DocBlock/Tags/Return_.php | 73 + .../src/DocBlock/Tags/See.php | 81 + .../src/DocBlock/Tags/Since.php | 94 + .../src/DocBlock/Tags/Source.php | 96 + .../src/DocBlock/Tags/Throws.php | 72 + .../src/DocBlock/Tags/Uses.php | 83 + .../src/DocBlock/Tags/Var_.php | 118 + .../src/DocBlock/Tags/Version.php | 94 + .../src/DocBlockFactory.php | 277 + .../src/DocBlockFactoryInterface.php | 23 + .../integration/InterpretingDocBlocksTest.php | 97 + .../ReconstitutingADocBlockTest.php | 35 + .../tests/integration/UsingTagsTest.php | 39 + .../unit/DocBlock/DescriptionFactoryTest.php | 174 + .../tests/unit/DocBlock/DescriptionTest.php | 75 + .../tests/unit/DocBlock/SerializerTest.php | 201 + .../unit/DocBlock/StandardTagFactoryTest.php | 361 + .../tests/unit/DocBlock/Tags/AuthorTest.php | 148 + .../tests/unit/DocBlock/Tags/CoversTest.php | 155 + .../unit/DocBlock/Tags/DeprecatedTest.php | 166 + .../Formatter/PassthroughFormatterTest.php | 41 + .../tests/unit/DocBlock/Tags/GenericTest.php | 146 + .../tests/unit/DocBlock/Tags/LinkTest.php | 158 + .../tests/unit/DocBlock/Tags/MethodTest.php | 437 + .../tests/unit/DocBlock/Tags/ParamTest.php | 228 + .../unit/DocBlock/Tags/PropertyReadTest.php | 201 + .../tests/unit/DocBlock/Tags/PropertyTest.php | 200 + .../unit/DocBlock/Tags/PropertyWriteTest.php | 201 + .../tests/unit/DocBlock/Tags/ReturnTest.php | 170 + .../tests/unit/DocBlock/Tags/SeeTest.php | 173 + .../tests/unit/DocBlock/Tags/SinceTest.php | 166 + .../tests/unit/DocBlock/Tags/SourceTest.php | 199 + .../tests/unit/DocBlock/Tags/ThrowsTest.php | 170 + .../tests/unit/DocBlock/Tags/UsesTest.php | 174 + .../tests/unit/DocBlock/Tags/VarTest.php | 200 + .../tests/unit/DocBlock/Tags/VersionTest.php | 166 + .../tests/unit/DocBlockFactoryTest.php | 290 + .../tests/unit/DocBlockTest.php | 252 + vendor/phpdocumentor/type-resolver/.gitignore | 3 + .../type-resolver/.scrutinizer.yml | 31 + .../phpdocumentor/type-resolver/.travis.yml | 34 + vendor/phpdocumentor/type-resolver/LICENSE | 21 + vendor/phpdocumentor/type-resolver/README.md | 169 + .../phpdocumentor/type-resolver/composer.json | 27 + .../examples/01-resolving-simple-types.php | 13 + .../examples/02-resolving-classes.php | 12 + .../examples/03-resolving-all-elements.php | 17 + ...ing-the-context-using-class-reflection.php | 30 + ...ng-the-context-using-method-reflection.php | 30 + ...vering-the-context-using-file-contents.php | 22 + .../type-resolver/examples/Classy.php | 16 + .../type-resolver/phpmd.xml.dist | 23 + .../type-resolver/phpunit.xml.dist | 31 + .../type-resolver/src/FqsenResolver.php | 76 + .../phpdocumentor/type-resolver/src/Type.php | 18 + .../type-resolver/src/TypeResolver.php | 266 + .../type-resolver/src/Types/Array_.php | 87 + .../type-resolver/src/Types/Boolean.php | 31 + .../type-resolver/src/Types/Callable_.php | 31 + .../type-resolver/src/Types/Compound.php | 82 + .../type-resolver/src/Types/Context.php | 84 + .../src/Types/ContextFactory.php | 210 + .../type-resolver/src/Types/Float_.php | 31 + .../type-resolver/src/Types/Integer.php | 28 + .../type-resolver/src/Types/Mixed.php | 31 + .../type-resolver/src/Types/Null_.php | 31 + .../type-resolver/src/Types/Object_.php | 70 + .../type-resolver/src/Types/Resource.php | 31 + .../type-resolver/src/Types/Scalar.php | 31 + .../type-resolver/src/Types/Self_.php | 33 + .../type-resolver/src/Types/Static_.php | 38 + .../type-resolver/src/Types/String_.php | 31 + .../type-resolver/src/Types/This.php | 34 + .../type-resolver/src/Types/Void_.php | 34 + .../tests/unit/TypeResolverTest.php | 395 + .../tests/unit/Types/ContextFactoryTest.php | 188 + .../tests/unit/Types/ContextTest.php | 61 + vendor/phpspec/prophecy/.gitignore | 5 + vendor/phpspec/prophecy/.travis.yml | 39 + vendor/phpspec/prophecy/CHANGES.md | 165 + vendor/phpspec/prophecy/CONTRIBUTING.md | 22 + vendor/phpspec/prophecy/LICENSE | 23 + vendor/phpspec/prophecy/README.md | 391 + vendor/phpspec/prophecy/composer.json | 50 + .../phpspec/prophecy/fixtures/EmptyClass.php | 7 + .../prophecy/fixtures/EmptyInterface.php | 7 + .../phpspec/prophecy/fixtures/FinalClass.php | 7 + .../prophecy/fixtures/ModifierInterface.php | 10 + vendor/phpspec/prophecy/fixtures/Named.php | 8 + .../prophecy/fixtures/OptionalDepsClass.php | 16 + .../prophecy/fixtures/SpecialMethods.php | 36 + .../prophecy/fixtures/WithArguments.php | 14 + .../fixtures/WithCallableArgument.php | 10 + .../prophecy/fixtures/WithFinalMethod.php | 10 + .../WithFinalVirtuallyPrivateMethod.php | 15 + .../fixtures/WithProtectedAbstractMethod.php | 8 + .../prophecy/fixtures/WithReferences.php | 10 + .../prophecy/fixtures/WithReturnTypehints.php | 18 + .../prophecy/fixtures/WithStaticMethod.php | 10 + .../WithTypehintedVariadicArgument.php | 10 + .../fixtures/WithVariadicArgument.php | 10 + .../fixtures/WithVirtuallyPrivateMethod.php | 19 + vendor/phpspec/prophecy/phpunit.xml.dist | 24 + .../Argument/ArgumentsWildcardSpec.php | 128 + .../Argument/Token/AnyValueTokenSpec.php | 28 + .../Argument/Token/AnyValuesTokenSpec.php | 28 + .../Token/ApproximateValueTokenSpec.php | 55 + .../Argument/Token/ArrayCountTokenSpec.php | 58 + .../Argument/Token/ArrayEntryTokenSpec.php | 202 + .../Token/ArrayEveryEntryTokenSpec.php | 96 + .../Argument/Token/CallbackTokenSpec.php | 42 + .../Argument/Token/ExactValueTokenSpec.php | 152 + .../Token/IdenticalValueTokenSpec.php | 152 + .../Argument/Token/LogicalAndTokenSpec.php | 69 + .../Argument/Token/LogicalNotTokenSpec.php | 62 + .../Argument/Token/ObjectStateTokenSpec.php | 89 + .../Token/StringContainsTokenSpec.php | 49 + .../Prophecy/Argument/Token/TypeTokenSpec.php | 57 + .../prophecy/spec/Prophecy/ArgumentSpec.php | 107 + .../spec/Prophecy/Call/CallCenterSpec.php | 180 + .../prophecy/spec/Prophecy/Call/CallSpec.php | 51 + .../Comparator/ClosureComparatorSpec.php | 39 + .../spec/Prophecy/Comparator/FactorySpec.php | 20 + .../Comparator/ProphecyComparatorSpec.php | 39 + .../DisableConstructorPatchSpec.php | 54 + .../ClassPatch/HhvmExceptionPatchSpec.php | 34 + .../Doubler/ClassPatch/KeywordPatchSpec.php | 43 + .../Doubler/ClassPatch/MagicCallPatchSpec.php | 140 + .../ClassPatch/ProphecySubjectPatchSpec.php | 79 + .../ReflectionClassNewInstancePatchSpec.php | 43 + .../ClassPatch/SplFileInfoPatchSpec.php | 85 + .../ClassPatch/TraversablePatchSpec.php | 50 + .../spec/Prophecy/Doubler/DoublerSpec.php | 115 + .../Generator/ClassCodeGeneratorSpec.php | 362 + .../Doubler/Generator/ClassCreatorSpec.php | 37 + .../Generator/Node/ArgumentNodeSpec.php | 92 + .../Doubler/Generator/Node/ClassNodeSpec.php | 185 + .../Doubler/Generator/Node/MethodNodeSpec.php | 134 + .../spec/Prophecy/Doubler/LazyDoubleSpec.php | 79 + .../Prophecy/Doubler/NameGeneratorSpec.php | 60 + .../Call/UnexpectedCallExceptionSpec.php | 30 + .../Doubler/ClassCreatorExceptionSpec.php | 26 + .../Doubler/ClassMirrorExceptionSpec.php | 24 + .../Doubler/ClassNotFoundExceptionSpec.php | 25 + .../Exception/Doubler/DoubleExceptionSpec.php | 14 + .../InterfaceNotFoundExceptionSpec.php | 24 + .../MethodNotExtendableExceptionSpec.php | 29 + .../Doubler/MethodNotFoundExceptionSpec.php | 40 + .../Prediction/AggregateExceptionSpec.php | 50 + .../Prediction/NoCallsExceptionSpec.php | 27 + .../UnexpectedCallsCountExceptionSpec.php | 27 + .../UnexpectedCallsExceptionSpec.php | 33 + .../Prophecy/MethodProphecyExceptionSpec.php | 28 + .../Prophecy/ObjectProphecyExceptionSpec.php | 24 + .../Prediction/CallPredictionSpec.php | 42 + .../Prediction/CallTimesPredictionSpec.php | 50 + .../Prediction/CallbackPredictionSpec.php | 34 + .../Prediction/NoCallsPredictionSpec.php | 41 + .../Prophecy/Promise/CallbackPromiseSpec.php | 96 + .../Promise/ReturnArgumentPromiseSpec.php | 31 + .../Prophecy/Promise/ReturnPromiseSpec.php | 49 + .../Prophecy/Promise/ThrowPromiseSpec.php | 92 + .../Prophecy/Prophecy/MethodProphecySpec.php | 342 + .../Prophecy/Prophecy/ObjectProphecySpec.php | 283 + .../spec/Prophecy/Prophecy/RevealerSpec.php | 44 + .../prophecy/spec/Prophecy/ProphetSpec.php | 81 + .../spec/Prophecy/Util/StringUtilSpec.php | 91 + .../prophecy/src/Prophecy/Argument.php | 212 + .../Prophecy/Argument/ArgumentsWildcard.php | 101 + .../Prophecy/Argument/Token/AnyValueToken.php | 52 + .../Argument/Token/AnyValuesToken.php | 52 + .../Argument/Token/ApproximateValueToken.php | 55 + .../Argument/Token/ArrayCountToken.php | 86 + .../Argument/Token/ArrayEntryToken.php | 143 + .../Argument/Token/ArrayEveryEntryToken.php | 82 + .../Prophecy/Argument/Token/CallbackToken.php | 75 + .../Argument/Token/ExactValueToken.php | 116 + .../Argument/Token/IdenticalValueToken.php | 74 + .../Argument/Token/LogicalAndToken.php | 80 + .../Argument/Token/LogicalNotToken.php | 73 + .../Argument/Token/ObjectStateToken.php | 104 + .../Argument/Token/StringContainsToken.php | 67 + .../Argument/Token/TokenInterface.php | 43 + .../src/Prophecy/Argument/Token/TypeToken.php | 76 + .../prophecy/src/Prophecy/Call/Call.php | 127 + .../prophecy/src/Prophecy/Call/CallCenter.php | 171 + .../Prophecy/Comparator/ClosureComparator.php | 42 + .../src/Prophecy/Comparator/Factory.php | 47 + .../Comparator/ProphecyComparator.php | 28 + .../src/Prophecy/Doubler/CachedDoubler.php | 68 + .../ClassPatch/ClassPatchInterface.php | 48 + .../ClassPatch/DisableConstructorPatch.php | 72 + .../Doubler/ClassPatch/HhvmExceptionPatch.php | 63 + .../Doubler/ClassPatch/KeywordPatch.php | 135 + .../Doubler/ClassPatch/MagicCallPatch.php | 89 + .../ClassPatch/ProphecySubjectPatch.php | 104 + .../ReflectionClassNewInstancePatch.php | 57 + .../Doubler/ClassPatch/SplFileInfoPatch.php | 105 + .../Doubler/ClassPatch/TraversablePatch.php | 83 + .../src/Prophecy/Doubler/DoubleInterface.php | 22 + .../prophecy/src/Prophecy/Doubler/Doubler.php | 146 + .../Doubler/Generator/ClassCodeGenerator.php | 145 + .../Doubler/Generator/ClassCreator.php | 67 + .../Doubler/Generator/ClassMirror.php | 258 + .../Doubler/Generator/Node/ArgumentNode.php | 102 + .../Doubler/Generator/Node/ClassNode.php | 166 + .../Doubler/Generator/Node/MethodNode.php | 207 + .../Doubler/Generator/ReflectionInterface.php | 22 + .../src/Prophecy/Doubler/LazyDouble.php | 127 + .../src/Prophecy/Doubler/NameGenerator.php | 52 + .../Call/UnexpectedCallException.php | 40 + .../Doubler/ClassCreatorException.php | 31 + .../Doubler/ClassMirrorException.php | 31 + .../Doubler/ClassNotFoundException.php | 33 + .../Exception/Doubler/DoubleException.php | 18 + .../Exception/Doubler/DoublerException.php | 18 + .../Doubler/InterfaceNotFoundException.php | 20 + .../Doubler/MethodNotExtendableException.php | 41 + .../Doubler/MethodNotFoundException.php | 60 + .../Doubler/ReturnByReferenceException.php | 41 + .../src/Prophecy/Exception/Exception.php | 26 + .../Exception/InvalidArgumentException.php | 16 + .../Prediction/AggregateException.php | 50 + .../Prediction/FailedPredictionException.php | 24 + .../Exception/Prediction/NoCallsException.php | 18 + .../Prediction/PredictionException.php | 18 + .../UnexpectedCallsCountException.php | 31 + .../Prediction/UnexpectedCallsException.php | 32 + .../Prophecy/MethodProphecyException.php | 34 + .../Prophecy/ObjectProphecyException.php | 34 + .../Exception/Prophecy/ProphecyException.php | 18 + .../ClassAndInterfaceTagRetriever.php | 69 + .../PhpDocumentor/ClassTagRetriever.php | 52 + .../PhpDocumentor/LegacyClassTagRetriever.php | 35 + .../MethodTagRetrieverInterface.php | 30 + .../Prophecy/Prediction/CallPrediction.php | 86 + .../Prediction/CallTimesPrediction.php | 107 + .../Prediction/CallbackPrediction.php | 65 + .../Prophecy/Prediction/NoCallsPrediction.php | 68 + .../Prediction/PredictionInterface.php | 37 + .../src/Prophecy/Promise/CallbackPromise.php | 66 + .../src/Prophecy/Promise/PromiseInterface.php | 35 + .../Promise/ReturnArgumentPromise.php | 61 + .../src/Prophecy/Promise/ReturnPromise.php | 55 + .../src/Prophecy/Promise/ThrowPromise.php | 99 + .../src/Prophecy/Prophecy/MethodProphecy.php | 464 + .../src/Prophecy/Prophecy/ObjectProphecy.php | 281 + .../Prophecy/Prophecy/ProphecyInterface.php | 27 + .../Prophecy/ProphecySubjectInterface.php | 34 + .../src/Prophecy/Prophecy/Revealer.php | 44 + .../Prophecy/Prophecy/RevealerInterface.php | 29 + .../phpspec/prophecy/src/Prophecy/Prophet.php | 134 + .../prophecy/src/Prophecy/Util/ExportUtil.php | 212 + .../prophecy/src/Prophecy/Util/StringUtil.php | 89 + .../Doubler/Generator/ClassMirrorTest.php | 469 + .../phpunit/php-code-coverage/.gitattributes | 1 + vendor/phpunit/php-code-coverage/.gitignore | 6 + vendor/phpunit/php-code-coverage/.php_cs | 69 + vendor/phpunit/php-code-coverage/.travis.yml | 39 + .../phpunit/php-code-coverage/CONTRIBUTING.md | 1 + .../php-code-coverage/ChangeLog-2.2.md | 56 + .../php-code-coverage/ChangeLog-3.0.md | 31 + .../php-code-coverage/ChangeLog-3.1.md | 30 + .../php-code-coverage/ChangeLog-3.2.md | 23 + .../php-code-coverage/ChangeLog-3.3.md | 33 + .../php-code-coverage/ChangeLog-4.0.md | 62 + vendor/phpunit/php-code-coverage/LICENSE | 33 + vendor/phpunit/php-code-coverage/README.md | 51 + vendor/phpunit/php-code-coverage/build.xml | 21 + .../phpunit/php-code-coverage/composer.json | 51 + vendor/phpunit/php-code-coverage/phpunit.xml | 21 + .../php-code-coverage/src/CodeCoverage.php | 1107 ++ .../php-code-coverage/src/Driver/Driver.php | 52 + .../php-code-coverage/src/Driver/HHVM.php | 29 + .../php-code-coverage/src/Driver/PHPDBG.php | 111 + .../php-code-coverage/src/Driver/Xdebug.php | 117 + .../CoveredCodeNotExecutedException.php | 18 + .../src/Exception/Exception.php | 18 + .../Exception/InvalidArgumentException.php | 37 + .../MissingCoversAnnotationException.php | 18 + .../src/Exception/RuntimeException.php | 15 + .../UnintentionallyCoveredCodeException.php | 54 + .../phpunit/php-code-coverage/src/Filter.php | 173 + .../src/Node/AbstractNode.php | 342 + .../php-code-coverage/src/Node/Builder.php | 244 + .../php-code-coverage/src/Node/Directory.php | 483 + .../php-code-coverage/src/Node/File.php | 722 ++ .../php-code-coverage/src/Node/Iterator.php | 103 + .../php-code-coverage/src/Report/Clover.php | 251 + .../php-code-coverage/src/Report/Crap4j.php | 172 + .../src/Report/Html/Facade.php | 179 + .../src/Report/Html/Renderer.php | 298 + .../src/Report/Html/Renderer/Dashboard.php | 302 + .../src/Report/Html/Renderer/Directory.php | 101 + .../src/Report/Html/Renderer/File.php | 551 + .../Renderer/Template/coverage_bar.html.dist | 5 + .../Renderer/Template/css/bootstrap.min.css | 6 + .../Html/Renderer/Template/css/nv.d3.min.css | 1 + .../Html/Renderer/Template/css/style.css | 122 + .../Renderer/Template/dashboard.html.dist | 284 + .../Renderer/Template/directory.html.dist | 61 + .../Template/directory_item.html.dist | 13 + .../Html/Renderer/Template/file.html.dist | 90 + .../Renderer/Template/file_item.html.dist | 14 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../Renderer/Template/js/bootstrap.min.js | 7 + .../Html/Renderer/Template/js/d3.min.js | 5 + .../Html/Renderer/Template/js/holder.min.js | 12 + .../Renderer/Template/js/html5shiv.min.js | 326 + .../Html/Renderer/Template/js/jquery.min.js | 4 + .../Html/Renderer/Template/js/nv.d3.min.js | 8 + .../Html/Renderer/Template/js/respond.min.js | 5 + .../Renderer/Template/method_item.html.dist | 11 + .../php-code-coverage/src/Report/PHP.php | 51 + .../php-code-coverage/src/Report/Text.php | 257 + .../src/Report/Xml/Coverage.php | 67 + .../src/Report/Xml/Directory.php | 15 + .../src/Report/Xml/Facade.php | 246 + .../php-code-coverage/src/Report/Xml/File.php | 72 + .../src/Report/Xml/Method.php | 57 + .../php-code-coverage/src/Report/Xml/Node.php | 88 + .../src/Report/Xml/Project.php | 62 + .../src/Report/Xml/Report.php | 71 + .../src/Report/Xml/Tests.php | 46 + .../src/Report/Xml/Totals.php | 141 + .../php-code-coverage/src/Report/Xml/Unit.php | 96 + vendor/phpunit/php-code-coverage/src/Util.php | 48 + .../php-code-coverage/tests/TestCase.php | 343 + .../tests/_files/BankAccount-clover.xml | 26 + .../tests/_files/BankAccount-crap4j.xml | 59 + .../tests/_files/BankAccount-text.txt | 12 + .../tests/_files/BankAccount.php | 33 + .../tests/_files/BankAccountTest.php | 66 + .../_files/CoverageClassExtendedTest.php | 12 + .../tests/_files/CoverageClassTest.php | 12 + .../CoverageFunctionParenthesesTest.php | 11 + ...erageFunctionParenthesesWhitespaceTest.php | 11 + .../tests/_files/CoverageFunctionTest.php | 11 + .../CoverageMethodOneLineAnnotationTest.php | 11 + .../_files/CoverageMethodParenthesesTest.php | 12 + ...overageMethodParenthesesWhitespaceTest.php | 12 + .../tests/_files/CoverageMethodTest.php | 12 + .../tests/_files/CoverageNoneTest.php | 9 + .../tests/_files/CoverageNotPrivateTest.php | 12 + .../tests/_files/CoverageNotProtectedTest.php | 12 + .../tests/_files/CoverageNotPublicTest.php | 12 + .../tests/_files/CoverageNothingTest.php | 13 + .../tests/_files/CoveragePrivateTest.php | 12 + .../tests/_files/CoverageProtectedTest.php | 12 + .../tests/_files/CoveragePublicTest.php | 12 + .../CoverageTwoDefaultClassAnnotations.php | 18 + .../tests/_files/CoveredClass.php | 36 + .../tests/_files/CoveredFunction.php | 4 + .../NamespaceCoverageClassExtendedTest.php | 12 + .../_files/NamespaceCoverageClassTest.php | 12 + ...NamespaceCoverageCoversClassPublicTest.php | 15 + .../NamespaceCoverageCoversClassTest.php | 20 + .../_files/NamespaceCoverageMethodTest.php | 12 + .../NamespaceCoverageNotPrivateTest.php | 12 + .../NamespaceCoverageNotProtectedTest.php | 12 + .../_files/NamespaceCoverageNotPublicTest.php | 12 + .../_files/NamespaceCoveragePrivateTest.php | 12 + .../_files/NamespaceCoverageProtectedTest.php | 12 + .../_files/NamespaceCoveragePublicTest.php | 12 + .../tests/_files/NamespaceCoveredClass.php | 38 + .../_files/NotExistingCoveredElementTest.php | 24 + .../BankAccount.php.html | 267 + .../CoverageForBankAccount/dashboard.html | 290 + .../HTML/CoverageForBankAccount/index.html | 119 + .../dashboard.html | 288 + .../index.html | 119 + ...with_class_and_anonymous_function.php.html | 211 + .../dashboard.html | 286 + .../index.html | 99 + .../source_with_ignore.php.html | 234 + .../BankAccount.php.xml | 40 + .../XML/CoverageForBankAccount/index.xml | 29 + .../index.xml | 26 + ..._with_class_and_anonymous_function.php.xml | 41 + .../CoverageForFileWithIgnoredLines/index.xml | 26 + .../source_with_ignore.php.xml | 28 + .../class-with-anonymous-function-clover.xml | 22 + .../class-with-anonymous-function-crap4j.xml | 37 + .../class-with-anonymous-function-text.txt | 12 + .../tests/_files/ignored-lines-clover.xml | 17 + .../tests/_files/ignored-lines-crap4j.xml | 37 + .../tests/_files/ignored-lines-text.txt | 10 + ...urce_with_class_and_anonymous_function.php | 19 + .../tests/_files/source_with_ignore.php | 37 + .../tests/_files/source_with_namespace.php | 20 + .../source_with_oneline_annotations.php | 36 + .../tests/_files/source_without_ignore.php | 4 + .../tests/_files/source_without_namespace.php | 18 + .../php-code-coverage/tests/bootstrap.php | 5 + .../tests/tests/BuilderTest.php | 212 + .../tests/tests/CloverTest.php | 49 + .../tests/tests/CodeCoverageTest.php | 547 + .../tests/tests/Crap4jTest.php | 49 + .../tests/tests/FilterTest.php | 194 + .../tests/tests/HTMLTest.php | 103 + .../tests/tests/TextTest.php | 49 + .../tests/tests/UtilTest.php | 27 + .../php-code-coverage/tests/tests/XMLTest.php | 99 + .../phpunit/php-file-iterator/.gitattributes | 1 + vendor/phpunit/php-file-iterator/.gitignore | 7 + vendor/phpunit/php-file-iterator/ChangeLog.md | 10 + vendor/phpunit/php-file-iterator/LICENSE | 33 + vendor/phpunit/php-file-iterator/README.md | 12 + .../phpunit/php-file-iterator/composer.json | 36 + .../phpunit/php-file-iterator/src/Facade.php | 123 + .../phpunit/php-file-iterator/src/Factory.php | 91 + .../php-file-iterator/src/Iterator.php | 158 + .../phpunit/php-text-template/.gitattributes | 1 + vendor/phpunit/php-text-template/.gitignore | 5 + vendor/phpunit/php-text-template/LICENSE | 33 + vendor/phpunit/php-text-template/README.md | 14 + .../phpunit/php-text-template/composer.json | 29 + .../php-text-template/src/Template.php | 135 + vendor/phpunit/php-timer/.gitattributes | 1 + vendor/phpunit/php-timer/.gitignore | 4 + vendor/phpunit/php-timer/.travis.yml | 27 + vendor/phpunit/php-timer/LICENSE | 33 + vendor/phpunit/php-timer/README.md | 45 + vendor/phpunit/php-timer/composer.json | 37 + vendor/phpunit/php-timer/phpunit.xml | 19 + vendor/phpunit/php-timer/src/Timer.php | 105 + vendor/phpunit/php-timer/tests/TimerTest.php | 98 + .../phpunit/php-token-stream/.gitattributes | 1 + vendor/phpunit/php-token-stream/.gitignore | 4 + vendor/phpunit/php-token-stream/.travis.yml | 28 + vendor/phpunit/php-token-stream/LICENSE | 33 + vendor/phpunit/php-token-stream/README.md | 14 + vendor/phpunit/php-token-stream/build.xml | 33 + .../php-token-stream/build/phpunit.xml | 17 + vendor/phpunit/php-token-stream/composer.json | 34 + vendor/phpunit/php-token-stream/src/Token.php | 849 ++ .../php-token-stream/src/Token/Stream.php | 612 ++ .../src/Token/Stream/CachingFactory.php | 51 + .../tests/Token/ClassTest.php | 123 + .../tests/Token/ClosureTest.php | 85 + .../tests/Token/FunctionTest.php | 146 + .../tests/Token/IncludeTest.php | 73 + .../tests/Token/InterfaceTest.php | 191 + .../tests/Token/NamespaceTest.php | 80 + .../php-token-stream/tests/TokenTest.php | 42 + .../_fixture/classExtendsNamespacedClass.php | 10 + .../tests/_fixture/classInNamespace.php | 6 + .../tests/_fixture/classInScopedNamespace.php | 9 + .../_fixture/classUsesNamespacedFunction.php | 8 + ...h_method_that_declares_anonymous_class.php | 15 + ..._method_that_declares_anonymous_class2.php | 16 + .../tests/_fixture/closure.php | 7 + .../tests/_fixture/issue19.php | 3 + .../tests/_fixture/issue30.php | 8 + ...tipleNamespacesWithOneClassUsingBraces.php | 12 + ...espacesWithOneClassUsingNonBraceSyntax.php | 14 + .../tests/_fixture/source.php | 36 + .../tests/_fixture/source2.php | 6 + .../tests/_fixture/source3.php | 14 + .../tests/_fixture/source4.php | 30 + .../tests/_fixture/source5.php | 5 + .../php-token-stream/tests/bootstrap.php | 7 + .../phpunit-mock-objects/.gitattributes | 1 + .../phpunit/phpunit-mock-objects/.gitignore | 7 + vendor/phpunit/phpunit-mock-objects/.php_cs | 67 + .../phpunit/phpunit-mock-objects/.travis.yml | 22 + .../phpunit-mock-objects/CONTRIBUTING.md | 1 + vendor/phpunit/phpunit-mock-objects/LICENSE | 33 + vendor/phpunit/phpunit-mock-objects/README.md | 22 + vendor/phpunit/phpunit-mock-objects/build.xml | 42 + .../phpunit-mock-objects/build/travis-ci.xml | 12 + .../phpunit-mock-objects/composer.json | 53 + .../phpunit/phpunit-mock-objects/phpunit.xml | 21 + .../Framework/MockObject/Builder/Identity.php | 31 + .../MockObject/Builder/InvocationMocker.php | 291 + .../Framework/MockObject/Builder/Match.php | 27 + .../MockObject/Builder/MethodNameMatch.php | 27 + .../MockObject/Builder/Namespace.php | 38 + .../MockObject/Builder/ParametersMatch.php | 49 + .../src/Framework/MockObject/Builder/Stub.php | 27 + .../Exception/BadMethodCallException.php | 16 + .../MockObject/Exception/Exception.php | 18 + .../MockObject/Exception/RuntimeException.php | 16 + .../src/Framework/MockObject/Generator.php | 1324 +++ .../MockObject/Generator/deprecation.tpl.dist | 2 + .../Generator/mocked_class.tpl.dist | 40 + .../Generator/mocked_class_method.tpl.dist | 7 + .../Generator/mocked_clone.tpl.dist | 4 + .../Generator/mocked_method.tpl.dist | 22 + .../Generator/mocked_method_void.tpl.dist | 20 + .../Generator/mocked_static_method.tpl.dist | 5 + .../Generator/proxied_method.tpl.dist | 22 + .../Generator/proxied_method_void.tpl.dist | 22 + .../MockObject/Generator/trait_class.tpl.dist | 4 + .../Generator/unmocked_clone.tpl.dist | 5 + .../MockObject/Generator/wsdl_class.tpl.dist | 7 + .../MockObject/Generator/wsdl_method.tpl.dist | 4 + .../src/Framework/MockObject/Invocation.php | 22 + .../MockObject/Invocation/Object.php | 37 + .../MockObject/Invocation/Static.php | 207 + .../Framework/MockObject/InvocationMocker.php | 178 + .../src/Framework/MockObject/Invokable.php | 39 + .../src/Framework/MockObject/Matcher.php | 274 + .../MockObject/Matcher/AnyInvokedCount.php | 32 + .../MockObject/Matcher/AnyParameters.php | 35 + .../Matcher/ConsecutiveParameters.php | 126 + .../MockObject/Matcher/Invocation.php | 46 + .../MockObject/Matcher/InvokedAtIndex.php | 87 + .../Matcher/InvokedAtLeastCount.php | 57 + .../MockObject/Matcher/InvokedAtLeastOnce.php | 45 + .../MockObject/Matcher/InvokedAtMostCount.php | 57 + .../MockObject/Matcher/InvokedCount.php | 110 + .../MockObject/Matcher/InvokedRecorder.php | 68 + .../MockObject/Matcher/MethodName.php | 68 + .../MockObject/Matcher/Parameters.php | 158 + .../Matcher/StatelessInvocation.php | 54 + .../src/Framework/MockObject/MockBuilder.php | 408 + .../src/Framework/MockObject/MockObject.php | 55 + .../src/Framework/MockObject/Stub.php | 30 + .../MockObject/Stub/ConsecutiveCalls.php | 48 + .../Framework/MockObject/Stub/Exception.php | 48 + .../MockObject/Stub/MatcherCollection.php | 25 + .../src/Framework/MockObject/Stub/Return.php | 41 + .../MockObject/Stub/ReturnArgument.php | 38 + .../MockObject/Stub/ReturnCallback.php | 51 + .../MockObject/Stub/ReturnReference.php | 22 + .../Framework/MockObject/Stub/ReturnSelf.php | 34 + .../MockObject/Stub/ReturnValueMap.php | 47 + .../src/Framework/MockObject/Verifiable.php | 25 + .../tests/GeneratorTest.php | 225 + .../tests/MockBuilderTest.php | 126 + .../Builder/InvocationMockerTest.php | 63 + .../tests/MockObject/Generator/232.phpt | 129 + .../MockObject/Generator/abstract_class.phpt | 147 + .../tests/MockObject/Generator/class.phpt | 125 + .../Generator/class_call_parent_clone.phpt | 77 + .../class_call_parent_constructor.phpt | 76 + .../class_dont_call_parent_clone.phpt | 76 + .../class_dont_call_parent_constructor.phpt | 76 + ...ing_interface_call_parent_constructor.phpt | 81 + ...nterface_dont_call_parent_constructor.phpt | 81 + .../MockObject/Generator/class_partial.phpt | 103 + .../class_with_method_named_method.phpt | 92 + ...s_with_method_with_variadic_arguments.phpt | 99 + .../tests/MockObject/Generator/interface.phpt | 97 + .../invocation_object_clone_object.phpt | 126 + .../Generator/namespaced_class.phpt | 127 + .../namespaced_class_call_parent_clone.phpt | 79 + ...espaced_class_call_parent_constructor.phpt | 78 + ...mespaced_class_dont_call_parent_clone.phpt | 78 + ...ed_class_dont_call_parent_constructor.phpt | 78 + ...ing_interface_call_parent_constructor.phpt | 83 + ...nterface_dont_call_parent_constructor.phpt | 83 + .../Generator/namespaced_class_partial.phpt | 105 + .../Generator/namespaced_interface.phpt | 99 + .../Generator/nonexistent_class.phpt | 74 + .../nonexistent_class_with_namespace.phpt | 82 + ...ith_namespace_starting_with_separator.phpt | 82 + .../MockObject/Generator/nullable_types.phpt | 103 + .../tests/MockObject/Generator/proxy.phpt | 121 + .../return_type_declarations_nullable.phpt | 101 + ...eturn_type_declarations_object_method.phpt | 104 + .../return_type_declarations_self.phpt | 101 + ...eturn_type_declarations_static_method.phpt | 87 + .../return_type_declarations_void.phpt | 99 + .../Generator/scalar_type_declarations.phpt | 103 + .../MockObject/Generator/wsdl_class.phpt | 37 + .../Generator/wsdl_class_namespace.phpt | 39 + .../Generator/wsdl_class_partial.phpt | 30 + .../MockObject/Invocation/ObjectTest.php | 108 + .../MockObject/Invocation/StaticTest.php | 87 + .../Matcher/ConsecutiveParametersTest.php | 56 + .../class_with_deprecated_method.phpt | 105 + .../tests/MockObjectTest.php | 1037 ++ .../tests/ProxyObjectTest.php | 39 + .../tests/_fixture/AbstractMockTestClass.php | 10 + .../tests/_fixture/AbstractTrait.php | 15 + .../tests/_fixture/AnInterface.php | 5 + .../_fixture/AnInterfaceWithReturnType.php | 5 + .../tests/_fixture/AnotherInterface.php | 5 + .../tests/_fixture/Bar.php | 8 + .../ClassThatImplementsSerializable.php | 15 + .../tests/_fixture/ClassWithSelfTypeHint.php | 7 + .../tests/_fixture/ClassWithStaticMethod.php | 7 + .../tests/_fixture/Foo.php | 8 + .../tests/_fixture/FunctionCallback.php | 9 + .../tests/_fixture/GoogleSearch.wsdl | 198 + .../InterfaceWithSemiReservedMethodName.php | 5 + .../_fixture/InterfaceWithStaticMethod.php | 5 + .../tests/_fixture/MethodCallback.php | 21 + .../_fixture/MethodCallbackByReference.php | 13 + .../tests/_fixture/MockTestInterface.php | 6 + .../tests/_fixture/Mockable.php | 28 + .../tests/_fixture/PartialMockTestClass.php | 18 + .../tests/_fixture/SingletonClass.php | 28 + .../tests/_fixture/SomeClass.php | 13 + .../tests/_fixture/StaticMockTestClass.php | 12 + .../tests/_fixture/StringableClass.php | 8 + .../_fixture/TraversableMockTestInterface.php | 4 + .../phpunit-mock-objects/tests/bootstrap.php | 3 + vendor/phpunit/phpunit/.gitattributes | 4 + .../phpunit/.github/CODE_OF_CONDUCT.md | 28 + .../phpunit/phpunit/.github/CONTRIBUTING.md | 64 + .../phpunit/phpunit/.github/ISSUE_TEMPLATE.md | 14 + vendor/phpunit/phpunit/.gitignore | 17 + vendor/phpunit/phpunit/.php_cs | 78 + vendor/phpunit/phpunit/.travis.yml | 38 + vendor/phpunit/phpunit/ChangeLog-4.0.md | 176 + vendor/phpunit/phpunit/ChangeLog-4.1.md | 73 + vendor/phpunit/phpunit/ChangeLog-4.2.md | 56 + vendor/phpunit/phpunit/ChangeLog-4.3.md | 54 + vendor/phpunit/phpunit/ChangeLog-4.4.md | 57 + vendor/phpunit/phpunit/ChangeLog-4.5.md | 28 + vendor/phpunit/phpunit/ChangeLog-4.6.md | 95 + vendor/phpunit/phpunit/ChangeLog-4.7.md | 71 + vendor/phpunit/phpunit/ChangeLog-4.8.md | 279 + vendor/phpunit/phpunit/ChangeLog-5.0.md | 128 + vendor/phpunit/phpunit/ChangeLog-5.1.md | 68 + vendor/phpunit/phpunit/ChangeLog-5.2.md | 117 + vendor/phpunit/phpunit/ChangeLog-5.3.md | 55 + vendor/phpunit/phpunit/ChangeLog-5.4.md | 84 + vendor/phpunit/phpunit/ChangeLog-5.5.md | 74 + vendor/phpunit/phpunit/ChangeLog-5.6.md | 79 + vendor/phpunit/phpunit/ChangeLog-5.7.md | 145 + vendor/phpunit/phpunit/LICENSE | 33 + vendor/phpunit/phpunit/README.md | 46 + vendor/phpunit/phpunit/build.xml | 406 + vendor/phpunit/phpunit/composer.json | 83 + vendor/phpunit/phpunit/phpunit | 52 + vendor/phpunit/phpunit/phpunit.xml | 34 + vendor/phpunit/phpunit/phpunit.xsd | 254 + vendor/phpunit/phpunit/src/Exception.php | 18 + .../phpunit/src/Extensions/GroupTestSuite.php | 60 + .../phpunit/src/Extensions/PhptTestCase.php | 432 + .../phpunit/src/Extensions/PhptTestSuite.php | 40 + .../phpunit/src/Extensions/RepeatedTest.php | 90 + .../phpunit/src/Extensions/TestDecorator.php | 109 + .../phpunit/src/Extensions/TicketListener.php | 204 + .../src/ForwardCompatibility/Assert.php | 17 + .../ForwardCompatibility/BaseTestListener.php | 17 + .../src/ForwardCompatibility/TestCase.php | 17 + .../src/ForwardCompatibility/TestListener.php | 17 + .../phpunit/phpunit/src/Framework/Assert.php | 3160 ++++++ .../src/Framework/Assert/Functions.php | 2373 ++++ .../src/Framework/AssertionFailedError.php | 27 + .../src/Framework/BaseTestListener.php | 59 + .../src/Framework/CodeCoverageException.php | 16 + .../phpunit/src/Framework/Constraint.php | 153 + .../phpunit/src/Framework/Constraint/And.php | 125 + .../src/Framework/Constraint/ArrayHasKey.php | 82 + .../src/Framework/Constraint/ArraySubset.php | 95 + .../src/Framework/Constraint/Attribute.php | 87 + .../src/Framework/Constraint/Callback.php | 59 + .../Constraint/ClassHasAttribute.php | 82 + .../Constraint/ClassHasStaticAttribute.php | 56 + .../src/Framework/Constraint/Composite.php | 70 + .../src/Framework/Constraint/Count.php | 125 + .../Framework/Constraint/DirectoryExists.php | 58 + .../src/Framework/Constraint/Exception.php | 88 + .../Framework/Constraint/ExceptionCode.php | 69 + .../Framework/Constraint/ExceptionMessage.php | 69 + .../Constraint/ExceptionMessageRegExp.php | 77 + .../src/Framework/Constraint/FileExists.php | 60 + .../src/Framework/Constraint/GreaterThan.php | 55 + .../src/Framework/Constraint/IsAnything.php | 62 + .../src/Framework/Constraint/IsEmpty.php | 66 + .../src/Framework/Constraint/IsEqual.php | 179 + .../src/Framework/Constraint/IsFalse.php | 40 + .../src/Framework/Constraint/IsFinite.php | 40 + .../src/Framework/Constraint/IsIdentical.php | 132 + .../src/Framework/Constraint/IsInfinite.php | 40 + .../src/Framework/Constraint/IsInstanceOf.php | 94 + .../src/Framework/Constraint/IsJson.php | 77 + .../src/Framework/Constraint/IsNan.php | 40 + .../src/Framework/Constraint/IsNull.php | 40 + .../src/Framework/Constraint/IsReadable.php | 58 + .../src/Framework/Constraint/IsTrue.php | 40 + .../src/Framework/Constraint/IsType.php | 143 + .../src/Framework/Constraint/IsWritable.php | 58 + .../src/Framework/Constraint/JsonMatches.php | 71 + .../JsonMatches/ErrorMessageProvider.php | 69 + .../src/Framework/Constraint/LessThan.php | 55 + .../phpunit/src/Framework/Constraint/Not.php | 160 + .../Constraint/ObjectHasAttribute.php | 35 + .../phpunit/src/Framework/Constraint/Or.php | 117 + .../src/Framework/Constraint/PCREMatch.php | 63 + .../src/Framework/Constraint/SameSize.php | 28 + .../Framework/Constraint/StringContains.php | 81 + .../Framework/Constraint/StringEndsWith.php | 55 + .../Framework/Constraint/StringMatches.php | 101 + .../Framework/Constraint/StringStartsWith.php | 55 + .../Constraint/TraversableContains.php | 125 + .../Constraint/TraversableContainsOnly.php | 95 + .../phpunit/src/Framework/Constraint/Xor.php | 122 + .../CoveredCodeNotExecutedException.php | 19 + .../phpunit/phpunit/src/Framework/Error.php | 34 + .../src/Framework/Error/Deprecated.php | 24 + .../phpunit/src/Framework/Error/Notice.php | 24 + .../phpunit/src/Framework/Error/Warning.php | 24 + .../phpunit/src/Framework/Exception.php | 77 + .../src/Framework/ExceptionWrapper.php | 91 + .../Framework/ExpectationFailedException.php | 41 + .../phpunit/src/Framework/IncompleteTest.php | 19 + .../src/Framework/IncompleteTestCase.php | 84 + .../src/Framework/IncompleteTestError.php | 19 + .../InvalidCoversTargetException.php | 16 + .../MissingCoversAnnotationException.php | 19 + .../phpunit/src/Framework/OutputError.php | 19 + .../phpunit/src/Framework/RiskyTest.php | 19 + .../phpunit/src/Framework/RiskyTestError.php | 19 + .../phpunit/src/Framework/SelfDescribing.php | 24 + .../phpunit/src/Framework/SkippedTest.php | 18 + .../phpunit/src/Framework/SkippedTestCase.php | 82 + .../src/Framework/SkippedTestError.php | 19 + .../src/Framework/SkippedTestSuiteError.php | 19 + .../phpunit/src/Framework/SyntheticError.php | 80 + vendor/phpunit/phpunit/src/Framework/Test.php | 26 + .../phpunit/src/Framework/TestCase.php | 2674 +++++ .../phpunit/src/Framework/TestFailure.php | 169 + .../phpunit/src/Framework/TestListener.php | 114 + .../phpunit/src/Framework/TestResult.php | 1381 +++ .../phpunit/src/Framework/TestSuite.php | 1017 ++ .../src/Framework/TestSuite/DataProvider.php | 27 + .../UnintentionallyCoveredCodeError.php | 19 + .../phpunit/phpunit/src/Framework/Warning.php | 27 + .../phpunit/src/Framework/WarningTestCase.php | 81 + .../phpunit/src/Runner/BaseTestRunner.php | 141 + .../phpunit/phpunit/src/Runner/Exception.php | 16 + .../phpunit/src/Runner/Filter/Factory.php | 51 + .../phpunit/src/Runner/Filter/Group.php | 59 + .../src/Runner/Filter/Group/Exclude.php | 25 + .../src/Runner/Filter/Group/Include.php | 25 + .../phpunit/src/Runner/Filter/Test.php | 120 + .../src/Runner/StandardTestSuiteLoader.php | 118 + .../phpunit/src/Runner/TestSuiteLoader.php | 32 + vendor/phpunit/phpunit/src/Runner/Version.php | 79 + vendor/phpunit/phpunit/src/TextUI/Command.php | 1182 ++ .../phpunit/src/TextUI/ResultPrinter.php | 708 ++ .../phpunit/phpunit/src/TextUI/TestRunner.php | 1154 ++ vendor/phpunit/phpunit/src/Util/Blacklist.php | 115 + .../phpunit/src/Util/Configuration.php | 1172 ++ .../src/Util/ConfigurationGenerator.php | 69 + .../phpunit/phpunit/src/Util/ErrorHandler.php | 117 + .../phpunit/phpunit/src/Util/Fileloader.php | 72 + .../phpunit/phpunit/src/Util/Filesystem.php | 42 + vendor/phpunit/phpunit/src/Util/Filter.php | 107 + vendor/phpunit/phpunit/src/Util/Getopt.php | 159 + .../phpunit/phpunit/src/Util/GlobalState.php | 217 + .../src/Util/InvalidArgumentHelper.php | 41 + vendor/phpunit/phpunit/src/Util/Log/JSON.php | 260 + vendor/phpunit/phpunit/src/Util/Log/JUnit.php | 466 + vendor/phpunit/phpunit/src/Util/Log/TAP.php | 271 + .../phpunit/phpunit/src/Util/Log/TeamCity.php | 410 + vendor/phpunit/phpunit/src/Util/PHP.php | 419 + .../phpunit/phpunit/src/Util/PHP/Default.php | 215 + .../Util/PHP/Template/TestCaseMethod.tpl.dist | 102 + .../phpunit/phpunit/src/Util/PHP/Windows.php | 41 + .../phpunit/src/Util/PHP/eval-stdin.php | 10 + vendor/phpunit/phpunit/src/Util/Printer.php | 152 + vendor/phpunit/phpunit/src/Util/Regex.php | 35 + vendor/phpunit/phpunit/src/Util/String.php | 63 + vendor/phpunit/phpunit/src/Util/Test.php | 1153 ++ .../src/Util/TestDox/NamePrettifier.php | 144 + .../src/Util/TestDox/ResultPrinter.php | 414 + .../src/Util/TestDox/ResultPrinter/HTML.php | 139 + .../src/Util/TestDox/ResultPrinter/Text.php | 54 + .../src/Util/TestDox/ResultPrinter/XML.php | 228 + .../phpunit/src/Util/TestSuiteIterator.php | 103 + vendor/phpunit/phpunit/src/Util/Type.php | 43 + vendor/phpunit/phpunit/src/Util/XML.php | 258 + .../tests/Extensions/PhptTestCaseTest.php | 263 + .../tests/Extensions/RepeatedTestTest.php | 64 + vendor/phpunit/phpunit/tests/Fail/fail.phpt | 5 + .../phpunit/tests/Framework/AssertTest.php | 4530 ++++++++ .../tests/Framework/BaseTestListenerTest.php | 34 + .../tests/Framework/Constraint/CountTest.php | 96 + .../Constraint/ExceptionMessageRegExpTest.php | 56 + .../Constraint/ExceptionMessageTest.php | 52 + .../tests/Framework/Constraint/IsJsonTest.php | 32 + .../JsonMatches/ErrorMessageProviderTest.php | 83 + .../Framework/Constraint/JsonMatchesTest.php | 48 + .../tests/Framework/ConstraintTest.php | 3731 +++++++ .../phpunit/tests/Framework/SuiteTest.php | 273 + .../phpunit/tests/Framework/TestCaseTest.php | 656 ++ .../tests/Framework/TestFailureTest.php | 27 + .../tests/Framework/TestImplementorTest.php | 30 + .../tests/Framework/TestListenerTest.php | 114 + .../phpunit/tests/Regression/GitHub/1149.phpt | 20 + .../Regression/GitHub/1149/Issue1149Test.php | 18 + .../phpunit/tests/Regression/GitHub/1216.phpt | 25 + .../Regression/GitHub/1216/Issue1216Test.php | 8 + .../Regression/GitHub/1216/bootstrap1216.php | 2 + .../Regression/GitHub/1216/phpunit1216.xml | 8 + .../phpunit/tests/Regression/GitHub/1265.phpt | 21 + .../Regression/GitHub/1265/Issue1265Test.php | 8 + .../Regression/GitHub/1265/phpunit1265.xml | 2 + .../phpunit/tests/Regression/GitHub/1330.phpt | 24 + .../Regression/GitHub/1330/Issue1330Test.php | 8 + .../Regression/GitHub/1330/phpunit1330.xml | 5 + .../phpunit/tests/Regression/GitHub/1335.phpt | 19 + .../Regression/GitHub/1335/Issue1335Test.php | 67 + .../Regression/GitHub/1335/bootstrap1335.php | 13 + .../phpunit/tests/Regression/GitHub/1337.phpt | 19 + .../Regression/GitHub/1337/Issue1337Test.php | 19 + .../phpunit/tests/Regression/GitHub/1348.phpt | 34 + .../Regression/GitHub/1348/Issue1348Test.php | 14 + .../phpunit/tests/Regression/GitHub/1351.phpt | 46 + .../GitHub/1351/ChildProcessClass1351.php | 4 + .../Regression/GitHub/1351/Issue1351Test.php | 48 + .../phpunit/tests/Regression/GitHub/1374.phpt | 19 + .../Regression/GitHub/1374/Issue1374Test.php | 21 + .../phpunit/tests/Regression/GitHub/1437.phpt | 26 + .../Regression/GitHub/1437/Issue1437Test.php | 9 + .../phpunit/tests/Regression/GitHub/1468.phpt | 20 + .../Regression/GitHub/1468/Issue1468Test.php | 11 + .../phpunit/tests/Regression/GitHub/1471.phpt | 26 + .../Regression/GitHub/1471/Issue1471Test.php | 12 + .../phpunit/tests/Regression/GitHub/1472.phpt | 25 + .../Regression/GitHub/1472/Issue1472Test.php | 21 + .../phpunit/tests/Regression/GitHub/1570.phpt | 20 + .../Regression/GitHub/1570/Issue1570Test.php | 8 + .../tests/Regression/GitHub/2137-filter.phpt | 28 + .../Regression/GitHub/2137-no_filter.phpt | 30 + .../Regression/GitHub/2137/Issue2137Test.php | 33 + .../phpunit/tests/Regression/GitHub/2158.phpt | 19 + .../Regression/GitHub/2158/Issue2158Test.php | 23 + .../tests/Regression/GitHub/2158/constant.inc | 5 + .../Regression/GitHub/2299/Issue2299Test.php | 20 + .../phpunit/tests/Regression/GitHub/2366.phpt | 19 + .../Regression/GitHub/2366/Issue2366Test.php | 30 + .../phpunit/tests/Regression/GitHub/2380.phpt | 19 + .../Regression/GitHub/2380/Issue2380Test.php | 21 + .../phpunit/tests/Regression/GitHub/2382.phpt | 19 + .../Regression/GitHub/2382/Issue2382Test.php | 22 + .../phpunit/tests/Regression/GitHub/2435.phpt | 20 + .../Regression/GitHub/2435/Issue2435Test.php | 12 + .../phpunit/tests/Regression/GitHub/244.phpt | 32 + .../Regression/GitHub/244/Issue244Test.php | 55 + .../phpunit/tests/Regression/GitHub/322.phpt | 26 + .../Regression/GitHub/322/Issue322Test.php | 17 + .../Regression/GitHub/322/phpunit322.xml | 11 + .../phpunit/tests/Regression/GitHub/433.phpt | 31 + .../Regression/GitHub/433/Issue433Test.php | 21 + .../phpunit/tests/Regression/GitHub/445.phpt | 32 + .../Regression/GitHub/445/Issue445Test.php | 21 + .../phpunit/tests/Regression/GitHub/498.phpt | 29 + .../Regression/GitHub/498/Issue498Test.php | 44 + .../phpunit/tests/Regression/GitHub/503.phpt | 33 + .../Regression/GitHub/503/Issue503Test.php | 11 + .../phpunit/tests/Regression/GitHub/581.phpt | 42 + .../Regression/GitHub/581/Issue581Test.php | 11 + .../phpunit/tests/Regression/GitHub/74.phpt | 28 + .../Regression/GitHub/74/Issue74Test.php | 9 + .../Regression/GitHub/74/NewException.php | 4 + .../phpunit/tests/Regression/GitHub/765.phpt | 26 + .../Regression/GitHub/765/Issue765Test.php | 22 + .../phpunit/tests/Regression/GitHub/797.phpt | 22 + .../Regression/GitHub/797/Issue797Test.php | 10 + .../Regression/GitHub/797/bootstrap797.php | 6 + .../phpunit/tests/Regression/GitHub/863.phpt | 24 + .../tests/Regression/GitHub/873-php5.phpt | 22 + .../tests/Regression/GitHub/873-php7.phpt | 22 + .../Regression/GitHub/873/Issue873Test.php | 9 + .../phpunit/tests/Regression/Trac/1021.phpt | 19 + .../Regression/Trac/1021/Issue1021Test.php | 23 + .../phpunit/tests/Regression/Trac/523.phpt | 19 + .../Regression/Trac/523/Issue523Test.php | 13 + .../phpunit/tests/Regression/Trac/578.phpt | 37 + .../Regression/Trac/578/Issue578Test.php | 20 + .../phpunit/tests/Regression/Trac/684.phpt | 25 + .../Regression/Trac/684/Issue684Test.php | 4 + .../phpunit/tests/Regression/Trac/783.phpt | 21 + .../tests/Regression/Trac/783/ChildSuite.php | 15 + .../tests/Regression/Trac/783/OneTest.php | 10 + .../tests/Regression/Trac/783/ParentSuite.php | 13 + .../tests/Regression/Trac/783/TwoTest.php | 10 + .../tests/Runner/BaseTestRunnerTest.php | 22 + .../tests/TextUI/_files/expect_external.txt | 1 + .../tests/TextUI/_files/phpt-env.expected.txt | 1 + .../tests/TextUI/_files/phpt_external.php | 2 + .../tests/TextUI/abstract-test-class.phpt | 24 + .../phpunit/tests/TextUI/assertion.phpt | 38 + .../tests/TextUI/code-coverage-ignore.phpt | 36 + .../phpunit/tests/TextUI/colors-always.phpt | 18 + .../tests/TextUI/concrete-test-class.phpt | 18 + .../tests/TextUI/custom-printer-debug.phpt | 26 + .../tests/TextUI/custom-printer-verbose.phpt | 31 + .../tests/TextUI/dataprovider-debug.phpt | 33 + .../dataprovider-log-xml-isolation.phpt | 46 + .../tests/TextUI/dataprovider-log-xml.phpt | 45 + .../tests/TextUI/dataprovider-testdox.phpt | 19 + .../phpunit/phpunit/tests/TextUI/debug.phpt | 25 + .../tests/TextUI/default-isolation.phpt | 19 + .../phpunit/phpunit/tests/TextUI/default.phpt | 18 + .../tests/TextUI/dependencies-clone.phpt | 22 + .../tests/TextUI/dependencies-isolation.phpt | 42 + .../phpunit/tests/TextUI/dependencies.phpt | 41 + .../tests/TextUI/dependencies2-isolation.phpt | 19 + .../phpunit/tests/TextUI/dependencies2.phpt | 18 + .../tests/TextUI/dependencies3-isolation.phpt | 19 + .../phpunit/tests/TextUI/dependencies3.phpt | 19 + .../TextUI/disable-code-coverage-ignore.phpt | 40 + .../phpunit/tests/TextUI/empty-testcase.phpt | 25 + .../phpunit/tests/TextUI/exception-stack.phpt | 64 + .../tests/TextUI/exclude-group-isolation.phpt | 21 + .../phpunit/tests/TextUI/exclude-group.phpt | 20 + .../tests/TextUI/failure-isolation.phpt | 141 + .../tests/TextUI/failure-reverse-list.phpt | 141 + .../phpunit/phpunit/tests/TextUI/failure.phpt | 140 + .../phpunit/tests/TextUI/fatal-isolation.phpt | 25 + .../tests/TextUI/filter-class-isolation.phpt | 21 + .../phpunit/tests/TextUI/filter-class.phpt | 20 + ...ider-by-classname-and-range-isolation.phpt | 21 + ...r-dataprovider-by-classname-and-range.phpt | 20 + ...lter-dataprovider-by-number-isolation.phpt | 21 + .../TextUI/filter-dataprovider-by-number.phpt | 20 + ...-dataprovider-by-only-range-isolation.phpt | 21 + .../filter-dataprovider-by-only-range.phpt | 20 + ...dataprovider-by-only-regexp-isolation.phpt | 21 + .../filter-dataprovider-by-only-regexp.phpt | 20 + ...dataprovider-by-only-string-isolation.phpt | 21 + .../filter-dataprovider-by-only-string.phpt | 20 + ...ilter-dataprovider-by-range-isolation.phpt | 21 + .../TextUI/filter-dataprovider-by-range.phpt | 20 + ...lter-dataprovider-by-regexp-isolation.phpt | 21 + .../TextUI/filter-dataprovider-by-regexp.phpt | 20 + ...lter-dataprovider-by-string-isolation.phpt | 21 + .../TextUI/filter-dataprovider-by-string.phpt | 20 + .../filter-method-case-insensitive.phpt | 20 + ...ilter-method-case-sensitive-no-result.phpt | 20 + .../tests/TextUI/filter-method-isolation.phpt | 21 + .../phpunit/tests/TextUI/filter-method.phpt | 20 + .../tests/TextUI/filter-no-results.phpt | 20 + .../tests/TextUI/forward-compatibility.phpt | 18 + .../phpunit/tests/TextUI/group-isolation.phpt | 21 + .../phpunit/phpunit/tests/TextUI/group.phpt | 20 + vendor/phpunit/phpunit/tests/TextUI/help.phpt | 99 + .../phpunit/phpunit/tests/TextUI/help2.phpt | 100 + .../phpunit/tests/TextUI/ini-isolation.phpt | 21 + .../phpunit/tests/TextUI/list-groups.phpt | 18 + .../phpunit/tests/TextUI/list-suites.phpt | 16 + .../tests/TextUI/log-json-post-66021.phpt | 73 + .../phpunit/tests/TextUI/log-junit.phpt | 68 + .../phpunit/phpunit/tests/TextUI/log-tap.phpt | 27 + .../phpunit/tests/TextUI/log-teamcity.phpt | 38 + .../phpunit/tests/TextUI/mycommand.phpt | 23 + .../tests/TextUI/options-after-arguments.phpt | 18 + .../tests/TextUI/output-isolation.phpt | 20 + .../TextUI/phar-extension-suppressed.phpt | 12 + .../phpunit/tests/TextUI/phar-extension.phpt | 21 + .../phpunit/tests/TextUI/phpt-args.phpt | 12 + .../phpunit/tests/TextUI/phpt-env.phpt | 12 + .../phpunit/tests/TextUI/phpt-external.phpt | 6 + .../phpunit/tests/TextUI/phpt-stderr.phpt | 8 + .../phpunit/tests/TextUI/phpt-stdin.phpt | 11 + .../phpunit/tests/TextUI/phpt-xfail.phpt | 18 + .../phpunit/phpunit/tests/TextUI/repeat.phpt | 20 + .../report-useless-tests-incomplete.phpt | 20 + .../report-useless-tests-isolation.phpt | 21 + .../tests/TextUI/report-useless-tests.phpt | 28 + .../tests/TextUI/stop-on-warning-via-cli.phpt | 25 + .../TextUI/stop-on-warning-via-config.phpt | 26 + vendor/phpunit/phpunit/tests/TextUI/tap.phpt | 17 + .../phpunit/tests/TextUI/teamcity.phpt | 37 + .../tests/TextUI/test-suffix-multiple.phpt | 19 + .../tests/TextUI/test-suffix-single.phpt | 19 + .../tests/TextUI/testdox-exclude-group.phpt | 25 + .../phpunit/tests/TextUI/testdox-group.phpt | 25 + .../phpunit/tests/TextUI/testdox-html.phpt | 56 + .../phpunit/tests/TextUI/testdox-text.phpt | 24 + .../phpunit/tests/TextUI/testdox-xml.phpt | 56 + .../phpunit/phpunit/tests/TextUI/testdox.phpt | 18 + .../phpunit/tests/Util/ConfigurationTest.php | 479 + .../phpunit/phpunit/tests/Util/GetoptTest.php | 62 + .../phpunit/tests/Util/GlobalStateTest.php | 35 + vendor/phpunit/phpunit/tests/Util/PHPTest.php | 133 + .../phpunit/phpunit/tests/Util/RegexTest.php | 52 + .../tests/Util/TestDox/NamePrettifierTest.php | 82 + .../phpunit/phpunit/tests/Util/TestTest.php | 909 ++ vendor/phpunit/phpunit/tests/Util/XMLTest.php | 94 + .../phpunit/tests/_files/AbstractTest.php | 7 + .../phpunit/tests/_files/AssertionExample.php | 8 + .../tests/_files/AssertionExampleTest.php | 10 + .../phpunit/phpunit/tests/_files/Author.php | 27 + .../phpunit/tests/_files/BankAccount.php | 82 + .../phpunit/tests/_files/BankAccountTest.php | 94 + .../tests/_files/BankAccountTest.test.php | 87 + .../phpunit/tests/_files/BankAccountTest2.php | 56 + .../tests/_files/BaseTestListenerSample.php | 11 + .../tests/_files/BeforeAndAfterTest.php | 35 + .../_files/BeforeClassAndAfterClassTest.php | 35 + .../BeforeClassWithOnlyDataProviderTest.php | 39 + vendor/phpunit/phpunit/tests/_files/Book.php | 20 + .../phpunit/tests/_files/Calculator.php | 14 + .../ChangeCurrentWorkingDirectoryTest.php | 9 + .../_files/ClassWithNonPublicAttributes.php | 29 + .../ClassWithScalarTypeDeclarations.php | 7 + .../tests/_files/ClassWithToString.php | 22 + .../tests/_files/ClonedDependencyTest.php | 39 + .../phpunit/tests/_files/ConcreteTest.my.php | 7 + .../phpunit/tests/_files/ConcreteTest.php | 7 + .../_files/CoverageClassExtendedTest.php | 12 + .../tests/_files/CoverageClassTest.php | 12 + .../CoverageFunctionParenthesesTest.php | 11 + ...erageFunctionParenthesesWhitespaceTest.php | 11 + .../tests/_files/CoverageFunctionTest.php | 11 + .../CoverageMethodOneLineAnnotationTest.php | 11 + .../_files/CoverageMethodParenthesesTest.php | 12 + ...overageMethodParenthesesWhitespaceTest.php | 12 + .../tests/_files/CoverageMethodTest.php | 12 + .../_files/CoverageNamespacedFunctionTest.php | 11 + .../phpunit/tests/_files/CoverageNoneTest.php | 9 + .../tests/_files/CoverageNotPrivateTest.php | 12 + .../tests/_files/CoverageNotProtectedTest.php | 12 + .../tests/_files/CoverageNotPublicTest.php | 12 + .../tests/_files/CoverageNothingTest.php | 13 + .../tests/_files/CoveragePrivateTest.php | 12 + .../tests/_files/CoverageProtectedTest.php | 12 + .../tests/_files/CoveragePublicTest.php | 12 + .../CoverageTwoDefaultClassAnnotations.php | 17 + .../phpunit/tests/_files/CoveredClass.php | 36 + .../phpunit/tests/_files/CoveredFunction.php | 4 + .../phpunit/tests/_files/CustomPrinter.php | 4 + .../tests/_files/DataProviderDebugTest.php | 48 + .../_files/DataProviderDependencyTest.php | 25 + .../tests/_files/DataProviderFilterTest.php | 39 + .../_files/DataProviderIncompleteTest.php | 37 + .../tests/_files/DataProviderSkippedTest.php | 37 + .../phpunit/tests/_files/DataProviderTest.php | 21 + .../tests/_files/DataProviderTestDoxTest.php | 26 + .../tests/_files/DependencyFailureTest.php | 29 + .../tests/_files/DependencySuccessTest.php | 21 + .../tests/_files/DependencyTestSuite.php | 13 + .../phpunit/tests/_files/DoubleTestCase.php | 25 + .../phpunit/tests/_files/DummyException.php | 5 + .../tests/_files/EmptyTestCaseTest.php | 4 + .../ExceptionInAssertPostConditionsTest.php | 35 + .../ExceptionInAssertPreConditionsTest.php | 35 + .../tests/_files/ExceptionInSetUpTest.php | 35 + .../tests/_files/ExceptionInTearDownTest.php | 35 + .../phpunit/tests/_files/ExceptionInTest.php | 35 + .../tests/_files/ExceptionNamespaceTest.php | 38 + .../tests/_files/ExceptionStackTest.php | 21 + .../phpunit/tests/_files/ExceptionTest.php | 139 + .../phpunit/phpunit/tests/_files/Failure.php | 8 + .../phpunit/tests/_files/FailureTest.php | 75 + .../phpunit/tests/_files/FatalTest.php | 13 + .../tests/_files/IgnoreCodeCoverageClass.php | 16 + .../_files/IgnoreCodeCoverageClassTest.php | 15 + .../phpunit/tests/_files/IncompleteTest.php | 8 + .../tests/_files/Inheritance/InheritanceA.php | 7 + .../tests/_files/Inheritance/InheritanceB.php | 8 + .../tests/_files/InheritedTestCase.php | 7 + .../phpunit/phpunit/tests/_files/IniTest.php | 8 + .../phpunit/tests/_files/IsolationTest.php | 13 + .../tests/_files/JsonData/arrayObject.json | 1 + .../tests/_files/JsonData/simpleObject.json | 1 + .../phpunit/tests/_files/MockRunner.php | 7 + .../phpunit/phpunit/tests/_files/Mockable.php | 26 + .../tests/_files/MultiDependencyTest.php | 23 + .../tests/_files/MultipleDataProviderTest.php | 75 + .../phpunit/tests/_files/MyCommand.php | 15 + .../NamespaceCoverageClassExtendedTest.php | 12 + .../_files/NamespaceCoverageClassTest.php | 12 + ...NamespaceCoverageCoversClassPublicTest.php | 15 + .../NamespaceCoverageCoversClassTest.php | 20 + .../_files/NamespaceCoverageMethodTest.php | 12 + .../NamespaceCoverageNotPrivateTest.php | 12 + .../NamespaceCoverageNotProtectedTest.php | 12 + .../_files/NamespaceCoverageNotPublicTest.php | 12 + .../_files/NamespaceCoveragePrivateTest.php | 12 + .../_files/NamespaceCoverageProtectedTest.php | 12 + .../_files/NamespaceCoveragePublicTest.php | 12 + .../tests/_files/NamespaceCoveredClass.php | 38 + .../tests/_files/NamespaceCoveredFunction.php | 7 + .../tests/_files/NoArgTestCaseTest.php | 7 + .../phpunit/tests/_files/NoTestCaseClass.php | 4 + .../phpunit/tests/_files/NoTestCases.php | 7 + .../phpunit/tests/_files/NonStatic.php | 8 + .../_files/NotExistingCoveredElementTest.php | 24 + .../tests/_files/NotPublicTestCase.php | 11 + .../phpunit/tests/_files/NotVoidTestCase.php | 4 + .../phpunit/tests/_files/NothingTest.php | 7 + .../phpunit/tests/_files/OneTestCase.php | 11 + .../phpunit/tests/_files/OutputTestCase.php | 27 + .../phpunit/tests/_files/OverrideTestCase.php | 7 + .../RequirementsClassBeforeClassHookTest.php | 12 + .../_files/RequirementsClassDocBlockTest.php | 22 + .../phpunit/tests/_files/RequirementsTest.php | 345 + .../tests/_files/SampleArrayAccess.php | 36 + .../phpunit/tests/_files/SampleClass.php | 14 + .../phpunit/tests/_files/Singleton.php | 22 + .../phpunit/tests/_files/StackTest.php | 24 + .../phpunit/tests/_files/StatusTest.php | 37 + .../tests/_files/StopOnWarningTestSuite.php | 13 + .../tests/_files/StopsOnWarningTest.php | 7 + .../phpunit/phpunit/tests/_files/Struct.php | 10 + .../phpunit/phpunit/tests/_files/Success.php | 7 + .../tests/_files/TemplateMethodsTest.php | 51 + .../phpunit/tests/_files/TestDoxGroupTest.php | 18 + .../tests/_files/TestGeneratorMaker.php | 11 + .../phpunit/tests/_files/TestIncomplete.php | 8 + .../phpunit/tests/_files/TestIterator.php | 36 + .../phpunit/tests/_files/TestIterator2.php | 35 + .../phpunit/tests/_files/TestSkipped.php | 8 + .../phpunit/tests/_files/TestTestError.php | 8 + .../phpunit/tests/_files/TestWithTest.php | 24 + .../tests/_files/ThrowExceptionTestCase.php | 8 + .../tests/_files/ThrowNoExceptionTestCase.php | 7 + .../phpunit/phpunit/tests/_files/WasRun.php | 10 + vendor/phpunit/phpunit/tests/_files/bar.xml | 1 + .../_files/configuration.colors.empty.xml | 1 + .../_files/configuration.colors.false.xml | 1 + .../_files/configuration.colors.invalid.xml | 1 + .../_files/configuration.colors.true.xml | 1 + .../_files/configuration.custom-printer.xml | 2 + .../tests/_files/configuration.suites.xml | 6 + .../phpunit/tests/_files/configuration.xml | 121 + .../tests/_files/configuration_empty.xml | 49 + .../_files/configuration_stop_on_warning.xml | 2 + .../tests/_files/configuration_xinclude.xml | 74 + .../tests/_files/expectedFileFormat.txt | 1 + vendor/phpunit/phpunit/tests/_files/foo.xml | 1 + .../tests/_files/phpt-for-coverage.phpt | 8 + .../phpunit/tests/_files/phpt-xfail.phpt | 11 + .../phpunit-example-extension/phpunit.xml | 10 + .../tests/OneTest.php | 12 + .../phpunit-example-extension-1.0.0.phar | Bin 0 -> 3187 bytes ...uctureAttributesAreSameButValuesAreNot.xml | 10 + .../tests/_files/structureExpected.xml | 10 + .../tests/_files/structureIgnoreTextNodes.xml | 13 + .../_files/structureIsSameButDataIsNot.xml | 10 + .../structureWrongNumberOfAttributes.xml | 10 + .../_files/structureWrongNumberOfNodes.xml | 9 + vendor/phpunit/phpunit/tests/bootstrap.php | 6 + .../code-unit-reverse-lookup/.gitignore | 4 + .../code-unit-reverse-lookup/.php_cs | 67 + .../code-unit-reverse-lookup/.travis.yml | 25 + .../code-unit-reverse-lookup/ChangeLog.md | 10 + .../code-unit-reverse-lookup/LICENSE | 33 + .../code-unit-reverse-lookup/README.md | 14 + .../code-unit-reverse-lookup/build.xml | 22 + .../code-unit-reverse-lookup/composer.json | 28 + .../code-unit-reverse-lookup/phpunit.xml | 21 + .../code-unit-reverse-lookup/src/Wizard.php | 111 + .../tests/WizardTest.php | 45 + vendor/sebastian/comparator/.gitignore | 6 + vendor/sebastian/comparator/.travis.yml | 25 + vendor/sebastian/comparator/LICENSE | 33 + vendor/sebastian/comparator/README.md | 39 + vendor/sebastian/comparator/build.xml | 34 + .../sebastian/comparator/build/travis-ci.xml | 11 + vendor/sebastian/comparator/composer.json | 44 + vendor/sebastian/comparator/phpunit.xml.dist | 21 + .../comparator/src/ArrayComparator.php | 132 + .../sebastian/comparator/src/Comparator.php | 64 + .../comparator/src/ComparisonFailure.php | 129 + .../comparator/src/DOMNodeComparator.php | 107 + .../comparator/src/DateTimeComparator.php | 77 + .../comparator/src/DoubleComparator.php | 56 + .../comparator/src/ExceptionComparator.php | 51 + vendor/sebastian/comparator/src/Factory.php | 107 + .../comparator/src/MockObjectComparator.php | 45 + .../comparator/src/NumericComparator.php | 68 + .../comparator/src/ObjectComparator.php | 105 + .../comparator/src/ResourceComparator.php | 52 + .../comparator/src/ScalarComparator.php | 90 + .../src/SplObjectStorageComparator.php | 69 + .../comparator/src/TypeComparator.php | 59 + .../comparator/tests/ArrayComparatorTest.php | 163 + .../tests/DOMNodeComparatorTest.php | 162 + .../tests/DateTimeComparatorTest.php | 216 + .../comparator/tests/DoubleComparatorTest.php | 134 + .../tests/ExceptionComparatorTest.php | 136 + .../comparator/tests/FactoryTest.php | 115 + .../tests/MockObjectComparatorTest.php | 166 + .../tests/NumericComparatorTest.php | 122 + .../comparator/tests/ObjectComparatorTest.php | 150 + .../tests/ResourceComparatorTest.php | 120 + .../comparator/tests/ScalarComparatorTest.php | 158 + .../tests/SplObjectStorageComparatorTest.php | 137 + .../comparator/tests/TypeComparatorTest.php | 104 + .../comparator/tests/_files/Author.php | 28 + .../comparator/tests/_files/Book.php | 21 + .../tests/_files/ClassWithToString.php | 19 + .../comparator/tests/_files/SampleClass.php | 29 + .../comparator/tests/_files/Struct.php | 25 + .../comparator/tests/_files/TestClass.php | 14 + .../tests/_files/TestClassComparator.php | 14 + .../sebastian/comparator/tests/autoload.php | 38 + .../sebastian/comparator/tests/bootstrap.php | 7 + vendor/sebastian/diff/.gitignore | 10 + vendor/sebastian/diff/.php_cs | 66 + vendor/sebastian/diff/.travis.yml | 16 + vendor/sebastian/diff/LICENSE | 33 + vendor/sebastian/diff/README.md | 126 + vendor/sebastian/diff/build.xml | 26 + vendor/sebastian/diff/composer.json | 33 + vendor/sebastian/diff/phpunit.xml.dist | 17 + vendor/sebastian/diff/src/Chunk.php | 104 + vendor/sebastian/diff/src/Diff.php | 75 + vendor/sebastian/diff/src/Differ.php | 261 + .../diff/src/LCS/LongestCommonSubsequence.php | 27 + ...LongestCommonSubsequenceImplementation.php | 93 + ...LongestCommonSubsequenceImplementation.php | 73 + vendor/sebastian/diff/src/Line.php | 56 + vendor/sebastian/diff/src/Parser.php | 99 + vendor/sebastian/diff/tests/DifferTest.php | Bin 0 -> 11492 bytes .../LCS/TimeEfficientImplementationTest.php | 175 + vendor/sebastian/diff/tests/ParserTest.php | 62 + .../sebastian/diff/tests/fixtures/patch.txt | 9 + .../sebastian/diff/tests/fixtures/patch2.txt | 21 + vendor/sebastian/environment/.gitignore | 4 + vendor/sebastian/environment/.travis.yml | 16 + vendor/sebastian/environment/LICENSE | 33 + vendor/sebastian/environment/README.md | 72 + vendor/sebastian/environment/build.xml | 26 + vendor/sebastian/environment/composer.json | 30 + vendor/sebastian/environment/phpunit.xml | 20 + vendor/sebastian/environment/src/Console.php | 113 + vendor/sebastian/environment/src/Runtime.php | 194 + .../environment/tests/ConsoleTest.php | 62 + .../environment/tests/RuntimeTest.php | 120 + vendor/sebastian/exporter/.gitignore | 9 + vendor/sebastian/exporter/.travis.yml | 23 + vendor/sebastian/exporter/LICENSE | 33 + vendor/sebastian/exporter/README.md | 172 + vendor/sebastian/exporter/build.xml | 27 + vendor/sebastian/exporter/composer.json | 48 + vendor/sebastian/exporter/phpunit.xml.dist | 21 + vendor/sebastian/exporter/src/Exporter.php | 303 + .../sebastian/exporter/tests/ExporterTest.php | 358 + vendor/sebastian/global-state/.gitignore | 6 + vendor/sebastian/global-state/.travis.yml | 20 + vendor/sebastian/global-state/LICENSE | 33 + vendor/sebastian/global-state/README.md | 15 + vendor/sebastian/global-state/build.xml | 33 + vendor/sebastian/global-state/composer.json | 37 + .../sebastian/global-state/phpunit.xml.dist | 21 + .../sebastian/global-state/src/Blacklist.php | 149 + .../global-state/src/CodeExporter.php | 93 + .../sebastian/global-state/src/Exception.php | 17 + .../sebastian/global-state/src/Restorer.php | 141 + .../global-state/src/RuntimeException.php | 17 + .../sebastian/global-state/src/Snapshot.php | 423 + .../global-state/tests/BlacklistTest.php | 113 + .../global-state/tests/SnapshotTest.php | 119 + .../tests/_fixture/BlacklistedChildClass.php | 17 + .../tests/_fixture/BlacklistedClass.php | 18 + .../tests/_fixture/BlacklistedImplementor.php | 18 + .../tests/_fixture/BlacklistedInterface.php | 17 + .../tests/_fixture/SnapshotClass.php | 37 + .../tests/_fixture/SnapshotDomDocument.php | 19 + .../tests/_fixture/SnapshotFunctions.php | 15 + .../tests/_fixture/SnapshotTrait.php | 17 + vendor/sebastian/object-enumerator/.gitignore | 8 + vendor/sebastian/object-enumerator/.php_cs | 67 + .../sebastian/object-enumerator/.travis.yml | 23 + .../sebastian/object-enumerator/ChangeLog.md | 25 + vendor/sebastian/object-enumerator/LICENSE | 33 + vendor/sebastian/object-enumerator/README.md | 14 + vendor/sebastian/object-enumerator/build.xml | 23 + .../sebastian/object-enumerator/composer.json | 34 + .../sebastian/object-enumerator/phpunit.xml | 20 + .../object-enumerator/src/Enumerator.php | 93 + .../object-enumerator/src/Exception.php | 15 + .../src/InvalidArgumentException.php | 15 + .../tests/EnumeratorTest.php | 138 + .../tests/Fixtures/ExceptionThrower.php | 28 + vendor/sebastian/recursion-context/.gitignore | 9 + .../sebastian/recursion-context/.travis.yml | 21 + vendor/sebastian/recursion-context/LICENSE | 33 + vendor/sebastian/recursion-context/README.md | 14 + vendor/sebastian/recursion-context/build.xml | 27 + .../sebastian/recursion-context/composer.json | 36 + .../recursion-context/phpunit.xml.dist | 20 + .../recursion-context/src/Context.php | 167 + .../recursion-context/src/Exception.php | 17 + .../src/InvalidArgumentException.php | 17 + .../recursion-context/tests/ContextTest.php | 144 + .../sebastian/resource-operations/.gitignore | 3 + vendor/sebastian/resource-operations/LICENSE | 33 + .../sebastian/resource-operations/README.md | 16 + .../sebastian/resource-operations/build.xml | 24 + .../resource-operations/build/generate.php | 62 + .../resource-operations/composer.json | 26 + .../src/ResourceOperations.php | 670 ++ vendor/sebastian/version/.gitattributes | 1 + vendor/sebastian/version/.gitignore | 1 + vendor/sebastian/version/.php_cs | 66 + vendor/sebastian/version/LICENSE | 33 + vendor/sebastian/version/README.md | 43 + vendor/sebastian/version/composer.json | 29 + vendor/sebastian/version/src/Version.php | 109 + vendor/webmozart/assert/.composer-auth.json | 7 + vendor/webmozart/assert/.gitignore | 2 + vendor/webmozart/assert/.styleci.yml | 8 + vendor/webmozart/assert/.travis.yml | 39 + vendor/webmozart/assert/CHANGELOG.md | 34 + vendor/webmozart/assert/LICENSE | 20 + vendor/webmozart/assert/README.md | 242 + vendor/webmozart/assert/appveyor.yml | 40 + vendor/webmozart/assert/composer.json | 34 + vendor/webmozart/assert/phpunit.xml.dist | 16 + vendor/webmozart/assert/src/Assert.php | 948 ++ vendor/webmozart/assert/tests/AssertTest.php | 451 + 1592 files changed, 167442 insertions(+), 155 deletions(-) create mode 100755 composer.phar create mode 100644 src/AppBundle/Controller/HelloController.php create mode 100644 tests/AppBundle/Controller/HelloControllerTest.php create mode 100644 var/cache/dev/annotations.map create mode 100644 var/cache/dev/appDevDebugProjectContainer.php create mode 100644 var/cache/dev/appDevDebugProjectContainer.php.meta create mode 100644 var/cache/dev/appDevDebugProjectContainer.xml create mode 100644 var/cache/dev/appDevDebugProjectContainerCompiler.log create mode 100644 var/cache/dev/appDevDebugProjectContainerUrlGenerator.php create mode 100644 var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta create mode 100644 var/cache/dev/appDevDebugProjectContainerUrlMatcher.php create mode 100644 var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta create mode 100644 var/cache/dev/classes.map create mode 100644 var/cache/dev/classes.php create mode 100644 var/cache/dev/classes.php.meta create mode 100644 var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI create mode 100644 var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu create mode 100644 var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 create mode 100644 var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- create mode 100644 var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h create mode 100644 var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE create mode 100644 var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q create mode 100644 var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A create mode 100644 var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd create mode 100644 var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI create mode 100644 var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ create mode 100644 var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U create mode 100644 var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f create mode 100644 var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt create mode 100644 var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 create mode 100644 var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr create mode 100644 var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm create mode 100644 var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k create mode 100644 var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R create mode 100644 var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV create mode 100644 var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY create mode 100644 var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF create mode 100644 var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK create mode 100644 var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol create mode 100644 var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 create mode 100644 var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X create mode 100644 var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh create mode 100644 var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX create mode 100644 var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 create mode 100644 var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S create mode 100644 var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX create mode 100644 var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG create mode 100644 var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj create mode 100644 var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ create mode 100644 var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N create mode 100644 var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 create mode 100644 var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe create mode 100644 var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD create mode 100644 var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU create mode 100644 var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J create mode 100644 var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a create mode 100644 var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG create mode 100644 var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy create mode 100644 var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e create mode 100644 var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 create mode 100644 var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk create mode 100644 var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum create mode 100644 var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi create mode 100644 var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE create mode 100644 var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul create mode 100644 var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA create mode 100644 var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC create mode 100644 var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 create mode 100644 var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 create mode 100644 var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y create mode 100644 var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E create mode 100644 var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n create mode 100644 var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 create mode 100644 var/cache/dev/profiler/23/64/246423 create mode 100644 var/cache/dev/profiler/26/46/d94626 create mode 100644 var/cache/dev/profiler/d9/f4/dcf4d9 create mode 100644 var/cache/dev/profiler/f4/97/e697f4 create mode 100644 var/cache/dev/profiler/index.csv create mode 100644 var/cache/dev/twig/04/04cb9d21f7772696cc6d4b1c38368ac88822579b2f135e7891c8da4aaded3f3b.php create mode 100644 var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php create mode 100644 var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php create mode 100644 var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php create mode 100644 var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php create mode 100644 var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php create mode 100644 var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php create mode 100644 var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php create mode 100644 var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php create mode 100644 var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php create mode 100644 var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php create mode 100644 var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php create mode 100644 var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php create mode 100644 var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php create mode 100644 var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php create mode 100644 var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php create mode 100644 var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php create mode 100644 var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php create mode 100644 var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php create mode 100644 var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php create mode 100644 var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php create mode 100644 var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php create mode 100644 var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php create mode 100644 var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php create mode 100644 var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php create mode 100644 var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php create mode 100644 var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php create mode 100644 var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php create mode 100644 var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php create mode 100644 var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php create mode 100644 var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php create mode 100644 var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php create mode 100644 var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php create mode 100644 var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php create mode 100644 var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php create mode 100644 var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php create mode 100644 var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php create mode 100644 var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php create mode 100644 var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php create mode 100644 var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php create mode 100644 var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php create mode 100644 var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php create mode 100644 var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php create mode 100644 var/cache/test/annotations.map create mode 100644 var/cache/test/appTestDebugProjectContainer.php create mode 100644 var/cache/test/appTestDebugProjectContainer.php.meta create mode 100644 var/cache/test/appTestDebugProjectContainer.xml create mode 100644 var/cache/test/appTestDebugProjectContainerCompiler.log create mode 100644 var/cache/test/appTestDebugProjectContainerUrlMatcher.php create mode 100644 var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta create mode 100644 var/cache/test/classes.map create mode 100644 var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- create mode 100644 var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI create mode 100644 var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu create mode 100644 var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 create mode 100644 var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar create mode 100644 var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE create mode 100644 var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A create mode 100644 var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd create mode 100644 var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI create mode 100644 var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ create mode 100644 var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U create mode 100644 var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt create mode 100644 var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 create mode 100644 var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr create mode 100644 var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm create mode 100644 var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k create mode 100644 var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV create mode 100644 var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF create mode 100644 var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK create mode 100644 var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol create mode 100644 var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx create mode 100644 var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X create mode 100644 var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh create mode 100644 var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX create mode 100644 var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 create mode 100644 var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S create mode 100644 var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX create mode 100644 var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG create mode 100644 var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj create mode 100644 var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ create mode 100644 var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N create mode 100644 var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 create mode 100644 var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe create mode 100644 var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD create mode 100644 var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU create mode 100644 var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J create mode 100644 var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a create mode 100644 var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG create mode 100644 var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy create mode 100644 var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x create mode 100644 var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e create mode 100644 var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr create mode 100644 var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 create mode 100644 var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk create mode 100644 var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum create mode 100644 var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi create mode 100644 var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE create mode 100644 var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul create mode 100644 var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA create mode 100644 var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 create mode 100644 var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 create mode 100644 var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y create mode 100644 var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E create mode 100644 var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n create mode 100644 var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 create mode 100644 var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 create mode 100644 var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php create mode 100644 var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php create mode 100644 var/logs/dev.log create mode 100644 var/logs/test.log create mode 120000 vendor/bin/phpunit create mode 100755 vendor/myclabs/deep-copy/.gitattributes create mode 100755 vendor/myclabs/deep-copy/.gitignore create mode 100755 vendor/myclabs/deep-copy/.travis.yml create mode 100644 vendor/myclabs/deep-copy/LICENSE create mode 100644 vendor/myclabs/deep-copy/README.md create mode 100644 vendor/myclabs/deep-copy/composer.json create mode 100644 vendor/myclabs/deep-copy/doc/clone.png create mode 100644 vendor/myclabs/deep-copy/doc/deep-clone.png create mode 100644 vendor/myclabs/deep-copy/doc/deep-copy.png create mode 100644 vendor/myclabs/deep-copy/doc/graph.png create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php create mode 100644 vendor/phpdocumentor/reflection-common/.gitignore create mode 100644 vendor/phpdocumentor/reflection-common/LICENSE create mode 100644 vendor/phpdocumentor/reflection-common/README.md create mode 100644 vendor/phpdocumentor/reflection-common/composer.json create mode 100644 vendor/phpdocumentor/reflection-common/composer.lock create mode 100644 vendor/phpdocumentor/reflection-common/phpunit.xml.dist create mode 100644 vendor/phpdocumentor/reflection-common/src/Element.php create mode 100644 vendor/phpdocumentor/reflection-common/src/File.php create mode 100644 vendor/phpdocumentor/reflection-common/src/Fqsen.php create mode 100644 vendor/phpdocumentor/reflection-common/src/Location.php create mode 100644 vendor/phpdocumentor/reflection-common/src/Project.php create mode 100644 vendor/phpdocumentor/reflection-common/src/ProjectFactory.php create mode 100644 vendor/phpdocumentor/reflection-common/tests/common/bootstrap.php create mode 100644 vendor/phpdocumentor/reflection-common/tests/unit/FqsenTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/.gitignore create mode 100644 vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml create mode 100644 vendor/phpdocumentor/reflection-docblock/.travis.yml create mode 100644 vendor/phpdocumentor/reflection-docblock/LICENSE create mode 100644 vendor/phpdocumentor/reflection-docblock/README.md create mode 100644 vendor/phpdocumentor/reflection-docblock/composer.json create mode 100644 vendor/phpdocumentor/reflection-docblock/composer.lock create mode 100644 vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php create mode 100644 vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php create mode 100644 vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php create mode 100644 vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php create mode 100644 vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php create mode 100644 vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist create mode 100644 vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/integration/InterpretingDocBlocksTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php create mode 100644 vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php create mode 100644 vendor/phpdocumentor/type-resolver/.gitignore create mode 100644 vendor/phpdocumentor/type-resolver/.scrutinizer.yml create mode 100644 vendor/phpdocumentor/type-resolver/.travis.yml create mode 100644 vendor/phpdocumentor/type-resolver/LICENSE create mode 100644 vendor/phpdocumentor/type-resolver/README.md create mode 100644 vendor/phpdocumentor/type-resolver/composer.json create mode 100644 vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php create mode 100644 vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php create mode 100644 vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php create mode 100644 vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php create mode 100644 vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php create mode 100644 vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php create mode 100644 vendor/phpdocumentor/type-resolver/examples/Classy.php create mode 100644 vendor/phpdocumentor/type-resolver/phpmd.xml.dist create mode 100644 vendor/phpdocumentor/type-resolver/phpunit.xml.dist create mode 100644 vendor/phpdocumentor/type-resolver/src/FqsenResolver.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Type.php create mode 100644 vendor/phpdocumentor/type-resolver/src/TypeResolver.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Array_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Boolean.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Callable_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Compound.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Context.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Float_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Integer.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Mixed.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Null_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Object_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Resource.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Scalar.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Self_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Static_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/String_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/This.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Void_.php create mode 100644 vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php create mode 100644 vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php create mode 100644 vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php create mode 100644 vendor/phpspec/prophecy/.gitignore create mode 100644 vendor/phpspec/prophecy/.travis.yml create mode 100644 vendor/phpspec/prophecy/CHANGES.md create mode 100644 vendor/phpspec/prophecy/CONTRIBUTING.md create mode 100644 vendor/phpspec/prophecy/LICENSE create mode 100644 vendor/phpspec/prophecy/README.md create mode 100644 vendor/phpspec/prophecy/composer.json create mode 100644 vendor/phpspec/prophecy/fixtures/EmptyClass.php create mode 100644 vendor/phpspec/prophecy/fixtures/EmptyInterface.php create mode 100644 vendor/phpspec/prophecy/fixtures/FinalClass.php create mode 100644 vendor/phpspec/prophecy/fixtures/ModifierInterface.php create mode 100644 vendor/phpspec/prophecy/fixtures/Named.php create mode 100644 vendor/phpspec/prophecy/fixtures/OptionalDepsClass.php create mode 100644 vendor/phpspec/prophecy/fixtures/SpecialMethods.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithArguments.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithCallableArgument.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithFinalMethod.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithFinalVirtuallyPrivateMethod.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithProtectedAbstractMethod.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithReferences.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithReturnTypehints.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithStaticMethod.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithTypehintedVariadicArgument.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithVariadicArgument.php create mode 100644 vendor/phpspec/prophecy/fixtures/WithVirtuallyPrivateMethod.php create mode 100644 vendor/phpspec/prophecy/phpunit.xml.dist create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php create mode 100644 vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Call/Call.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophet.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php create mode 100644 vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php create mode 100644 vendor/phpunit/php-code-coverage/.gitattributes create mode 100644 vendor/phpunit/php-code-coverage/.gitignore create mode 100644 vendor/phpunit/php-code-coverage/.php_cs create mode 100644 vendor/phpunit/php-code-coverage/.travis.yml create mode 100644 vendor/phpunit/php-code-coverage/CONTRIBUTING.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-2.2.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.0.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.1.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.2.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.3.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-4.0.md create mode 100644 vendor/phpunit/php-code-coverage/LICENSE create mode 100644 vendor/phpunit/php-code-coverage/README.md create mode 100644 vendor/phpunit/php-code-coverage/build.xml create mode 100644 vendor/phpunit/php-code-coverage/composer.json create mode 100644 vendor/phpunit/php-code-coverage/phpunit.xml create mode 100644 vendor/phpunit/php-code-coverage/src/CodeCoverage.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Driver.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/HHVM.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/Exception.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Filter.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/Builder.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/Directory.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/File.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/Iterator.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Clover.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Crap4j.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/html5shiv.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/nv.d3.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/respond.min.js create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist create mode 100644 vendor/phpunit/php-code-coverage/src/Report/PHP.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Text.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/File.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php create mode 100644 vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php create mode 100644 vendor/phpunit/php-code-coverage/src/Util.php create mode 100644 vendor/phpunit/php-code-coverage/tests/TestCase.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-clover.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-crap4j.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-text.txt create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccountTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageClassExtendedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageClassTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodOneLineAnnotationTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNoneTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNothingTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveragePrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveragePublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageTwoDefaultClassAnnotations.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveredClass.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveredFunction.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassExtendedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassPublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageMethodTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveredClass.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NotExistingCoveredElementTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/BankAccount.php.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/dashboard.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForBankAccount/index.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/dashboard.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/index.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/dashboard.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/index.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/HTML/CoverageForFileWithIgnoredLines/source_with_ignore.php.html create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/BankAccount.php.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForBankAccount/index.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/index.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForClassWithAnonymousFunction/source_with_class_and_anonymous_function.php.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/index.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/Report/XML/CoverageForFileWithIgnoredLines/source_with_ignore.php.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-clover.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-crap4j.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-text.txt create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-clover.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-crap4j.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-text.txt create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_class_and_anonymous_function.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_ignore.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_namespace.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_oneline_annotations.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_without_ignore.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_without_namespace.php create mode 100644 vendor/phpunit/php-code-coverage/tests/bootstrap.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/BuilderTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/CloverTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/CodeCoverageTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/Crap4jTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/HTMLTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/TextTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/UtilTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/XMLTest.php create mode 100644 vendor/phpunit/php-file-iterator/.gitattributes create mode 100644 vendor/phpunit/php-file-iterator/.gitignore create mode 100644 vendor/phpunit/php-file-iterator/ChangeLog.md create mode 100644 vendor/phpunit/php-file-iterator/LICENSE create mode 100644 vendor/phpunit/php-file-iterator/README.md create mode 100644 vendor/phpunit/php-file-iterator/composer.json create mode 100644 vendor/phpunit/php-file-iterator/src/Facade.php create mode 100644 vendor/phpunit/php-file-iterator/src/Factory.php create mode 100644 vendor/phpunit/php-file-iterator/src/Iterator.php create mode 100644 vendor/phpunit/php-text-template/.gitattributes create mode 100644 vendor/phpunit/php-text-template/.gitignore create mode 100644 vendor/phpunit/php-text-template/LICENSE create mode 100644 vendor/phpunit/php-text-template/README.md create mode 100644 vendor/phpunit/php-text-template/composer.json create mode 100644 vendor/phpunit/php-text-template/src/Template.php create mode 100644 vendor/phpunit/php-timer/.gitattributes create mode 100644 vendor/phpunit/php-timer/.gitignore create mode 100644 vendor/phpunit/php-timer/.travis.yml create mode 100644 vendor/phpunit/php-timer/LICENSE create mode 100644 vendor/phpunit/php-timer/README.md create mode 100644 vendor/phpunit/php-timer/composer.json create mode 100644 vendor/phpunit/php-timer/phpunit.xml create mode 100644 vendor/phpunit/php-timer/src/Timer.php create mode 100644 vendor/phpunit/php-timer/tests/TimerTest.php create mode 100644 vendor/phpunit/php-token-stream/.gitattributes create mode 100644 vendor/phpunit/php-token-stream/.gitignore create mode 100644 vendor/phpunit/php-token-stream/.travis.yml create mode 100644 vendor/phpunit/php-token-stream/LICENSE create mode 100644 vendor/phpunit/php-token-stream/README.md create mode 100644 vendor/phpunit/php-token-stream/build.xml create mode 100644 vendor/phpunit/php-token-stream/build/phpunit.xml create mode 100644 vendor/phpunit/php-token-stream/composer.json create mode 100644 vendor/phpunit/php-token-stream/src/Token.php create mode 100644 vendor/phpunit/php-token-stream/src/Token/Stream.php create mode 100644 vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/ClassTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/ClosureTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/FunctionTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/IncludeTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/InterfaceTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/NamespaceTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/TokenTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classExtendsNamespacedClass.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classInNamespace.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classInScopedNamespace.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classUsesNamespacedFunction.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class2.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/closure.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/issue19.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/issue30.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/multipleNamespacesWithOneClassUsingBraces.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/multipleNamespacesWithOneClassUsingNonBraceSyntax.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source2.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source3.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source4.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source5.php create mode 100644 vendor/phpunit/php-token-stream/tests/bootstrap.php create mode 100644 vendor/phpunit/phpunit-mock-objects/.gitattributes create mode 100644 vendor/phpunit/phpunit-mock-objects/.gitignore create mode 100644 vendor/phpunit/phpunit-mock-objects/.php_cs create mode 100644 vendor/phpunit/phpunit-mock-objects/.travis.yml create mode 100644 vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md create mode 100644 vendor/phpunit/phpunit-mock-objects/LICENSE create mode 100644 vendor/phpunit/phpunit-mock-objects/README.md create mode 100644 vendor/phpunit/phpunit-mock-objects/build.xml create mode 100644 vendor/phpunit/phpunit-mock-objects/build/travis-ci.xml create mode 100644 vendor/phpunit/phpunit-mock-objects/composer.json create mode 100644 vendor/phpunit/phpunit-mock-objects/phpunit.xml create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/deprecation.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_class_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_clone.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_method_void.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/mocked_static_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/proxied_method_void.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/trait_class.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/unmocked_clone.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_class.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator/wsdl_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Builder/InvocationMockerTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/232.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/abstract_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_dont_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_implementing_interface_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_implementing_interface_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_partial.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_with_method_named_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/class_with_method_with_variadic_arguments.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/interface.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/invocation_object_clone_object.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_dont_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_implementing_interface_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_class_partial.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/namespaced_interface.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/nonexistent_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/nonexistent_class_with_namespace.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/nonexistent_class_with_namespace_starting_with_separator.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/nullable_types.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/proxy.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/return_type_declarations_nullable.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/return_type_declarations_object_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/return_type_declarations_self.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/return_type_declarations_static_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/return_type_declarations_void.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/scalar_type_declarations.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/wsdl_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/wsdl_class_namespace.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Generator/wsdl_class_partial.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/ObjectTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Invocation/StaticTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/Matcher/ConsecutiveParametersTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObject/class_with_deprecated_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractTrait.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterfaceWithReturnType.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnotherInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Bar.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassThatImplementsSerializable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithSelfTypeHint.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithStaticMethod.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Foo.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/FunctionCallback.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/GoogleSearch.wsdl create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithSemiReservedMethodName.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithStaticMethod.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallback.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallbackByReference.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/MockTestInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Mockable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/SingletonClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/StringableClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php create mode 100644 vendor/phpunit/phpunit/.gitattributes create mode 100644 vendor/phpunit/phpunit/.github/CODE_OF_CONDUCT.md create mode 100644 vendor/phpunit/phpunit/.github/CONTRIBUTING.md create mode 100644 vendor/phpunit/phpunit/.github/ISSUE_TEMPLATE.md create mode 100644 vendor/phpunit/phpunit/.gitignore create mode 100644 vendor/phpunit/phpunit/.php_cs create mode 100644 vendor/phpunit/phpunit/.travis.yml create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.0.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.1.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.2.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.3.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.4.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.5.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.6.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.7.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-4.8.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.0.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.1.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.2.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.3.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.4.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.5.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.6.md create mode 100644 vendor/phpunit/phpunit/ChangeLog-5.7.md create mode 100644 vendor/phpunit/phpunit/LICENSE create mode 100644 vendor/phpunit/phpunit/README.md create mode 100644 vendor/phpunit/phpunit/build.xml create mode 100644 vendor/phpunit/phpunit/composer.json create mode 100755 vendor/phpunit/phpunit/phpunit create mode 100644 vendor/phpunit/phpunit/phpunit.xml create mode 100644 vendor/phpunit/phpunit/phpunit.xsd create mode 100644 vendor/phpunit/phpunit/src/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php create mode 100644 vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php create mode 100644 vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php create mode 100644 vendor/phpunit/phpunit/src/Extensions/TestDecorator.php create mode 100644 vendor/phpunit/phpunit/src/Extensions/TicketListener.php create mode 100644 vendor/phpunit/phpunit/src/ForwardCompatibility/Assert.php create mode 100644 vendor/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php create mode 100644 vendor/phpunit/phpunit/src/ForwardCompatibility/TestCase.php create mode 100644 vendor/phpunit/phpunit/src/ForwardCompatibility/TestListener.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Assert.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Assert/Functions.php create mode 100644 vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/BaseTestListener.php create mode 100644 vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/And.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Count.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsReadable.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsWritable.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Not.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Or.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php create mode 100644 vendor/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Notice.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Warning.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php create mode 100644 vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/IncompleteTest.php create mode 100644 vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/OutputError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/RiskyTest.php create mode 100644 vendor/phpunit/phpunit/src/Framework/RiskyTestError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SelfDescribing.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTest.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTestError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SyntheticError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Test.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestFailure.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestListener.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestResult.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestSuite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php create mode 100644 vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Warning.php create mode 100644 vendor/phpunit/phpunit/src/Framework/WarningTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/Factory.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/Group.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/Group/Include.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/Test.php create mode 100644 vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php create mode 100644 vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Version.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Command.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/TestRunner.php create mode 100644 vendor/phpunit/phpunit/src/Util/Blacklist.php create mode 100644 vendor/phpunit/phpunit/src/Util/Configuration.php create mode 100644 vendor/phpunit/phpunit/src/Util/ConfigurationGenerator.php create mode 100644 vendor/phpunit/phpunit/src/Util/ErrorHandler.php create mode 100644 vendor/phpunit/phpunit/src/Util/Fileloader.php create mode 100644 vendor/phpunit/phpunit/src/Util/Filesystem.php create mode 100644 vendor/phpunit/phpunit/src/Util/Filter.php create mode 100644 vendor/phpunit/phpunit/src/Util/Getopt.php create mode 100644 vendor/phpunit/phpunit/src/Util/GlobalState.php create mode 100644 vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php create mode 100644 vendor/phpunit/phpunit/src/Util/Log/JSON.php create mode 100644 vendor/phpunit/phpunit/src/Util/Log/JUnit.php create mode 100644 vendor/phpunit/phpunit/src/Util/Log/TAP.php create mode 100644 vendor/phpunit/phpunit/src/Util/Log/TeamCity.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/Default.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/Windows.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php create mode 100644 vendor/phpunit/phpunit/src/Util/Printer.php create mode 100644 vendor/phpunit/phpunit/src/Util/Regex.php create mode 100644 vendor/phpunit/phpunit/src/Util/String.php create mode 100644 vendor/phpunit/phpunit/src/Util/Test.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestSuiteIterator.php create mode 100644 vendor/phpunit/phpunit/src/Util/Type.php create mode 100644 vendor/phpunit/phpunit/src/Util/XML.php create mode 100644 vendor/phpunit/phpunit/tests/Extensions/PhptTestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/Extensions/RepeatedTestTest.php create mode 100644 vendor/phpunit/phpunit/tests/Fail/fail.phpt create mode 100644 vendor/phpunit/phpunit/tests/Framework/AssertTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/BaseTestListenerTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/Constraint/CountTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/Constraint/ExceptionMessageRegExpTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/Constraint/ExceptionMessageTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/Constraint/IsJsonTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/Constraint/JsonMatches/ErrorMessageProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/Constraint/JsonMatchesTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/ConstraintTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/SuiteTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/TestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/TestFailureTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/TestImplementorTest.php create mode 100644 vendor/phpunit/phpunit/tests/Framework/TestListenerTest.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1149.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1149/Issue1149Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1216.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1216/Issue1216Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1216/bootstrap1216.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1216/phpunit1216.xml create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1265.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1265/Issue1265Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1265/phpunit1265.xml create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1330.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1330/Issue1330Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1330/phpunit1330.xml create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1335.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1335/Issue1335Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1335/bootstrap1335.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1337.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1337/Issue1337Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1348.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1348/Issue1348Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1351.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1351/ChildProcessClass1351.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1351/Issue1351Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1374.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1374/Issue1374Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1437.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1437/Issue1437Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1468.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1468/Issue1468Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1471.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1471/Issue1471Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1472.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1472/Issue1472Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1570.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/1570/Issue1570Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2137-filter.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2137-no_filter.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2137/Issue2137Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2158.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2158/Issue2158Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2158/constant.inc create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2299/Issue2299Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2366.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2366/Issue2366Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2380.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2380/Issue2380Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2382.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2382/Issue2382Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2435.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/2435/Issue2435Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/244.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/244/Issue244Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/322.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/322/Issue322Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/322/phpunit322.xml create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/433.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/433/Issue433Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/445.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/445/Issue445Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/498.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/498/Issue498Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/503.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/503/Issue503Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/581.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/581/Issue581Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/74.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/74/Issue74Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/74/NewException.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/765.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/765/Issue765Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/797.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/797/Issue797Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/797/bootstrap797.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/863.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/873-php5.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/873-php7.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/GitHub/873/Issue873Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/1021.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/1021/Issue1021Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/523.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/523/Issue523Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/578.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/578/Issue578Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/684.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/684/Issue684Test.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/783.phpt create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/783/ChildSuite.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/783/OneTest.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/783/ParentSuite.php create mode 100644 vendor/phpunit/phpunit/tests/Regression/Trac/783/TwoTest.php create mode 100644 vendor/phpunit/phpunit/tests/Runner/BaseTestRunnerTest.php create mode 100644 vendor/phpunit/phpunit/tests/TextUI/_files/expect_external.txt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/_files/phpt-env.expected.txt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/_files/phpt_external.php create mode 100644 vendor/phpunit/phpunit/tests/TextUI/abstract-test-class.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/assertion.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/code-coverage-ignore.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/colors-always.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/concrete-test-class.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/custom-printer-debug.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/custom-printer-verbose.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dataprovider-debug.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dataprovider-log-xml-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dataprovider-log-xml.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dataprovider-testdox.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/debug.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/default-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/default.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies-clone.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies2-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies2.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies3-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/dependencies3.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/disable-code-coverage-ignore.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/empty-testcase.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/exception-stack.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/exclude-group-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/exclude-group.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/failure-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/failure-reverse-list.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/failure.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/fatal-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-class-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-class.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-classname-and-range-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-classname-and-range.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-number-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-number.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-only-range-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-only-range.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-only-regexp-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-only-regexp.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-only-string-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-only-string.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-range-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-range.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-regexp-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-regexp.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-string-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-dataprovider-by-string.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-method-case-insensitive.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-method-case-sensitive-no-result.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-method-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-method.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/filter-no-results.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/forward-compatibility.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/group-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/group.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/help.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/help2.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/ini-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/list-groups.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/list-suites.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/log-json-post-66021.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/log-junit.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/log-tap.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/log-teamcity.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/mycommand.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/options-after-arguments.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/output-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phar-extension-suppressed.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phar-extension.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phpt-args.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phpt-env.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phpt-external.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phpt-stderr.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phpt-stdin.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/phpt-xfail.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/repeat.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/report-useless-tests-incomplete.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/report-useless-tests-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/report-useless-tests.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/stop-on-warning-via-cli.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/stop-on-warning-via-config.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/tap.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/teamcity.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/test-suffix-multiple.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/test-suffix-single.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/testdox-exclude-group.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/testdox-group.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/testdox-html.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/testdox-text.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/testdox-xml.phpt create mode 100644 vendor/phpunit/phpunit/tests/TextUI/testdox.phpt create mode 100644 vendor/phpunit/phpunit/tests/Util/ConfigurationTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/GetoptTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/GlobalStateTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/PHPTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/RegexTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/TestDox/NamePrettifierTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/TestTest.php create mode 100644 vendor/phpunit/phpunit/tests/Util/XMLTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/AbstractTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/AssertionExample.php create mode 100644 vendor/phpunit/phpunit/tests/_files/AssertionExampleTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Author.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccount.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccountTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccountTest.test.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccountTest2.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BaseTestListenerSample.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BeforeAndAfterTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BeforeClassAndAfterClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BeforeClassWithOnlyDataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Book.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Calculator.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ChangeCurrentWorkingDirectoryTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClassWithNonPublicAttributes.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClassWithScalarTypeDeclarations.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClassWithToString.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClonedDependencyTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ConcreteTest.my.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ConcreteTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageClassExtendedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageFunctionParenthesesTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageFunctionParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageFunctionTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodOneLineAnnotationTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodParenthesesTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNamespacedFunctionTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNoneTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNotPrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNotProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNotPublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNothingTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveragePrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveragePublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageTwoDefaultClassAnnotations.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveredClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveredFunction.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CustomPrinter.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderDebugTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderDependencyTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderFilterTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIncompleteTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderSkippedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderTestDoxTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DependencyFailureTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DependencySuccessTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DependencyTestSuite.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DoubleTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DummyException.php create mode 100644 vendor/phpunit/phpunit/tests/_files/EmptyTestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInAssertPostConditionsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInAssertPreConditionsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInSetUpTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInTearDownTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionNamespaceTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionStackTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Failure.php create mode 100644 vendor/phpunit/phpunit/tests/_files/FailureTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/FatalTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IgnoreCodeCoverageClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IgnoreCodeCoverageClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IncompleteTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Inheritance/InheritanceA.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Inheritance/InheritanceB.php create mode 100644 vendor/phpunit/phpunit/tests/_files/InheritedTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IniTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IsolationTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/JsonData/arrayObject.json create mode 100644 vendor/phpunit/phpunit/tests/_files/JsonData/simpleObject.json create mode 100644 vendor/phpunit/phpunit/tests/_files/MockRunner.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Mockable.php create mode 100644 vendor/phpunit/phpunit/tests/_files/MultiDependencyTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/MultipleDataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/MyCommand.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageClassExtendedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageCoversClassPublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageCoversClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageMethodTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageNotPrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageNotProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageNotPublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveragePrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveragePublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveredClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveredFunction.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NoArgTestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NoTestCaseClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NoTestCases.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NonStatic.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NotExistingCoveredElementTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NotPublicTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NotVoidTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NothingTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/OneTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/OutputTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/OverrideTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/RequirementsClassBeforeClassHookTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/RequirementsClassDocBlockTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/RequirementsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/SampleArrayAccess.php create mode 100644 vendor/phpunit/phpunit/tests/_files/SampleClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Singleton.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StackTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StatusTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StopOnWarningTestSuite.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StopsOnWarningTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Struct.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Success.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TemplateMethodsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestDoxGroupTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestGeneratorMaker.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIncomplete.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIterator.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIterator2.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestSkipped.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestTestError.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestWithTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ThrowExceptionTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ThrowNoExceptionTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/WasRun.php create mode 100644 vendor/phpunit/phpunit/tests/_files/bar.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.empty.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.false.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.invalid.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.true.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.custom-printer.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.suites.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration_empty.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration_stop_on_warning.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration_xinclude.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/expectedFileFormat.txt create mode 100644 vendor/phpunit/phpunit/tests/_files/foo.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/phpt-for-coverage.phpt create mode 100644 vendor/phpunit/phpunit/tests/_files/phpt-xfail.phpt create mode 100644 vendor/phpunit/phpunit/tests/_files/phpunit-example-extension/phpunit.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/phpunit-example-extension/tests/OneTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/phpunit-example-extension/tools/phpunit.d/phpunit-example-extension-1.0.0.phar create mode 100644 vendor/phpunit/phpunit/tests/_files/structureAttributesAreSameButValuesAreNot.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureExpected.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureIgnoreTextNodes.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureIsSameButDataIsNot.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureWrongNumberOfAttributes.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureWrongNumberOfNodes.xml create mode 100644 vendor/phpunit/phpunit/tests/bootstrap.php create mode 100644 vendor/sebastian/code-unit-reverse-lookup/.gitignore create mode 100644 vendor/sebastian/code-unit-reverse-lookup/.php_cs create mode 100644 vendor/sebastian/code-unit-reverse-lookup/.travis.yml create mode 100644 vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md create mode 100644 vendor/sebastian/code-unit-reverse-lookup/LICENSE create mode 100644 vendor/sebastian/code-unit-reverse-lookup/README.md create mode 100644 vendor/sebastian/code-unit-reverse-lookup/build.xml create mode 100644 vendor/sebastian/code-unit-reverse-lookup/composer.json create mode 100644 vendor/sebastian/code-unit-reverse-lookup/phpunit.xml create mode 100644 vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php create mode 100644 vendor/sebastian/code-unit-reverse-lookup/tests/WizardTest.php create mode 100644 vendor/sebastian/comparator/.gitignore create mode 100644 vendor/sebastian/comparator/.travis.yml create mode 100644 vendor/sebastian/comparator/LICENSE create mode 100644 vendor/sebastian/comparator/README.md create mode 100644 vendor/sebastian/comparator/build.xml create mode 100644 vendor/sebastian/comparator/build/travis-ci.xml create mode 100644 vendor/sebastian/comparator/composer.json create mode 100644 vendor/sebastian/comparator/phpunit.xml.dist create mode 100644 vendor/sebastian/comparator/src/ArrayComparator.php create mode 100644 vendor/sebastian/comparator/src/Comparator.php create mode 100644 vendor/sebastian/comparator/src/ComparisonFailure.php create mode 100644 vendor/sebastian/comparator/src/DOMNodeComparator.php create mode 100644 vendor/sebastian/comparator/src/DateTimeComparator.php create mode 100644 vendor/sebastian/comparator/src/DoubleComparator.php create mode 100644 vendor/sebastian/comparator/src/ExceptionComparator.php create mode 100644 vendor/sebastian/comparator/src/Factory.php create mode 100644 vendor/sebastian/comparator/src/MockObjectComparator.php create mode 100644 vendor/sebastian/comparator/src/NumericComparator.php create mode 100644 vendor/sebastian/comparator/src/ObjectComparator.php create mode 100644 vendor/sebastian/comparator/src/ResourceComparator.php create mode 100644 vendor/sebastian/comparator/src/ScalarComparator.php create mode 100644 vendor/sebastian/comparator/src/SplObjectStorageComparator.php create mode 100644 vendor/sebastian/comparator/src/TypeComparator.php create mode 100644 vendor/sebastian/comparator/tests/ArrayComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/DOMNodeComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/DateTimeComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/DoubleComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ExceptionComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/FactoryTest.php create mode 100644 vendor/sebastian/comparator/tests/MockObjectComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/NumericComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ObjectComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ResourceComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ScalarComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/SplObjectStorageComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/TypeComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/_files/Author.php create mode 100644 vendor/sebastian/comparator/tests/_files/Book.php create mode 100644 vendor/sebastian/comparator/tests/_files/ClassWithToString.php create mode 100644 vendor/sebastian/comparator/tests/_files/SampleClass.php create mode 100644 vendor/sebastian/comparator/tests/_files/Struct.php create mode 100644 vendor/sebastian/comparator/tests/_files/TestClass.php create mode 100644 vendor/sebastian/comparator/tests/_files/TestClassComparator.php create mode 100644 vendor/sebastian/comparator/tests/autoload.php create mode 100644 vendor/sebastian/comparator/tests/bootstrap.php create mode 100644 vendor/sebastian/diff/.gitignore create mode 100644 vendor/sebastian/diff/.php_cs create mode 100644 vendor/sebastian/diff/.travis.yml create mode 100644 vendor/sebastian/diff/LICENSE create mode 100644 vendor/sebastian/diff/README.md create mode 100644 vendor/sebastian/diff/build.xml create mode 100644 vendor/sebastian/diff/composer.json create mode 100644 vendor/sebastian/diff/phpunit.xml.dist create mode 100644 vendor/sebastian/diff/src/Chunk.php create mode 100644 vendor/sebastian/diff/src/Diff.php create mode 100644 vendor/sebastian/diff/src/Differ.php create mode 100644 vendor/sebastian/diff/src/LCS/LongestCommonSubsequence.php create mode 100644 vendor/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php create mode 100644 vendor/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php create mode 100644 vendor/sebastian/diff/src/Line.php create mode 100644 vendor/sebastian/diff/src/Parser.php create mode 100644 vendor/sebastian/diff/tests/DifferTest.php create mode 100644 vendor/sebastian/diff/tests/LCS/TimeEfficientImplementationTest.php create mode 100644 vendor/sebastian/diff/tests/ParserTest.php create mode 100644 vendor/sebastian/diff/tests/fixtures/patch.txt create mode 100644 vendor/sebastian/diff/tests/fixtures/patch2.txt create mode 100644 vendor/sebastian/environment/.gitignore create mode 100644 vendor/sebastian/environment/.travis.yml create mode 100644 vendor/sebastian/environment/LICENSE create mode 100644 vendor/sebastian/environment/README.md create mode 100644 vendor/sebastian/environment/build.xml create mode 100644 vendor/sebastian/environment/composer.json create mode 100644 vendor/sebastian/environment/phpunit.xml create mode 100644 vendor/sebastian/environment/src/Console.php create mode 100644 vendor/sebastian/environment/src/Runtime.php create mode 100644 vendor/sebastian/environment/tests/ConsoleTest.php create mode 100644 vendor/sebastian/environment/tests/RuntimeTest.php create mode 100644 vendor/sebastian/exporter/.gitignore create mode 100644 vendor/sebastian/exporter/.travis.yml create mode 100644 vendor/sebastian/exporter/LICENSE create mode 100644 vendor/sebastian/exporter/README.md create mode 100644 vendor/sebastian/exporter/build.xml create mode 100644 vendor/sebastian/exporter/composer.json create mode 100644 vendor/sebastian/exporter/phpunit.xml.dist create mode 100644 vendor/sebastian/exporter/src/Exporter.php create mode 100644 vendor/sebastian/exporter/tests/ExporterTest.php create mode 100644 vendor/sebastian/global-state/.gitignore create mode 100644 vendor/sebastian/global-state/.travis.yml create mode 100644 vendor/sebastian/global-state/LICENSE create mode 100644 vendor/sebastian/global-state/README.md create mode 100644 vendor/sebastian/global-state/build.xml create mode 100644 vendor/sebastian/global-state/composer.json create mode 100644 vendor/sebastian/global-state/phpunit.xml.dist create mode 100644 vendor/sebastian/global-state/src/Blacklist.php create mode 100644 vendor/sebastian/global-state/src/CodeExporter.php create mode 100644 vendor/sebastian/global-state/src/Exception.php create mode 100644 vendor/sebastian/global-state/src/Restorer.php create mode 100644 vendor/sebastian/global-state/src/RuntimeException.php create mode 100644 vendor/sebastian/global-state/src/Snapshot.php create mode 100644 vendor/sebastian/global-state/tests/BlacklistTest.php create mode 100644 vendor/sebastian/global-state/tests/SnapshotTest.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedChildClass.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedClass.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedImplementor.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedInterface.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotClass.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotDomDocument.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotFunctions.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotTrait.php create mode 100644 vendor/sebastian/object-enumerator/.gitignore create mode 100644 vendor/sebastian/object-enumerator/.php_cs create mode 100644 vendor/sebastian/object-enumerator/.travis.yml create mode 100644 vendor/sebastian/object-enumerator/ChangeLog.md create mode 100644 vendor/sebastian/object-enumerator/LICENSE create mode 100644 vendor/sebastian/object-enumerator/README.md create mode 100644 vendor/sebastian/object-enumerator/build.xml create mode 100644 vendor/sebastian/object-enumerator/composer.json create mode 100644 vendor/sebastian/object-enumerator/phpunit.xml create mode 100644 vendor/sebastian/object-enumerator/src/Enumerator.php create mode 100644 vendor/sebastian/object-enumerator/src/Exception.php create mode 100644 vendor/sebastian/object-enumerator/src/InvalidArgumentException.php create mode 100644 vendor/sebastian/object-enumerator/tests/EnumeratorTest.php create mode 100644 vendor/sebastian/object-enumerator/tests/Fixtures/ExceptionThrower.php create mode 100644 vendor/sebastian/recursion-context/.gitignore create mode 100644 vendor/sebastian/recursion-context/.travis.yml create mode 100644 vendor/sebastian/recursion-context/LICENSE create mode 100644 vendor/sebastian/recursion-context/README.md create mode 100644 vendor/sebastian/recursion-context/build.xml create mode 100644 vendor/sebastian/recursion-context/composer.json create mode 100644 vendor/sebastian/recursion-context/phpunit.xml.dist create mode 100644 vendor/sebastian/recursion-context/src/Context.php create mode 100644 vendor/sebastian/recursion-context/src/Exception.php create mode 100644 vendor/sebastian/recursion-context/src/InvalidArgumentException.php create mode 100644 vendor/sebastian/recursion-context/tests/ContextTest.php create mode 100644 vendor/sebastian/resource-operations/.gitignore create mode 100644 vendor/sebastian/resource-operations/LICENSE create mode 100644 vendor/sebastian/resource-operations/README.md create mode 100644 vendor/sebastian/resource-operations/build.xml create mode 100755 vendor/sebastian/resource-operations/build/generate.php create mode 100644 vendor/sebastian/resource-operations/composer.json create mode 100644 vendor/sebastian/resource-operations/src/ResourceOperations.php create mode 100644 vendor/sebastian/version/.gitattributes create mode 100644 vendor/sebastian/version/.gitignore create mode 100644 vendor/sebastian/version/.php_cs create mode 100644 vendor/sebastian/version/LICENSE create mode 100644 vendor/sebastian/version/README.md create mode 100644 vendor/sebastian/version/composer.json create mode 100644 vendor/sebastian/version/src/Version.php create mode 100644 vendor/webmozart/assert/.composer-auth.json create mode 100644 vendor/webmozart/assert/.gitignore create mode 100644 vendor/webmozart/assert/.styleci.yml create mode 100644 vendor/webmozart/assert/.travis.yml create mode 100644 vendor/webmozart/assert/CHANGELOG.md create mode 100644 vendor/webmozart/assert/LICENSE create mode 100644 vendor/webmozart/assert/README.md create mode 100644 vendor/webmozart/assert/appveyor.yml create mode 100644 vendor/webmozart/assert/composer.json create mode 100644 vendor/webmozart/assert/phpunit.xml.dist create mode 100644 vendor/webmozart/assert/src/Assert.php create mode 100644 vendor/webmozart/assert/tests/AssertTest.php diff --git a/.idea/Symphony_S_A.iml b/.idea/Symphony_S_A.iml index 6df0dc38..06eb85b1 100644 --- a/.idea/Symphony_S_A.iml +++ b/.idea/Symphony_S_A.iml @@ -17,10 +17,12 @@ - + + - + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index e5b7d334..df9e1556 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,51 +2,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,10 +144,10 @@ - @@ -105,6 +176,82 @@ \ No newline at end of file diff --git a/composer.json b/composer.json index 11b6003d..aeab33c0 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "doctrine/doctrine-cache-bundle": "^1.2", "doctrine/orm": "^2.5", "incenteev/composer-parameter-handler": "^2.0", + "phpunit/phpunit": "^5.7", "sensio/distribution-bundle": "^5.0", "sensio/framework-extra-bundle": "^3.0.2", "symfony/monolog-bundle": "^3.0.2", diff --git a/composer.lock b/composer.lock index 585e361f..fbc51f29 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "7cf8c664281db0ec9962404a01eacb48", + "content-hash": "25ffcc1115c4e8209cb3d2d2b2ad8354", "packages": [ { "name": "doctrine/annotations", @@ -953,146 +953,1300 @@ ], "time": "2016-11-26T00:15:39+00:00" }, + { + "name": "myclabs/deep-copy", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-01-26T22:05:40+00:00" + }, { "name": "paragonie/random_compat", "version": "v2.0.9", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "6968531206671f94377b01dc7888d5d1b858a01b" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "6968531206671f94377b01dc7888d5d1b858a01b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/6968531206671f94377b01dc7888d5d1b858a01b", + "reference": "6968531206671f94377b01dc7888d5d1b858a01b", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2017-03-03T20:43:42+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30T07:12:33+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-11-25T06:54:22+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-03-02T20:05:34+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/09e2277d14ea467e5a984010f501343ef29ffc69", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-03-01T09:12:17+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03T07:40:28+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-02-27T10:12:30+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b99112aecc01f62acf3d81a3f59646700a1849e5", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-03-02T15:22:43+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2016-12-08T20:27:08+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08T07:14:41+00:00" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/6968531206671f94377b01dc7888d5d1b858a01b", - "reference": "6968531206671f94377b01dc7888d5d1b858a01b", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "phpunit/phpunit": "^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "files": [ - "lib/random.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "csprng", - "pseudorandom", - "random" + "Xdebug", + "environment", + "hhvm" ], - "time": "2017-03-03T20:43:42+00:00" + "time": "2016-11-26T07:53:53+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "sebastian/exporter", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-11-19T08:54:04+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Common interface for caching libraries", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "cache", - "psr", - "psr-6" + "global state" ], - "time": "2016-08-06T20:24:11+00:00" + "time": "2015-10-12T03:26:01+00:00" }, { - "name": "psr/log", - "version": "1.0.2", + "name": "sebastian/object-enumerator", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" ], - "time": "2016-10-10T12:19:37+00:00" + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { "name": "sensio/distribution-bundle", @@ -1975,6 +3129,56 @@ "templating" ], "time": "2017-02-27T00:07:03+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" } ], "packages-dev": [ @@ -2101,8 +3305,5 @@ "platform": { "php": ">=5.5.9" }, - "platform-dev": [], - "platform-overrides": { - "php": "5.5.9" - } + "platform-dev": [] } diff --git a/composer.phar b/composer.phar new file mode 100755 index 0000000000000000000000000000000000000000..357793176e3b45854af3c8e201bcd3e1b169bbef GIT binary patch literal 1836198 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�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

$mnv-0$YUbqgGDaOzTUDD38=z@cC%`18B+x@ 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

xt zE#iOj2u-G?bjehXM@zBg$DjPJ)f;Ll&K0=jAyJN+rp6(irez$ArC5?}ngyhdY6oS5 zEXu#MVXM~EvQ}s*%@B|uIh>!?@WX2U(sn`nqa*6|W(RG(LvBlEgDbo@iMz!ufI5d^QOg>g%eeAv z`b85J!^=D|(X4WKM!}#eRq{0!OjB)7)LP2K z3XKCm;I?*lI?RWKI76LTF_7qPz;*~C?Z$FlqhMPcDtsph)FSeeCp<_Uf+p>yyg{52 zdgHR+h3D|RbxYHqTd>)w?X|V+27(Qw3Wz@;>8)J1H=*2rSU-$+GR;0-KM%G zKeo)xCFkYs`QUmk*%>^KwtggKOE@t0@kMJYRh=nLlPt&)V~2!pWKhY$r5cF2s6qv1 z9WorGqhg?My&$@KEK=ypfa7&Az97O0qc{YE7}rWRfnX)>xf^bzEgFlgTjIlB3f~Z( zKm^dM(Z9NxAkB^xJZy{3g$zm*0?Cf<>uXq(ay#31bRKTKJMH7TWMl(uZ;eJ!;gM(@ z>E;b=uFc}wtTYaL6|1(un418|-F_kY(=WPUja^()&mgm2A4ap>*~P5rkaRjICdfrP zc1g8Pvv*bR&j^}|BT=@J!CD+Gzw^YI${YeHBos|OYlPoHI#0wJgUR-tWd=?e%<`B= zGaw}-&U9@8C%NQ4HNh3mx(Eq7wuC4VoDBr_aDr}l34wQx+*haHb3DE{s!B^ToQu)$ zEjlGN)syr;K(`8nrn=HUkj|10{~2UvxOFNsU6RVM1lL9>bVowd>XFVqR6OnK4*4uY z%|m!$Gy2aU2eR$5`-!d@w%%y?S8$naJvo5XZBtKAa~HvP^KG$H?@RX4iZI~hOH>JH z+Z4By=8`BLV|dgmP=eU|D`B&yt;C{WxoW8))|?kvCGbJ>IXa^LgY!T7U#fUPSt(#9 z@9yDd&Wb9754i>E!UWQ~9MCM0_K%KZlcOjOZwajPZKr}dC&cWG5cJR`NGBRAlT@>P zmsFASRCU)IrFW&Jtci7kq+NwWJk~ZHoM?b$nNtBOfL?S&I4rNG=^nOn6t?cfh#>G3Y=fgu!qGBgHsdg3<-YDZU9B z9xy;B1-kef~`gG{(a z1k+edA^N3eAu~6zfe(rz030;@a!T6Cw?ilBH&`eYAZ5gev`Z4I8js8kuQ6D~_2dk> zY#+kV)T`ddZidn5!t2h%@iLrxS>Lw8-W0EGjg_x$mAzT8)Eg<==IWZy%k&43E7%z| zZvNcIMLSpBBN*QUxXOI%X1{;gJL2aT7?=FmWddj0*vY^03&t3X)WS<8dih@e3U{zS z54+VxnW;j;HDlNf2fR9s_m(7`87oxoPmtLQn7sx_zF7a$@&3lQTQAqK1U{2Xvyr%M z|6p%>;~;+c90<|!f7su7b^Q9(*8ax&?$+k<{)_efZ@2bQ_t#%|WhsKxZwCi|MhL_9 zs{^+D`ERq&v4z*Kwl{V*8Cm)HuYOH2;&ufcuZh_(IzvXn@X=FX%HT?NnMxik5#Fy} z;ul)%8GYeg=a~-^L{5nmn2M4!8^K#?3@`=`AtzSZ5^vzkuBv4=I#Qh)UiD3?IzsS@$vks9X4Mt4Nh%`mqLLDMQO_$Hg zQ=Ja2Rh6rDDST25Dl;uTcUrT$$^fOua?Y@Jd(x|3twIdPQ3!|pD@d1fpfiF&2}|8z z(rCGjHO>@8x}+=8xeurBJ<2F)9Qa7?sR7esw#k#*^DGr_=?dQitm0|Ijz!Xw3~$N6 ztK##F(5u;9DCs*nhU;I|2JPa;8;lFyiIs%EdIkC)MBt{wjBP)(CWj2gP zd5dDX6dRqa$UnlUNBBMAi$uD4T#IQoVmI25t8Ep!(*5tvCPY2GCE0Aj!bF|fW4NtS zx|W{xf=f;jJg=virb)l&ePdxl)k0*Q1j+vE?-tZA%zadOxw0YvjNU`m3pVP4JaxVJ zM0)oBd@7cC=*FkzmxvAG#j{nG{|t9oBHBpub6{rV-p^^YDQnVTC8W3G%YOf+^Q$NP zLj#$Tp$o&^uFjLHTnX{D6xw~2;hm+i$a0X6LY+xDAujd;Zh{iC*6$Mc%}|cZ{kYdZ zm3tDbI>0SNgcJs&X;ZGW<(fHclSp42tb!AueSbaazC+BT7N}W3HjwAwF#zG15lP3# zvVFR``dI%DnaksLvyOX}u)^DAX}*Ll>Xq+y@q!j(t8k7%bXk&|_!^zHi5Pw(?~7l= zc(LbA#Y|^-LRSk6h|#F~zS9OJo|&yA)4+ZlQ(TFgTEaYIxnf zgf|D*OHGvK)svQ$ za(IN>cke@E6dux&36DPaXX1uC>I9Wsx!f{0T}`bNZZ5kNZgWX>8N4_&8jk|42sa6l`Z|d}69CF@S|Rw)`Ho@Tc})-jWEBjL#bz^a zr#{}^Y(4#|^{XdefKiZENamPWS(){10VqQkLpT#164ExG(;i>T{JTi6ks z9LumIsGV#_^5qqsOzBzAV*j+pW_UzPjNfMbtAYTF?U& z3!Enz^*ac_uveWn;S|^QXRH6Z`fGZ+zr-R=u_9XPsDE>bt9d)^$47@p<4=#?NT9&s z8_t_x0;_=k0*ht&A6fn!sM?Z^1=IYX0$}#i zI^@(=@ebyHdr6G^0hoU-mt|ukb!`p&2MagoWd#N>nf}IG2XNlHwkh+z%kI0u)$J88;6D8x zd(k&A!ur_%Mu2q>a?Es!vJspQJlHyZxxN2#{a_<$?e%pJH&S0>zZQI-oa+i;jayfP zu`sjd1~(3H2h+y4>w6KhsJ&r7{d$6}W8A8a+j35UW(3yWUQdDV^}+Ms#+F`oFF7la zQFy=d+t>{5-9cdKcyMz09*&aJ;fNa+_^li*X&=m@i`kA%`lX`6sxT}p&B*MJDwc#W z8EuwEjc$iSc&u_7K%V4t_Se9$s~SI*1k9jY(PXy#o%33yEOt<(xrFJVhjety4gj4_*s%;q!eiDijx_FqIVvg7{MK zUyGoGKq75JDaZm&s1I;vSD^`*6(mHnt~7`bp|lRD7uPP>xqTfb9bg*e3>(trS-vDTMRf&~mdeflYhZ~*~d zV10z^_5>e;bQ$P1*QO*vnbg%Ug|T**uB|uGPIBlTq|nMjB&la_rIvxe3a=2G<*?%r zxYeI@`3w>@d|fjHkg)77FmVpCo3`0!+PJT?ifF{pmje1Q?wA+x=t%P*QaiFn!Wcp` zu5|ztuK4;v*7ns2y+%;#pl(tL#R^eV47d(mri$4ykIgY|2^wAJ2!Ee0-*yh4to&Pd zSO-q>IH{Oc|Ap9Eb)%RZr_sgSqdBrjB*#=2Zt0l{G! ze%Pp|f1<|LfY8;CMp&T==DvMcyj0KtoXG?Z)Yh`tkC?o_+H(9Wmm}c7TKuc7#k5l3 z3Z%VoA#H5fqhzd(amT=Z;+g`c)Xr%?O0Xbk!H5D*@d=N5N#aJI^}$w7fw6jla&bFRyQ}PWq##cvyLc=dW6apRN4co4-HlJbQ4|TW&44 zj(VTsP~R&4Sw?}w{??n;;ioHap78_Tq;1hKLg+RdBWK4UcJ=;Py8W~$);RbLOSTr# z>R%SgPu_gObMN?T9m?~`+4X30^!Saxy=^7jrnUSDs-|s<^F^9$9UXFTYy8hIMS!)A z#-GTWNBJu>(!wa@^U<5Exts1l@B$FE@-G!=pagBL740M_RgaVaa`a<_gY7NrqX1#g z83aFN5D;=ULxE1*|CeriffGP8l#4<%G>L<%bKP~-YOwR9BOQ(DD{?`GlGoo0$u&t|G>`21n-Mwxp!djgle_B@E z(l#j!F91&InmhNvIygui%_C?+JOR55hnfBYshD!4y9f>_nh8KF4lrWoo(9hfJ3ihe z(p2E%TC4$~pw0FAv>3KUJHwKqrVnmZ&J*^CHf(lkcHIIQX*j2wwn)jITvixc9-5MDWpv>ZWhWWZ=ApH-w7u{WENos*UIauRFz-aw&Hs45f+g#zdS8yX2n5TtRDf@+*(y0;>JY`ROS z`{<>RnM(w=9-D`#-=lDFG(v zvY~3*_?V%Nrau8G(0^4|a;`jA$KOxB*!&DC_2TjYgmDM%sgIyuAc7`z_`N3YRNLV3 zF8+V{qc4`ntGA$dH$QVv>VxsB*i@ReIupQMh(vf98LSQBGV5YNay5P6s!U$t0Qv)P z|F83(AS7)O(GFoCN`m5r7(UavNQ#k87+OYK(n?Tjz1a3x+NVEPTAE=8xHAmtR!|)f z7yw4>mqt|(D%-ANxl+-8!KXkEuf;J*h{$(yCI%a{F-%-K#&)rUl!2RKy~z2IgU4|K z34P>#o#E_RVYDufI2VV50F+Yam29PUht67-9Q7yLYI(H{EP)}5{@e?L5RsFJeoGzjHQ;eul3$ck|!7Hrg!X35H4lHMm)?fcp2vNpv- z+l&yn4V$Y+5wgPWDX5A8tx8E0;xBqnm^iBhS7-WKSquzfnq_+o{Ui#bcFKtDnyrtt zSS-3B>U#8lT$HJdRD;W1say;l&ZwzV?V{tPBdILhEeK7zM)ca+=F|08NKf%B^m!t*h71xu=cL zRaj9osA%l6(wZx)HXGB7?{$0KX0+U3OTE3>5Y)G@{X^5rv6A_)+Yox6TG2j-o@kwc zjx?I;Hc|DZY^Apso3@MF?EvM(9coH)#P|G@-jOht6JI!VmwCgqMC_;(LO)9=|3r=n zUG5BgGSFkayN{kh*`SV# z86A`{#-4+JjG&~%I)(vQgnRPGBD_5CX|nODQl!UXcLdc))QIlqXgC%;1vrp=fXh$7 zhiY};XtPR+*d2Ps;Gh2sf|TQ?tV**BWV$_WW=p?i(Wz|=4Ru}>V&xHrOt=%4^c@VS ztv5D53!_7{mebhW{bKo7U&a~L3G10SIsy_H6Yn)1&D4_4r1!vI(CDm|3NXPIa45Fs zF>P!@j#flj2{Y^=#!8iL61GBS_pdI#-J_qspt->hgHvp_GK|tBSnFGN9F~3)owB3_ zw!QW5I97rlY+?DAFSJk;T_+S4WL&?i!OF2-dEn--by9X1a&a?Zxju8U6Ol@#FX2(QFW8cU;d+;I@O zwUZ%I3@0ZdP&?UQR#bqUl0u~hz$8a97$Ukp?-V2MMDJC>(f~B3lMj7}+=)f#A7H%Z zKCX^I4Oqm#%gU3i4Uv?P166I!;m_D`fi9Pb`O4F~Q7k@xTk^Emuda)4uzr2d-g3m6 ztHC&K*#{Hni>Oq5ap4pT>U@cwkt~Q_g3bec2{KnsKa_@gE^Zr&TehSC(-)Q(O~#vB zTx!Uez$MS4gD$*}|9fnNd^qBNvx#6fYTHH#;q=CK$qxD7V});vo${SVgZjM66#=H@ z(#M+^-m2tTSmQox(Nx-YjG6Jz19p-gVRD5abB}@%-6NCTE&>oHEt`7)EM{4C)vM73 zORF*2nlpUq^>lvujCPkzx0oWPd-!Fs4Ac4c{qN*ZrB2ai5W%LG$c9vV8GGjbQcF?; z7SMH0R(+c$NXdLv&ywSxxtCDdm$@a(nT)!Sn=YMpcSkD-34q@P$9bSQIYoWqrvdni zxOmx~Ci|NME_c7cf4a>Is0G@t1&UKnHmhpH5~glV=)~}w+g*lzGQLQ)($FgHBF0O= zmZM>2d~Ppbj@m?>zUXfnbmgp84fXXCD_Ik~YSy}f#YkJr#Wbr$<78{bh2xDGHyIS% zTx_^+Y5SHKa~?L~ZrX(HRe+Cavi+}4MZdU7Piy77pi@9XZ8mtC>iL`uF3SYhV!|J_ zA_APas;heQf%GSAQeWMidC}zE6_({LCoVB0!t0Sj)VN4Vz(%Xft!+F#TZI98y_&ZD{>hh~q zw9BKBwA>!f9P@8!Ki{{r*=bvJS>2YNaV`udw1`Ys)o*`~z4!09@hOoXoXblEDJ!ydujoz$u>PJg`J*Fz#89IISW?SjsVS9dh4t7r}O#9#2og zrg=CKsz+d2s7f6<{E3ANBXt;lT_}x!Euyto!=6>4>{aJk%|$vZeOZ-EfZAV7ONEw1 z!-AbegcM(Z#RAxhUl)2dQn;)Bguqe+u?=UB00OEOzky$F35j4Hy?nm@^fzd)1m&%kZ;Q5@TUj5}-@C z;HSV0>qyZNZ0AO2;23e4QUY+j77sXltJw=;)&S@S1VtRob0sL`tPL$K007lSL6Nk{ zG8J%ssgfw%&44BH>Fw<7iZiMoH8s7Ts-*@IzJUn%wY7FTOr8TxDbRE;f!<|8e;&92<^aO{#b~aK_Yj~^@f*FLJZ>KmwiF>B(U!JFA60$r@>&LUb zxs^_1^Ciw*`@4|mcLNy(juEtOpPnGR<>C-KoaG1tMK;M~Ts|9vOoVt{4dxC|;yu2A%~HQB8Cb@$u0{RN2bT0&Mx3~Lc=e~j3FEyzOQ*hQ)cYYnH4QdT^J_v@x5YFka9ahOND-8=V zm0M@KSXBin15z|KQ8V>y-T~g|Yy~z!i~2dO->wliQ4)4i0zyXtf5me+=#2OPQpQsM z;$eu3D37p}Y-enL=vkbrVxg|#6PH)I)q{wwZkq!?8;rbUL|A_A7JCcS2^FD+TnA-}FZkhj=vDvOVm5U7lx}L4l9dp-!xsIg_&HzKPL|~9XX0OUNaRXD7#TI3y-dfFO zFmkN0^=9vr4JK-wU!7c|`ntuNfPw!j&!qiAGtf@V60vNA1N_vg>R3BDPXZuscv0TFpsZ<}B^{dOX z<1@=kU9O{|%Ff050KvG=g@&aomh1!fM6c7{L`v=JNL3c?1Bj(dI^%Z@(aNIz0FiEF zK7EMXyVt@CCHugA$%|~c`W|MnT&xe!U#9PVJi9o!4p1)E2k0R(WnIklBEDgyijsZc zzCJs_nRMpy9^{T(tPjwZ-K}s9pj@mE5cu^Cve#Y%Cza|0v!z!AT>~bS>I3uq>~eNE z+ZUVk`iZksx(}>fK??siucyDZvwClAF5Lt>o3Fn{nsD4*uKDbH^hQyv2?*L1!p1zU zJacZo#cK%Js?Y?!yL)-IC7FIA#O#U8Uy(_8BHC_rc9^rmNBx(4RXCL>Te*vEFj$Xv zY!K+RrZ*f}N8omTg8$FAZEPaJ7IX=6GFo;et;4G)nWSW{b&`9#1ObWi)Jsg}Uaat2 z-nYGd-mocTk!*+AHHZ;;a(bGP<1Lj4+T*?gjdj_HJp?{-ivU-15^A7cMz*XOoZ$_? zK_ldTW>NIW7$irr+lv%WQLh*grT2(8hjPK_l!2cYG{UldF5Ux4^pjWX83kFgvthZ9 zL42lXNFK*PN%Rw_rBome3BJ=i_wK;yN=HMg36C!ulw{lqnWbZgB@_IjJ54=|z}<*5 z>}KqAE-o}SnaKsgrAK$pfA7O-SL^ zl4BWi4y21h?M&E91Ny?Yy z^ycB&?RIAS3;I%w&Rx%lL}6F=$yeGsb;=rViCc- z?bV9erJgI6a4JPLvbp>4#j7o{NE$eYy7B-U1Tz>m zG%7x5ns*sbSKUHI`$bmmTW@`uuz%C;bkELs*s16%+MHMtVhlu+o4v>oAO`>9OfWSx z#lA>-zPjg=43sBpDs@*T8V}_QiIoE8iI?yb!iH3*Hhe>P5a>aio3(Q}vJjl0e zr*3!I#F>{Y(m^1oB)_9dhC$Ml5Iaq1T-GBdfg*Kkm5E<>IevZy*1@qa=r6q%f)TWa zH1E7rtSQ@0YheNzFE!ywqmE6_G0M34;EIW6-M7Kc_Qj^Eouu1b0g&r_d)ME2We2Q` zsa&L3tvrB#_3B~@?m~*wvx|3+M%1k1qwq1igM_nToQ<7?77@p2V*{6+lBlq!aCzs+@k$AwYnA{OK1U2 zQ|fH_Um67M8^|+uT9;%fsJ3sba#}~$+0bCXUT+)IdFj9G^qDcUhxju$udeYO8o7pr z>Fhyad47yRTX_JAirFaxZ2HMdZjYT(-yuN>T?fE7p~sk8CxqHx;m{9spzn z{!eI#Hg!n{ylyybAHdnERpD+|R!;a*E5R9K^FtUBP6P=^(ldBSgux_H6NVuq#RS1| zi2@0imq?y9NPO6k2!Cdr+uq1R0#w33f%GQr;)^-91Ms*ordt?lAoY_dbY=Rz*DEq3 zBY;PvVMj)-i)8t#v&ZJ`zB${*gw6z|6CQlhvb{xP-E2^H#sR#S7N*u-$4GC?i7M5c z2Zef{eSy@NUY-APFg2G^TK(93QF~|mJZDriw{Gq60uWq+G}3hv!;DSXAjBY_5-Kcq zvbs?K;gb;qLyn547J*w6x8XGt9?6TH+yeDU{>AA@?uf10K`9vxUE)fw^gnge;6NbO z>-Yc$7+p(I(Qb*+Q|H<}Dk07yn$XW)f>4^A~G_elle> z3jWM{!o{nEgYfuX<18oKf(@Wo9Y=>wni0ba#Ty55gszI-hzZ>c@i>qW<77ZwT#me=sSBpd581V{KgG4!2KEn8zmoia8PFdPWVPvpqw^}sy zq^HaY!)(su+j@yX0;N6`DFeVsEYMZGumz*Y@xKNtE=VQ&SPw_MN#^@|*Z~`WD`M6K zjhkW$1|!kIV15H@Y@xpaoMBnXvdl(=VmAS-woYiyNTa^=ov)71UazfPp1owo1|#;} z(Whuv&YdEi{^v`-+>=`@Z1`1|W)f-Qwxrj5GW!5$qOiZtH$Hhiikk~*ho)yX>dc=# zb4tA#^U@^=x(eG&)xn}X(Lfq{XPUMY;gEr;No_+_=zC7urX7?(^~TG!v{{rm)F{`} zL1c=STUvuD;|Ms+rc~3u}L7yb#O6zDPR^U9fx737SNmWqei8S{V z>U=DlB6_LGFpAKn7qizm0z1D3O`Vl+LLG4(Jv;#Qzi?k-yM6sxPq=xXL>W`8^{=*K zx`eP95CiHOTrun@Xqzanhg~9-;X^B^_f)Kk`8f`JAsqqkmz69823~kZjxKUJj`B=U zJNi^qy!=Lf5Y_QWdW_8KE6zcAVs1;Bfx{G0%vV0OzV~8*o72NqvTq|)yQG7{D0@$% zufN)T^40SfFCXnnN_YeA7= zL$0AY!VLP09GySM)gW~Ikk`7Gc_!A8&tu?>pXYI9`<-4y_c_i4(B2ez04>efE?vEcB(? zXA2#P1VB&V&CAHJFT!jW=|1lXGAi==9{w%kHXZ)^#qu9yr(x%lolo(cMD-fY;Xk`eYN4 z5b&?Wm#@}e>dV!mzqjAN{`;q$4;;oW26R~B9>MuzaZ^W3&}aq!tG`;a75Fdz`l-aN zkSz6lYz{RyWqu=X5k){vEn=LU)BcWK)$?qHJ~nqA#rf(KV!?aG+`|Xn)m*gViKG9B zn%>+CT1qz6ATPRP_IJL~A@_!+b~US-4)fZYxP=3ix2;mT!AgOl#oRhlLa*Yrrjn7^ zG<@dHiEsw}D~>(R(8(5<{x`L$zPNdA3vy3#kYa?RTpL0T8P65R$!vBGna*5~#Y4o~ zqZH7KQ(WKO15ABM(jLoeY~AZCWYVV=^ze*H2832@L<{&;Kpx=~CB>Y&8MUeW;mHLg zL_6-Ca*@Tc!Qz-gdEIC&v`w~wtNl*T;5Iba+$HPZ9lJH^u%qZj#c*--g!_!8JG>-W zH1q*`2=ovJs{xmW$=GKnuPtcxNMBm%R^RL^2%{`_cH1^YQ2q zBQ8&CAi^Ck5u{B#*ofmvZ)|vmanPu7itrGrmqJDj*#y_i9>5#w64tq>)<(mw3?v`;65he}nanq24Nx14D{`G26hdqO*%AB1_kk$+h~+*-ms zX{slag)VNy?NPz;`^tl}bGp!6Q|E$fYa1^gt-pGN@?r@}9jwCWMH3ePt@I=q$2{f= zksfkBu@P0GFn$;wiD`v?Yo#`al`{y;O-T{B>2~vjxI=*WV&P z8Rur(w()@fv@~d!%^FNphP$Q4e@*H}Z<)Q30XV;35$P?Z8qDki;B)(rIyfH8x)v5R#bgY+!v(389_ za<^zGZ}lF#8YvOOASC!VG<63BFM`S+2nz-|v-AvtvNDoTCPGT@3CLDVgMh3|2T*#i zfFym*3NmzD15DH0z$t%rF+%C-@!2^K_AJ*u4!J&fttKRjx7owRgT!H9K6(1&)qgUD z*q2WqL3`bI_fP)zas%)GvHSkZN3YiL<&#F0^{1O(%eO|ghmXERtxr*_!#$P<2InJChz zn-Ly>z;^YtouC}}$1q5^acxgCLq{iijv+e|roWVe#bR53|N3M}UMTa1BMVna`s znOH=3|3H-nyq779&wIeLSy~X<2g9*4W47m)OFlO(#p$;n~qd)=~ z$ja>+2z^4gj9Vx9F-;A;TGhW3aPar#4>I$HpS*F(hAY1%?Sq~0^z3N1kL@@dsKYEh z8Ly8l>&F)wyMIG7%A&4&Y9@J=`;#SQQIH3cF6>gzLD<7I->pw>bVy2tE0 zRIkO|@k#13nINsa0KzE@znnl;evv&!L#9B^=r_Qy2~WvI|e2g<&!MEDqcvL3P>iW-P@ zL=Q-b7l(?6@VRs3jCpS~$g=~+%b<08>;g;Tm4aGGgTUU~_7^b}qYjh(?#&@_j~-&zW|5yEF~=c`bY z=H8MRehtp{V+rFoM>L195sbZ64q&O``Vf|2?Tik>Kd?ZQc#x{K;=}+WL;fKi$IEmt zJIeIdWBd;}t=+>Z8W-qjCjwaUdj7L2{OgcUU~|JAczvUe<(a0)+`O3KZsyB(QRLP1 zLC~0%frYjmn(&&K44cqlj~qi23qY%uwIu{lw@B?vFfwksN)ls8eKlMxh0LRAD|Az% z*5k6KDw^gnFki6362j>Fzs3(p{mIlI=!ROX7^zSVbGGD%C|>SqDum))SPB*I-&i7t z;-#*dvXxV|>Bj-u80~p70bpzaP^4QepqN}dD~io2)@YbhG8#+v=!&U^M#k>V#8TC5 z;*w?(Chf?xHGTzr;uuk{$KL~(6|f1e6tfnTCXSx|#pq>>5%9~b0y9#$W&kUP)93=qLT!qZGM8A99kEds%{gP zm_h~jGAIMWo($N8x5Oy?9H3Ez+r_K_qlsNg%Ch9bAMo;5M9QBBFiNnx=+w2FxNKRv z71sg!GvJezjeCCvuyJTzWDHDS-6FY3me9%Tvol=3VKYb4Y<*C8V#BrHWGNL7y-Dwc z3%#tv>rx1u2<f~H9fE3?Q2q!~#9V`dF!_cV;ESHx!`S^>uD=y)D=D)Z+;9`#tvKTvNN{O>mwTZQSe7`c6 z6$Fc87LiPCe1`uIyrDnoK1v_OM~ed3X^zRH6mWdGa&>X6NJx?rZZ2V4mY`;ud2NMT zHz)x^POlPz{t=bSWu@LNG^XPRSDHibpNA9Qy0FltSSpIsq0Fe?SK8NG8Mal}O{rWC zx^+V>_2)!1)EkyJu@2-AobLRs;9O-FT&N-XH7=cHEv%!Y%Q;zkD@+?B9L$q3?hqta zO9aW4I1)W|BoA1l%7tew?W-78Yvx8c(fp(JU@2}Xy_7xV=N5 z1H2sfk|$S5J@pDr(y)9<7%x6R7FH^VVl3=cafBYJHM`_wy)yacFg;nmMNMz#CbYD0 z01NepGdYZoMN^Qf7L?P)y;EPfIyr=cI!1(xnLBZ#j9b&>XsQKz=5l@@x}2%-vfS$> z1gq%^0v6x)U9RtzaTx)TPi>3ST66CtceV(VG>F?+n@;WgR&~rq$UDxy{V>O#gx-<{ zX8vqX98hBB4zt=31J^cpLZ}m#zG5EQd#8`o6vM+e$^fr{?s+ z((;x)xo1?d(J;HfE*Vjam5+pDI-+c*7h>oJdBGLN16?b8^u=1*nW^|D4o=Hpk%2jx zoz70KPLgA+5J7PAv+6tNYUxN_G4P~)T5(SrZek_ax&}GWP)w_lM0Bf9z{%G^JT>( zyid)i`|6_m@QytpCBu!3RzlgqON#)iv|>DPdKR>l`&qJT)S?&}y@{e2!zHc6ag*lg zht$i{<<<)BPu(UCYKhsc7ksOSH*I93tU8yK`so%(`C>y^)AdHCKJY7S{GofD(qN#H z{HfLb6q5)@kH6rZRI^A6hSzGgbzV!*fLuJ$`4n_g=i52De)%rX9$G+gtF8ZH=UTCY zdR2VxhHENPC*{Ijtgv|<2F6xHaHF?|93dx<5maz_#t5t$AFCF;0NOC#18~|3*Oz1@ zoe&hMs*t|Sg)+%dkXP**stHOU97}|ssYnCgP9H=DIJVVl3Jm@*ySJi8->0?wbpXbe ztcx1el_&!>U)e5s_SqEV8>pEXrqOPsB=jWz8eQ+&EkJ{MMFgF@HHJ)0V(Oo;>D(8P zo73`8x)@*#yB7P;)6>z(Yz`a`XGd2T*oj8^UVJ)0NHX&<7Sb>}LN1@vRWc^|%JNgW zwoq29>-14=aPv=x3dwiVCTd`|_*!|GS$b2+Om5G}J52H|b$NBC2Svi(M=xOUK_)pJ zJcERTC5z+TK)VU?JyHvEoHJuWlU<{hA2F?NuD}Qo)!o$xKmy5*j&QbLuKt^hU%i>i z2I21R^Yv$swl>!{9_{XOe{ZL%YN;`>ZH)_tkvs|8rw4aOH^hrx5afa&8$R0oX6w<* z-G`5G@#+Sw;)k3a@u$;B-MC-Q*z8r@Wh*I{^fv_ZMl<0~3FrC|$iz==-h|j?a|s0O zM_3!Y%5Zcu!Z*+nTl5;@=jQql@_}eH@VnFa+12soEH|9Fy!vnx!dF$_i_2>m3v+p0 z(TS^EUVjZ2UiOU6?>++SmM13I-vnw`HeqgvMA2h7Qk1zZnA~ zQEcztM9+4J@(5-9SG)$pebgqig*yF<$a+ce`uw)gyW)0HCTZc7wt@cg!P9lp8`0%)RZbf zg_bijut}~Y`WkXQ9A_+G(n2-cy1<%i9Icg>H)Ufuyb`(s)4uKuzfa7curC%iEN7J_ ztn}z;lQR-#VoKKj5C?>$9M%tWWGRSk+guUv!Xk$M*l)%@w|F8N{!oV8qk$cUJl?SS zVLvmW;4ZFIL*fGFCgg$urY!%D6cU0~h#0vn+u%aDSYK%%m)(KUYQLvxx+w-0 zFt}s}A#(`_OlR&h2F=1(4Yv-SG93D^(IWQb7YII`Z= z9WNzX(XxEyE?L4-S6fzr9d1E|&c-fg?PYcB{Hyr?Vsnq=?#9%Vm+NbVTc_%(HO6$u zmp7CPd?;V;jImChosQt^8_nOy;Z=rhpX#P30ybCan&UVn?6q;Qv@Mv0JF+LSz)>RY z37dNvN^HB6?ilMXBxyq-v?{0hpt&Luzx1o3DopyQ*xFE5sup0MFgUo_kIr3f zgXn8em(JzL6};^Qe8+TI187SD$c1DZ@R~AV?{8t9>4%kX-PtsyiL=S`kv3d$Ldx{a zk^Fh*4q0L6&e~{ob@lFO=MGQ|zY;R`?$^6Jr|`unpYXV|kGv_1TMezeJ$3@%WMZLs zkQ3UYa$gk;=@k-LF{MSu*%GH2_f8W6xr!3GStDyqo*N=Y|a1$b*B^F3J8owp=tyW}}9qQtnV)2-qo0vqC@JFB(`X%P0VJlf980V^bDp+js1a|i!arC`mLXl!B=f8 z_+cU*B|2bm2>8lH!EeuV}RS&RSbMfN-X z@~=E^GXCb(29Etixx#qI01yGlQBKKM(%C}GwvuMQy5F7nz6NEVmw|zqXpPFf1a1W% zb*J&8QgPRl7qJ9Rmf?rjrGJdZG9 zSVnhF3I#e%{>88EO-+WVk3Geb3)JU0=7mcvH`F+0^mUoJrwhjedJje1hhoW+Aw%f|gD}nAo`*lEqdI{z?#I zd17c5%F-T>=RRi$AMc-JdIIx0!Y=v}c@y^Eh)dX+IW1Pay{PtDp5aJ2n|EqIa|{Qp z(19A@OlUhKlkv}!oz;K&`JaDX{+PFKjaPr-oLJS70Z;BT6HaSd`eNGo_h>eeRb6$# z6{{Qu4dIl;qSw<>gr=IhUFF2UQmT3v})CI6vzW5!~ z7k(YnfR<1n%~Pdv2d$dzRVh;2s1Qu3Ge#MaB}5z{=0U^xSAJf|J4RC;`RN=iIFSxq z#a^Qw0_J#u!vZ+{E=DeX1*aK3mQeC{M@L9_S31rdDLEHB;d$e?dx$WQyv8z;R=_fd zve{>y7nN2jwlREXV#4z#D`Sa6^wZ&J zEqdFravLEx|38T0A8V!{CeIiszVZ*aq_yFKF`w}E7+!5?%N5Z^P|8-e_5k-5C)+Cx zr2AQ#9QB@>B4^49s;|Z5({a!jgsizl8$FE$acKZLiPC8Da&~%!^g5U(klz+zm@_UM z4ql1$cso8-RGgZQz-YON6SZuLS0kV`b-^_dYqr^kA=OD_Qm2_=#u;9QH}G*JS*z0o z>5Ppf@Zs#IVbOekg|zaseVt*Xyw|o-SiS`V%X9g?FT_Yg@FO9j-!p94m5?EB+Cgnd zyMG_viF$Nh?3(1}`15}^IaBvkHej*f#Gmde+Ud&?#2 zl0*T-xaKC$}T#?dtzjC!qEM^s>p^IE!9hh+*)i^MRBm+GK_^ZmydB79Bv1#iaJ!Y z`aNRjE1cGXhi0+Dn-Y;wm2KkCzD-;b2X9`S?W4^{KTY>>Vi+y^pAKQ@wX#Gyj=#=B z(fUrg!;jtI+J;k{`!P`It+J@XPcO}0NZszpcvKy^Yt|oL86i!{K?~TM?uNZv#`bsw z49`JwuVOeTy@4I*3E2OU4h+)NHSq1qZK504QH^@!5-N^& zcP|hFx4SEG?aZNaX5AIXh~@gB;;g|Mt;`pr#x`{D^z`jyyz%1M<_iXdzkKoH)$X^C zUT!^k@!akyvU+Iyn$oZ_;6y!{`4JsxspR4?Ae{0!ZUx1Sg%G_@Nw(hPQ4@+`WYIck zheNMuC*$OggdC!QA}(bSMRBY-tb|VfU1pXHdHl)h{nh)tm#rppN(5;P8ro&&41}&4 zj3i;!%0UPyEVIDGG8u4Hg!Iw3#@yyjKl0A4teO;mIp3L@*Nx8)1t$(StflvkP1CY7 z=N83*{T{Oww;(vujk-H4pukh#V)?J3lP{zA!6pEilaCMU)zK7wof z1M_*~W^Er~__=WD4(9_L-I%~#CQPq0z|(_D87UXP+nU0|B`%`sMC-`oL)Bkw59x9u)P=39AS zU?;gN!Z=d>+N1Cr$<;MkZX7D2`4z^)w3+xm_BA@0=f|Zf2nhTV*d&re@15}~t0sn! z;mi=qY5-ZV9H`b|IZ=`Y3zRLr^kf$S&s-e*Bf20Ay3tLiJD-kpb>CbU2cB8x%=qF z)6wd!@k8voy*s-a?d|U)yZ0$0?cV9O9o}AyI8Uaw_6~V)7_o<3(aR2=X|^w9Qa0C{ zPrW1nWhkja-LlY;L{h0dq;;8k49l@o$t60NKgAGhfOL9|yo*%guB(j4xkE6^YmX2`61E13>&VUJBgSogs6=RnCW1by{Je_I9TLOxYVV5lu%7D!00d z*_592vx_ZWs)=@m&FqHFpK%xA&M!N^e1U(-OYrC-qB=7aWhA5FFv!Yh7tj{gn20P6 zN;g}WeDT@s?|<2w|FZr0gU?2H;Sm3buU3|~?~cBke1QkPxP6yJmX?K~3)m5X)CMuY zj|zp*eZ82vC_=WN1I=Uvl(2PG?qC2Q`Y8Wy%jov^fBx>HFaC_vBJMpM{{kusQ|%%o z0TXc;&aDrfwL-DC3Kz+IVU zrU}q>l~+vira^tQa#{WGn>nv5Pwu9AD+XNJdNdLz27N{fk3GOlDBa(zR!3DfnTzjw zFJMyV@VBr$u)~E-!u9M79zGl@x@)xY^`niy?5;n33Nru6@9EK(-#q{F#W&9%?rywz zzV+(m`jh9cwooYD@vMdL<;ljYstj*?b{jTr9ii+`x3?; zULMkKK^&@#HqnJ$ZL9be7be3D65Zttah(r)N!mkU>@xrCo@n~BptOAah&9s0cq1dSEs`@WJHd9tgNp$xH8$`Kxx-kmu1zJGUH$EGm zv_)y)Wskidu?&`{SAKlBp>rY}_;$8?) zCi#!e?zdL9Bo=Do&2Z>hT5SW5pwuebgW#c+1&>`qYf$5f>te~$2ZEUSJ)X(QVWH$k z5T(1=mcC3v0O;&gVi*vhg&c!r>YXz52j(A+p{~{!c0%jm76QcQ4PZt(v`0k_8x^Cn z^4-Ub1gnZWc{PwjPOWweiTavY>fP>V7YM4WaTmujf zO6B~B-G%}tDfE{_*g60C`LFoT(_crcyG97%bK8z7NgQHz!S(7dNs)m=MXNrUfH=5f zG(KJ(!QZGu(#QItH`l{xutFMJrp*Mg*ps%z*zpYtxrqzrt=74WH#1x!>T;&F2G42S zNOlNs0m0E`ZzeU?K`IVkR+Ri_Eb3v?V!*d)i?Z)3nYcT6UfW zebvuTG)1Hf83GbId^&n_d3k=1|Cx`zdHHnFp2tqHPMhP~fPLNYr7tLZo4cg5jWY^HUrH%FT;Z%FPr2#2DN5lzONJ zr2EFhkFy`>x$?vIcv6DlVRo_4F9&D)Qsn|fSN#ATRw;&(nh6P`CfB-AMGTh?0u^T|f3c~~dHc;+?&?6V7W}Mz(#T`O~#)?)w%iKx5kunASZh`{Cc5>nAJg?!Sukj z=p?X7_Iis(*3E?LLNJs)xT_x{JRDhDf2sYO0zE`SwX|6(QOytr&Xxwbl$gJ^y=XB_ z?v3*~;CAIxPkw~m)q7YWsc+pt^coAPMJRaipcOA{KukM0zh^N{^rp{~JxD(eLiu@m z>k|89c-EU|v*SW=fzhCob)1b*2i4^uS&)t}^(=sz_z1c)P{e011vBLadyJUWAk2E} zuN>SI4-0LL>KvF{)0?5P7q$u{(`=;v(MzQ2q3{;2JdnMMTn_tN0UBs_0|!dNy?-37 z@p#mZiH$Xr{xjHih_0P*Q|)Ht0m^CRgIy!i>6SZR)QyKbLvdB>+FGwCRt~^;bQN~F znUC7#j%Q=!N2b%t1KHYQ08vN92&gC-n{cvVia5#M=e4!Xr|YjCzj*m<7s-VGvi=qB zyLj}~qyK;+a%qwCH8y62zD{U$$!w@J*ljLKJP$2M9M_>d89zOsj3h<_9fwHR^;2I* zK|i}yGNv4!`(#-N4oxhiu666m1LKFGvL;=1cy^52+mToc#vFKb-{C?{iALg#$N!0eq^bWTH!lyD$B1Ey~D46m2 z{9@%kSE+pX2R_Ko%gNq3pLyO%)~?f^m_9+%Vv5+qd7rysf`g5bO014|@YmJ8y)I*AR9rWvgtH}X)9Dko zVw`Ek?H<`6mqC|llQFUu`D(?xiIZOkxEck)!pQ2ao#S-k<7%XW>ylg3cM*(xa`tvQ z3Lr1fMpx%Y7uYKWn2}s?{sC>@LbadM6=%L}Zx*HqP5(#ysKhKs2hR53{EG12IzGoUA$T6bYF zX)O_08$EJEnQmlh7;IvBea=D_w3pIKmkWl%)^vu2jjk)oY*iqfG>ha!O zj?2XNbc5l{Bm~@J%50q>E!6QtnCAX{u`~aj&?8iRv`Cf#3x-OO|1xaYAlD6k+}(AC zYnw0OT|#i+(ex+$i-j6?&~dIAeW}vzYfl}7ttKLjR99>sBY_1an>`#I1BhUSPL_sO z$4kFn!EiMWHe)owHfsWoFSeNJ*^b`rYQIAzry{^5bfLfX&)k z9`op&ehO7!VT~Qv2MIIv#(9*HC~zN!xK&{vY&+e|j)`4^daYKX>F?o3E~XwxGvYl_ zr2woZzcq`pU-lkus2VSPL zULdki+)|c=_p=5CO568|a(hF(f+l4N4>xws8@DEj%gJ!qivKK)8@Zj^D{D zZ5LS|T<+9rGEWc-A!&p($~Xv2w#An>XK>=H9cK+xhT$xE6H8Fw80(6qhNMt*KvYQI zDDw~uiX!C@(=~>0s-R%^6%JeClo|fv&#J_e7dua0q@+^%acg>fAY^92RierNtSDu77%9;OW`^57P^aq%M8#A*UR2Zlio2)Y z1VEghVWWLrzSZ?!D8}o>neHex0xiazO5qK$WH{)?9ymYs2|cS9d-1SHAk}DTc6K+V zALFqR?e*PoD&4xnHJYcPvR8LU4K4&o?Cbl5KB*)YyUHLW>V^_P)6c3p^Om`~^5^8% z?6k~MotLS20|8cOyiQd(LMU@`@Q>VsZ(y2AhQUJx-Pp!@*t*0qy$*s7G%7O|M&v`; z-cI`4Ne!DBlnG*C6{c`X#n{5iY?g_)CKzG$Fc`xdXJCl9Bbt_V3w41#RwIi8>77%Csp{kPaa=VNy_Ouol-5L#E$so|(EYpFv>vIS*CZ9EgMoF0=kDd_J) zuOMP+x{sqKv3tdio|6j(0}oll3>2fv%UdgI>Yyzzt}kfVaE`PElu@3U`neG%y9O5A zkW)}7nH_GkXl$ohKn$uM=4Th7X9h7?36vFK0l(F+>J;}ZxtGDeS{=>iPpNT{smja% zxBFf6R~}4%!fgjgW7(Wsgb*n4JX@Ux5zHTw$HiH*rE>=RvHU7R|uHi}dfV)aNfbxp-k_Gx@) zOdAM*OR)S9;b}pG)3H}{R64_AbetZ%Osame#7#b2y7F@RH%e}D$_d`2cqUOb4DQlo zwWR6-WRg&zOb^U=%906g95VBe1ysluK{iMoB9kkL)-cZaxzV}gep4_XBaBP5Q+j^Y&( z`snPLw;xwlPS4nx5$-KQDXthMG2B(Eh3cqbS8b(B|w0&h7XFDu{FJHd7=)u36C^Mbz+d4W68#5 zNW=4PMFLHslS&*r-}4al5t3W7Q_l+~C*YkZ{pc~k!?aab7zAEUMphySH(X3r2K00T z4_do1$co$3vmX(Wxaa^cfE!{Y8RA$I&v5gv*WqSD{{p+O7cj>^cx++cOWf`XVr&#* z7sE!8>qmIqGSn?NxP1fb(I_?9();T%d1^*WvVuAI63UfSSXkZ%L%8)h&D+DKbeKS& zo*m8hgVln(pX7D1Sq^z{V|Db+sl-KK%A?UMpD{uDjI0)h>yQ>wS!M{COaG7_-6qTM zPtEfPwMsM+^_e2HktU8x(`<>HG|ssOQv!?l&xdNiChw#T5=xjFOL{34NxDNc6=4O< zkbbH#rb^ykl7hr!poGqNm{3VeSWptvq$h-5VRu4}Mbc?5vA74*a|Hcham93K2!)b- zjacmd7gn4!LiR>KoSyx7ibHp>L^wIWe*L(BX{>l|MwpULM{@_Jch{p=zlk|Z+!6q`E!1vE$2I1I5DaTO47~&R9v1}Y0+F})3ccqSpw^6opX@4ul?S~W>Fk(@2c(yhF zADkH9$%nkS(Qz5nz z^|x8jF@iOWFmuHQQ=O!;gP|LVCgIu5Z;D>yd+K5TH>*pklH@^ctA37-m#b5r?C6$( zGTGd_grB6aRP&aK9fNW=Pab`LL;p!S-c&p1Jxh!iM)d@mDBoU6U$D<3RFAV}VdDz( zlrH9#2R~lSE^XltJOTx1EQ>E4O{yj4vs(&?>G)FIJ)c~u1&3GDR+zgblc1e9oH{q%`6PkYq`p-QiJG5d5id^Uq+nX5zST3C+1;fOLH668!=1?W zTNUZ9`|+loAiVR(`JEBmQ*eoRcrSe#bSh}{LJr6#C2;_Sv#nOPi^Gw+@qD_^e(A`n zlYHd?|4ljtWVH=u7EalX3jIdXGo=m_sC*7jfTX3+;+FY@_IiAg%-{lcN|PcIm54o? zLu(+tHjl8SmtfB)VTWW3P7CByv_n`LA}ldL887Rl2;KelQT_D}?LDWytjkrUyVyH;Ku*lf-Km*JOOY5qOSV!q@-b+9R3k=z7X_yAZ-o*@C z1t9SJ@?xJO1UH@fkXX#0ITpnJzRGg0NI32c%5MdOwC)O!eZpdXTL4c#0smLF;h+?4 z1tT_SN02Lm8w00(#x$lBYSBxs0{pHY?oI6PBFOPn?}@OcRkL7?2d2OQiqC0WAM?=_ zZ5#*NK@-U}z7f^y3`G@e5#FzGj)X!HSxwoCUqsjsV5@QLQOxw4aV+ovm*!n?9evg_ z<90GWl1qEXZ;sFzWh!Cam(#;`qxdkz)mg&aWYLHg@1_sm|Mk`!&Y%4^n2vJ8Y-68y z2TRLqw`}isZEYV>O{b4=Cr4%(IWnrsfHcQ0DR&Tf_Y6{%0&y%|jz%k|pNv*kV98xx zzWe--u%gGSo8@lV+8XZt-2<%*4WNi*FiWte&#w@qBjY9F3?L!7G}Hbbe2o9Qa=t1w;5J>h-d8V_j2hx0+*dJQJ|0qm<3!62-ev)+s4KIo7r1# zy&YfGeO2M=_)%jdj2N>}>&7uu@G?0VpKxA>@q!KA^7com#_=%2%&K!1w8yllDB!U` z@gjprEP^uDx~dVo5^&2s-H3iulN{~4^^3hhnsnk?34nM)6jWAUJg8B7*UUOaC*346 zYntquj8?fc%Y*;+)rB=Bby=-!P-??M7$47Y4DRAxFUA0o3DJd< z`rd~E(RXDDTgx9~NBo^o)PMBBW0$;4>BJ3_a&9Ksu>#L%a4bdu*dkt!KEfpx-~Y1B zv$FS?UwvnFXY~ud^jFC3&!5fr%OCy9`_#wxxNx%ZaV&Yi(>?RsHdq1#dh`>LvP^8* zDoQYr$CcueJPeRUp>&66upV0f(lo0h;F>nz;IBAB{ycz5g4jjoy4t|UEN)TKI*WpD zz~lj+?nEoRGb{-WxLy3Zko)=xOcgtkuo}ZW*DrusfYZe&L%J3dOle5Zav?YPxo(p6 z0zME8eCmTiG54Y(R;9X7BmkzbexgP)Dj1<RnHEkyvwt1U) zq#}!QHgQUo8hl*@c$6BW}wc!r(BYmcyfy#|KJSQkJgeIz4FCTZetgI~N$V_Up6sbi&nnL~?a zmo^BUtlqZOh`O6l;g|3FAyj6u!s(i<7^#T<=8loCl>tpXv5Qe%yNMAfoj}+c3*_}z0k81Z#?cE6 zU>Bix5ey(5Mia*;r{YZ!zl&2Y`eFi>@iozmzrBqHzZETX5p6+fV*0#vp-q-5pIX4Q z`a)!@R|ELg?Q~J@fz`x%y>wbRiKpho3P|sjC5g0`8o;)O-^I3q>#*oCt4GVUlh54l zeS!f|OxXcxGX{ukvI}gLP*h=o;>CZXHw?3Yxzl~ij#sCPvBiZcdS@mco-U?`G?!#) z!jCkU*j?H2lNE0A>tts!EO2a3^ z@Eciclp7218S1tcKKhz+TP{rJo~U|+xc{1d*f!X`uq9dQTN>hJ9Kj3UB2+3Gvas7(09`F$Y zSrN|g9byW`qWpKU`~GHjc*%=N?9KTVP7cAf%j&YWWEf*=frOC%B@Zea)R#B7FAkDc zoY{qSq9@|sg`>i0pBts+PtLm?GB2U+RizS;2KlR%2V}~_OnM7!%F3WDhQd9d;EHf` z>JnHRJUPH|$AjJyKnEpyKbt?i4?b#B^!w|xfcseoOPO=DuOW7%8z7=iy}ml^TDMMb zS5bURJZ#tYNQ+TKt_Oxv1LKq0OsmiZKt9uz_F&0}Sh!x>4;H$v7glDt4=l7;4_Gp~ zAFl1hBAxY#cxW_Kq&g+rQuP=Cw`GMT#JZhgUy?pFJB-{by~SF2fH}jqjhAYPcwXWT zl?qGFp<;OzI8-XH%!W$AvR(|gyktq>NW5BEK^WYg&uk%7Zj>y{`UJL7u(YeaWL;34 zD6a4)S@$P(9?#Yf@ma2#`%pKAj^-VhK8#T4o736fuBPQQ(16vk#QQ+*?p~f*2A82O zDCaLwuwzvBHH^NzLh{u4IgU@ikQ1AtPi`7$0$$L#ke6p?m+L&TQU{0>FPT!>4#2TO zV}h=U8TY|kRj?dpt1oE$X8Z6w`tfK5H}}V{uSt`Ie>GN=i*P=t-1srD5(<|}4M2L< zIuzFrvRixrc2a2hAX`7=y6^zpG_`Ib?S^v6v(2*CW9T{S_^ZW{^%}y>>SOLfHZ>1s)`Hg{n=+tKWXu>qL|dS396EsSt1uum$-*(3 z>{+~5Pa~;#a>Nex0YZ=}7<`D1zv^isR-)vj;sd>?l()4t_kb+X|2@rBRdLa^ombXM zLycbVOONA|tj^?BA0nNuKdmDYk<){}7Sv!L1z6A5up*9;{y^q}U<&BFS_^>jrL^ls z>jBB|9_CRrkZRkA{;=ce<<#FVU>+rpAiOQ7vy-cnGuVPnq3@glG9s8!!)4&D|B6N!P@h^%yX<>@JoOszYhw$XOZ2oKaM{F<_V2Q#ONVM-HojkwNO>qA6N{H5jWD`n zl371slV6fj`Ip0PU=<*DG3!ETVz+Kf5+jlcUBD}gp{|;yL;Ls+t&5IN z1cDSBGRmG+meVu{?{>c3pYMEq^bk3ZI|q%B3-vi%x=&tIwYR1xDC`aD;R5b9>U&#D z>+7oK_4!w&1bC6>?jFghJDzSTdL%`*-XbYEntXf8pUws5=rR<(!cEyYKBc1#f5yDeHJ=a{w^<^&3`7{Ed|3luMWmLmJ8&qRLma5RQYKOr$HQC2y+~S9jm#1|h3MVHxjq9h6 zeLV9E*sVEGG{5HF>?M;NGi`#cwCtj;`-(F0noTwN{A=8ut1@akgvrCgC#pp(NnDs1NG$Wn%cdc3mMj{8ca zhqjO+Jq%9>3CIx67xSdgN2BG@N0XfivL|O}6(|4)3r03y&AA+QDT7%z%SE9LAOdyApvSKes|$H(@=4I-T3SMn+>r5uSQMvLYnAg~S;+ zw0d<+HDlu^y36FYSNj?HQg^19@g;Wvl*Gz0HuFb+#AT5OGoCL0GArmaaz3lh_CVYn5NX0_61yj1;?M#r;#<#`I?34ZL%n7yMx<5rS84|iG!XSXy@ zF=ff+*efEz_;rcVZBJa5eJL=bPDl1aE!CjKCI#8J-dTuN4YJgLQi`XYlxNVAJH;XK zLF!Ua`g$6eW0*9wZ3XG$a|DkseWJQYpF)gw$P<1^rkpNVc9WF#P#m945 zs!o_>MTx4bru5V7IW&-F13(u(*hMmZs5fm=Vgi)#Og%~-{!OO=&!ciNx`R+}yZ2r-=Oni9+uOygXyn3JEwQz4C1=j=+DG?V`xYpG@CJO zn(k>;9-S6;{j#caLoiS2Q)ArH+q90 z-LyiZX3Sy948C+cJw1|aO`BhD?ml_`YWLatf1vL;MsQk)n5-8#W+H%=zOO(E8L!Sx zR}OUB{(DlvyMVm@d0}p@|mAOA>EK79PovAuV+9meM=5ER8_j#fX^S zjb5*g#><)jDM1p8&@vY>wn8Soo`#rHt}+}?aCzPI;uppv{_xAe^l%SG9sYegJw7}C zg&CJtS3j21I%>%9GImpEo%QIFA%U7*L#9BNuz)AnF0UCsL$*UkyWwxnXK}Vp|;NK z->M^x8i+CxR$W}e5WNptk3 znQw>Ev|sJb6$FL1JM38({f0J2{}?LoLUn!c5Z;Ikuvc-jb{`Es*k$TS@sao2FA`O8aJ+G4by!{g37HDG!CbaLFoexhGDVU&Tt+taa>SfP|? z5_Zwkf4f2`L`p;HlTj=R68!-t5e~P=Tg-{ciW_Xsr>ezTtV-ub{R7+OYH6@d7Fevk zP%^j0m$cJ(0toG3+G4`X@gF|J?+2?N-J6K|%#_At`HQ}DECoBh){>4dXVrU?)sL2! zKf6a*e_$(=Tp0tI>g1e|H5wI+d_+taCkxiFv9;Imok=P~U#LutKAgOA5%D@?;*}o- zGVJWEHE-fCgJb7Ui+IeW+y_rMZbAPp65gYHoQ&!iT$oCbsptjgV&{rxXQw>yFGT!l#I|&US1+l z{fF;~;l^KV>Q3}ZzX*Lh{?IF>t}6uDN1Kv4Zn$kR(rt9F11e>8Ka>Bh_W-3Ko}e(p zZF6si1!|gG@I!Vd&-oho$%kFJepS4L{0>E#T#A{XSVJH&>kM`7L%ql~)_At-tOeZi zzrr;+f^{k{`Qu}3EBwp^x3dez1 zD%ht&pbdH@V?brv#enr`;NTd#9G{_;=bbN*SVZLExN-`sK`jr16ae7e@fs6EvYrd0|LhNWK0;mpnbDkN1 z#DX(3znF|a|D1+&qi1PfumPCDo)+0z|Kes9*ov5sd;sBqOIz;f#}7x#BgzpTBUXYZ zBGQB+C?x(*KY1dj@l4olQiII@4Hsks1`T-bB!w4JIdl+XWR^?aDinz*6EP=m2c(IQ zwP?HZ;_iVEh^Gof#JqyZHC6#Z5CgnjO@QI(DDO_f4g@z3EsC+iYlfRhIQ>?4Gsm8*PSvHroLn! zA)!)#8Gn}McxTFtcQr*C-|}t!*HXbRaSQSZ?jJnh)v0m-%`q~~nYE;h@T( z4ya>Rici@8vpm^ZwSb9bMohSgxq6@KTVUKBt$c!Kv0A+u{Xyf^o594Ayv1V&2^ix5 z3AJ4T_Kt`(=}ptC%E*qwHX9f#Va9Xpu<>Yqnj;1WJ`OheiItPymq_NL7Fn84PjD;u zY~Q#Ble8?R++4-wUZ`eV$}XyIGt<9SnSnf`f1u4RgCp|@cUA81Jp4jJMOu~U2jIY( z=4=+ZZ_!8hVe0>!Zgy#)uTF(z9s30*t&*QIA5OD1aZDhIPZrR$10y79RpL;32$9W& z-Xs?xxFaGDnpHQ@v zK@lpIXa6Gd{%s7Ur3i;bL@dq^3%U@Fua0J?I~#lF#);%9`NJ}PdLh|m@<$;3pYr1(kZI}HwdeaH)KF}a!Bgc_E1O7rdj03{UsBeft{HfIC`I8TP3 zsfb|3kJfLisYvp@_uVa*y5r#FCnQ(3vufT7bZv-$GT?&BvT!P`P_#AZvBCb@h6_e=&PKy-1y{s^J(+K(G3^X}&1?x96+Pe&vyws%$uulOOwV z@@B=_9d6scUIz)`47d}jV4W>J=d+QV-Gwu&D7v8IPM9i8+2JusP!v78v5X2ZAC`tZ z8Apegv$NtT^wIIz>%HU52ce{yIj~PfD#Dk8*_<<}vOX2CpAHCR&ZP@MI~UEuHw~{X zj-MW6Ag0C9Kc8n{u<5SD@!ovCf$Nb`1FhXpBp9Az0y9!p?#dxdig*+#@A_z|Bn8?r zhh4k3vX)eXY<7miXdulOPI$id=k&4DOx18ISkRy7z$MnP4s9yx;J8%25i_zeBU5i$ z61y}MGEoG>wS+{wRn1|637^)vbYDr~y_F?(mQG_&dLl6uK0U*Q#rdPGQ95no@ zpg{vjNxTe8XWx3xad|WyIH`4Ea%j+g+M6A}IDLklyV>c{21QfC??eYsDi&oODR-{Z zf()W26qFSbZ2{3;D@qJmfYN^|mt$?%M+ya&Qqe0J;h9?q*1LEp5nTBLMs6es)(x!e zozD=0&b@Y)Q+y<|B-}DwA~xF2C9~!yGpFD?j6OSgyHlAE!~LxEALzOmXEGr7yowaxp$Wxl0|S;UaOy!aDVc2#M6! zwuQ~iQ)J6hUV^m+dyD=NS1hew#IixaXJ>YI@grUnGZ}yOSy;HTXA}cr=-o1Vf&$fEL9SG z()&=l{D@=8^B-pC=jh1m>HZ$=B=pgT6&!3*0P{I9^F&GRg;pLP&HNV|Ez6uI& zEYdal@eLMqdeinX)bNo81Y`xM(rs!GZqiDkT%UojR8ZdRy@l)`0}>`F9L~hfEyhbF z3o#PfDI96w5JIM|#Hw9Y|L~Gjl9_Eb-&NaGy~w$Dyr{bDFwBc~Q49w!bXL13>(kT$ z+C|y)_#bF5A+AKX$Z3Xd;&I}>bosFIVDF%?ol<9wKg`NyA4R+BW^z@jvYu|GtYn+Y z`FS}}FrqSqopaHh9$3+y`Xbade#d!a#uB8p7(IN_3p$A`VTRYjE0Y|G)Y8%Pbb7Ie zFod2l^!yuNc{!OL9cacM!17kAfA%)TT&Z3P(cIM`af{hbPKl`b9#?&rUAPO)kqIl) zVE(!C0N27>yPcZ2b2`vb&x9I#ciLErxS<-=*vZ~G$&_ejaR}>%ABgT?;FlA=(qRT` zU7eh~<93hCkFw{ZkJwHGN+O$2eVZ&cu#d^}a;l$rM)mtaGIv)qO0BJsjYmnXq!=bv@i>n&7BBy0mw^Gyiz`3!a;wBXU+i;mu^cDithp zIkmbBJ^Sm)jAOj?iM&M^n(Q=lg}!@vaz0-5;JmQ>hd2_AyMmKrRBRURs;h7pkl*fI zVBnY)Sm|hiC6+yIYLS_u0P@|%ApgxfXD z5aFC;Wq`*hwOZeIr|D=(dR7fy_D(I0V!kuSgIx3(W<1OZ_Ju(@sWI|kGGGPcQYcj# z&E_r;%gqC{no}4@Sy$vwt`?FFq$l7__lMxc)2LD$9s*;AdTB+iO`}f>qEn&?$p2l!7PV5Yctz2eBkwBl43&2M$o9>wX?v%`^i#v7h+k&6b4SDth_z(Ao4Aa#sX z^pwG-nSvE6q-? zDFOH@Y8UA3s0E4R3 z2ouarVs1|l2FnuBszHcts+;>^ubS3-Dh_e3fPsV}Vjd=vik1qk%NIR#i>yJSspC+# z1#Ez6r`h7D2%61)L%q93Lg=vERj*_4l!>p)@SWT)k2Uj%5tg6c)HY&ua_Wt&o@*rn zMPM8tYXxJHE(e2tx=27D3eWCsdrw|-QZ^KyHB!&*Rr8L%j71 z3Oeh#k!7DLMUWDT7KI`cle0psj{`FaBRzltw*~B4`a$z2KS zr8PW5xCuim>3+>5K_}sRmvvF6Gm^qhO+#$9G=}$1_8m`u!j^U3Dlv*7z+Y4Xu9%~? zmuJpfX+&PU{x5vdby9jM{eoN?5KiwJh{*tdkJDpK?ULA@xkn-i{RP7pX-7z1E=oEi zyfv1hID>^eZy5!B39t9)g57n*^t&rE{UA)D(Z++MUs&-93HMP z!zF!;##u`uks?bvD#CNtl3Jn-c#JR_69@Fh622j zaah40s^cuI^09t#v4?Yfa^N;MuJF8cZ64yUuMn4^Z_WMlldY2FA3~S+$Wd zvT{q`>HfAKqIr~c=+#jOalP&yi@JUKw^Q*`sCnwM6dNZT$+y4-_Gvmk$XA>P#U2Rd zizzTcNmLgsizouXyS;R*O2V6OsXC5yVWbJQWyOJ3bYi478VwDKV0U zwXxuhQ-pcBXL#oq9w`wkTd(A-kWM(MQ(+6gfE(8yj)=|-dD2a55-6;J;l$k98Be0k z^9FxQ&w zfJpjgY%gI8NzO0{%w^d%nlX0T^Q8dBpt05~q0Xw_t00@|{;E>9NO|>WfvSZcR1nr< zSK2XjSkxKw`Bn>OW*!7efQ(p#Q_XgWS?fT1)BPis~%1n;4R@PD5L9R>X%rY?%iFbWS*- zh;%%*!8*2F;2xxkxxcYc?mh!CSOSB+O?)F-NheH0aV}GzzRKHLoT0JDY-Ls+h=uDW zk?t*KQ`{j{>Z+hbl%;4~O6%~`z_@ZNr5+F|{^F1*mHjBI31PE=W`Uwzi>a(7{S?y) zrnKE_mYk9rz98)zc?Uyr1u~Qk^Z_JBs*%-faA^e6=t09Uv)Q7p=8g z^(moiK3rgJ_;z}2Z+>GDVN}=W4+=SWUr|wY!1)OA4!-cSX$90kOB#(}WLI%g`Kc#J zdIHjfgn=r#Yhfwz0j`kg9|Ju+99TnNRP}{3xngZFW)xH)Ue!!0-I#k3mqQjD%;v?C zaPS<_zs=81claN=6sjec(RN3}e-=nnV+Hk}q_%+%{(NnAIl~Fr5Sy2lXY19nEjh<{ z+ZXSlxw_yfncUCR08QmgV>_CUR*QGstgFt8bTZxtF9MH){%ZegF4WWIRsMqj_WMEpo ztJN#vabm~U7=1%_j$|4SXBU#|=$-2u?WGE+kA0dnsu~h8Mj6#^+eC}gNk|ppaM5kf z4m(JqafKWoZ>OonCpcrpFf%UnFW=l9Dzdir_{GzwFaCXZ>p!18ee(P-TO5^{)$g?6 zfc;;jo^Whf&ld!S7FGwjpuQXvDfa zmR{hiBJ_U_hCIDI1gl!3G)R<~VnvuCU%pfuKY24yg~KJ~Gj*_IHrQtunP8N9%bM+3GQ;p>^;l1K{yIBf$GR0#Fj@j*87{hjqZlE@%ug>4x85L*5NW@j@eDucYKF2U zhwgq~`2-RNw!s2W()fA0KD2;yE>|byj(JGi$HR_fKKafcPuMOhqbsx%;49ldIiI|C z-eHo8OC%x(A0f~_A}uFba2F78Pa?)a0CfCjg-Kai8>kC|br7RT0YcUiGbxv5qT>u7 zsPrJkY{DX6#hW7p!dBHSVBRc={C~NiHdJzPC)swxe^s(HCWm- zeI*ien+5@r%3EEkameMk;*~~()NMR4!9rr1&9WW+puAc{r?jBi^in0G=}}WVTj$4Q zF{&=ph5sLW@7f;Kk*tY+=T{W8JXK&y0_^SQY_$!I0UKtp(IddyyCtk$k_xG|bvsoh zFut7Me%?1Od0V+wl?1rEXU2P`QLU9LGcq!684(#todD{>xFTf#9>`w2qe6G5XDodl zSdlp*LNAhu!d2%b8b+f|!<@a5hw%iA-xbMBQ~*H6oU2OJgz=QwLZ;U$uN0s#=Qz4} zvU$vVs*i@XQ-g~lnxh)MD>nf}{A~+a^hdo2u?GqrPx&Q4y#`#YudO8#J0jwbzmNc$ zgI&Wia{~CB=qs|g(*ZEUu+K$nw`JGYVHeEC{5g=Gz|zHMF5I^IIFmbuJq}d z5$}i?XYiV!Zn6BPiyg|GFo|@HGf`fpPVLjpGJ_-I{8+y^9NpgG7s+><;}MH2A3}AC z!{mxp4{xYVwb_Pu`EM32KwbnT=U}_-6p&q0lNgn4EeHK?a0nG=c{qrqjGFR>)<>ClUBZ zqReo8KmZBFcl5oAuT`&fg@0y`Giu>ON~YZqI^XEG(T5-g$F&yxSbJw zF9Cz397_1wrYo{wGbEpqLRg#3k@4i@#dOT|2v1}sq#5UfOO9j>1zx5u&U&B5#@4ys zajcF#OKJp5ve@oKCdv@|BU#oZz?O z@cu!pOY9$_3wG;Am+}pRH=60Xt6Q}J1z2o<3#Y*eiVDSf#qCSZ!Br)5QloR)zz>4Pvv#CXaTG!+EpMlXWvNJVK=thU`C zo|PC#Xij-EiHN6YabnYt5wsO{vcNQj4YueBLG`5uE}99YhP@M}C?Y0cJNYD~LF-o! z#i#sha#L1aG4J%yAR5JF4VMX1FhaE?YS}dTGIC6P>dCG$PQPP)qJR^oCx)DvlMvbl zcFI`aN*2d2VWVYpc@86&W4F(7?GZErRSND4T-E*d)rUS@~iaj|}TTzri5)hHU zzuyO6%9l8!AL~!hAJ9cVT*s$Cd(eO~Qed$_vk^ZkA^MiRFV`)GRtjN?Hvoy5B-4eg z6zKvi1IE+$ zGT}~AEA(5fZ8A%nGbR)X#+R`7neGK@U6}YcK91kk+GfK=PDmaL8kXROP{6|20x^E& zVu|4!H5U9ULH>+`6W$0_Q)%JK&Ar+2?zUNq9t~)^qiB+cKhNZtt@TCjbC;1l(zYLF zd-aroi0Kjmo(2Gv|J1w5ij!2XT zQ^*>0*_`J%uj-riFq56zcM}$k%KN74E_rTo-2JhPv;Uo@%!R@1H35A%nvXb!J(9d5 zgjea7liVp8#$Ljen7;X1vZ)}GORvqvBE_trNYWLP9sl0c^U#r};abaa0=%g`S4~d0 zx6DiMm}m-+ZET7gO1HM(uD<$o``$fxXeBc+@{YxQ%{GEw^O(22z$kB z)KJZ*_y``<$?>51N`0q5D@{h}d3FyDRP67)phja1aX^0I#!M5wK{MJ;pZsiggkT9w zcY;3?Q=EU{*=pBVUjT)4#-C4*zMjaQU3|Co za9cl(hQHn#{`=~yKcxQ2umOj?UrE4GX>Y^dXR3}Gjh@uUb3EdGPy`xENzC#FcdZ?v z96RvNvq=13NlAPr*|G59*%*yB4`%tCAWhn(1L%5mzz`x>MFXfg2FuF@EMZT=9_!$$y!%31%5_ zj~QYU$ur;0OKP@CH#esEiSUDM28FJ51+#JnW+S`vCHju~P}WeGf7U-bby-Dw4g)1T z5Ij82)@_Pq!!{_QR)p78j5GyxVn{wcJ(%nT55S<`G!%JMTgtminNJrwIO{(;k+NAd z0i*&e(^_=E#;*CCvuqT6PQu`PnbCJ2@*hz%fi_$ zKF8B?Y{Im1csiR?xPdp5{RD`~@~FI5&XDut+R5#<~-83V4J# zw=##`B}SBf+=malcXoaxTbHgx8GJ*?3YX&+q6qRe4Pi*^PSQ(83IYeu-t(ARaK(2^ zEMn7Du~@$nIp!V>;{zx1UKZ76lmzRNQ&iH7Q^jNpT+}GJMx;ver2$s5h;Xt^se^K( zC{iMK9yK42Oem7Si*kD#tnAtV3TCpPrEiIShqT48pg9pZICNC8y`fB6@8DcVfWR9% z+$l2CzR|96qDOXg=hLytjNsh#t%N-fF6t2Kre`klARMcp-j325sKBvvVl+d9Tcww>rq)CG2l>a%)2IkB_b=d*f6aLu9-v)`( zF7s9pj(IwQ5BYR|@_I7fe{eY7``PKnQbBZ0N|DHQ_4<7|MHy@aHK6#IL5Oay`VKg#UpTXSJ`%z#Og0LmALp(+*S$fi`0x-gLJQM@u7=t_XaCGP2z7U676IDtg8N&LX5WlJ6r6`c$ zqTS_~5)E~EEQV-rZGyIpls&rGqE&sph(%@I>Pmp56hr(&S6^LvcNHV7h@=Z|c}JW! z`%E`@G!A$6ai8ygIACd=z-xvi;?RZFU51{B3tt1vfu^r94zi>q_W~8pY(+I!G6Tg!!bC_CXGF*1dsk&H%&T_+pF%mX@mK1Ke zdz#Mu94BASaUmGUMXBoZTXOxap}3TL+@GdR*g}b<4q6lppn)89;(*Uhoci=_TtDs9tioaDK;D;W88r&G zd`gG~PWJn+(%X;g`oRsRt}lJnx`*mCI&Iy(2V1Vjpjf}<29q5^uwFqi%MGyFAC6cQ zLF*V6--ub=04d>>B?pnxb<6gB@ioO9Xw13rEe2}AZ1`wd42KU)PP)8MCdjODvAC=R z@Wij#xWBhIKEtix@bJ+3@!hMfUrZK>BbABYfW0m zx(L}>UzcPEgAhI@V6-5tI(H=Vx+J57F)uS90kwPBLllk~B+ziOM46}zEm$5nU5xKx zmk+ML${!kC;<@E9cmR+6M>4x?r;aW1lLOO6NMx}0n8|%gJl*7j@;=JE+J>O;NEaet zOBP8?7NOXP&q{3=M-MEk?E9_0e7kePQ|m{QUy;52s-+F2hBMmxvRM#}gjoP+GFz2b zY9G@06a&=!vJnrZWg|Rk_F*P{bK9k0S~rVm?7$$<%cD#Q^F!mE;wu9m9}sPSw6wCm zrG+~cZ5p!d;7v@T^b|%HiukzT0l_(&_4V{Iriy;fPIE@1-Nh$7tgPV!2^~bUEqqcq z#!RlH$LDpvg@!PRu#|?7NxL_!bcQ7(ZK(RGyFGpGNqZ-CQmX;E$g`S!0)Q$QuQ^%F z@g`mzEop|U8F6bAWSnp&NF#S(`kTPem4YcTg$we^bGXtxF`bckZE-;L-$bq^v9LzD z=DyrO$db$`Bmql8!dx~=ET#gfsdpXX@}O1F5vxjY&Ug;u(0Uds zwdL?-@0s$xX4E=!7ZP`F`CG{cT+U^R5bRJ_Z}mRVYAUPiSTto^~Yy( z)T>e0k2Uetx{s2mcq{uzZOb)JaiCAP`UjKw5G!8*nr7EZoBpdbBE}CyqBnZsLQlu9 z$5UKAE=?RO-ZH+0b;H@!fI2)_2-D%g0+76q4+9aiikmPcxyGI7iC6Us5fZo zA>A=e&`KxGLcXbX7?c5h3%-R$SLzLMO;K??;0SIGZg78y#EMsbD#f~RNcqXNXPMwB z(ksYF0F!ymC4rX-$iTGcBEvKb?W2B+DVxi8;IY0Iwv0GzuvB;jQFVc}(0;m?p(=mE zctELyfAZz(fPHZYV_t)SW_B4#maHm-kI9wBbwiJVa6JzXDaRW8!!z8Y#1%CYPr{2J z0?(2Tq=a1QSD#*Ay`c%oE4QVVEG*Sj1=!*(ZNPf zjAK+6t2I}_2%Bygn^`mq(MOKyc(IMONkHdFV?E3%a#L z?wT;j@>)-_1I6$(s4o-CBW8-O464LhR}S;ZR`H_rZlBg^JRL@wiwT3ZErmvfo5+`L z3^;wtZd)~vM-q&(a-$-DX;8Rg%WY&ajFIn5497Qkuoa_58mRGAk+pEh#Mlc&LvDa> zbV=cj0+Zx?9%0T0FQ=p+YHJ~Kb3;pc=LoYuO+!Xao^Y6IfSdV{LD`ACt$uth!`jcr zuvOB(%{yns=CFvhV_10aHqDhLsV<^=?=ggs<3842IsY_?-oNE~HE7ReqazSJQPTwJ zAmLiEDnV4(Aom7|Oi`hW!Sv89ayk~r4!}AZIyTiI**;2DvU|o>nbq6UtwP&dN@Sg8 z*mnyxJ9^@KvM`c(tQr~nbD+Wb1SInwXQwuEr?*zt(OUQB_col1+f-kFr`ukar%QL2 zF0FLO48NkYWG_dFuhU1Y2d9NPvI`v}_@op77}Ue=+hw@D)Axj%qU~a0V%L+Y;k|KW z+Oi>bKyE>Gp!5OChzPfgPc+|y?|82RomHtDiUr)ZvO9psX!VM1I*PhMSX3xDQ6a1i zXQ?)>M?fvKe?b_k`I6r_W1l5ky_iVWbC#ngu0qYX52-GY5J~S+kdA|5-F*B=qP8KB zlW*a*khAI(1VQ}DcggMa9-zsg&td9kJ|6!1INGHeNJ_%!Nd?D$}V1@0vqbct z(LB>M>`%JAvB5qZcvc&bOO_S#u|SKWuyIa4K`(4IQdn~OAn|vE4Qsvw4{|MTl9%rw z`aS|FED3;PMi)@9V&u#DoX?KNZL6*~WyxMz#2t;poC{h=7VW}rkS-p2WI>A0< zILG ztd*V6Gqlg>XOz%1il&GLD*q>F;2W?-tx~B^1z!+7G_YSu{-acC&-vr*(kwm2 zdI#%foZAGTgMaHo`HIu0AVnUROEzU^9NiP*)8ZepVk%u*IizUP$9rtGBW+B73@NbA=y{}9P5rp4}bYZcP>?=a%c=WD^&Q4Kk z4#Ey3I4;@LU`!_u%2Ut1`@X6o$E9e{|3;2T;n;*baBzJ!7+)0EPKj4CT1hs<cB(Pbi)D3ePmGOdj*_}D^C~BCOhDqW{U55lGp>F3FQbj!1wfJ8p^Kd&gb*O+ z{<#(M|5b@dHma&bUq?^$7oRR7o^*I<)vs_NP)r$P_D)hEOpon)#uB80(GZn6RcCSd z+}EJG5F?GTVZWTi^v^~xG_RmsJa$+r2p$tAe zO%L&*^G%9%9Kt(vT0sKG;8vvp2aeNjHc;=lhKsV~!u=mKt9v2j89J;ZWa5h9ZsVy< zE|#Q)tpgwyv}~VBY|t{5(BMy;iqf=Gr4tiKEfW2QDImI`af^_B2s2UsOKU*l)~UE5 z2t^>jM!CiK80H=Sa}I>5XC46f!>rFT2Qsa2XTJ3GE3p{WHcub7uv;>mEE7LTC=2>cOiyF2%>4DTib1wS`i7B)~c_5Gk$73>97p)LWi14Tg_=Q6yzU?i1JF$2|w zVVs$FY-?%rwIq&3lS7o>9pJG(jJm*u_-r^PeX4n!N#W&|$^q1(!flhUL4v{JdWCKf zM8Nj)Xb0y9r#sYhJ7&4dKNU`$vU!bTrVc&c zcb;1pv7JRTqBg-%UYGgHXt0n6-o#Hyahxmv@4}{oNYV*TkWX<1?0AV=T}w@9`V=Thip>kEQc809sh!u2*hJFFJur8Y+BL`K~Z|tucXQVpjB^g+)%h|lr6$a^LDsZ zs9~R8?pIci@v=dE)qQq1GVsbEv5?wR$>@+WD=noIPsKhJA*h0!^do+%dJbM5sj{w*Lo^Hwh>;PfbbEPPNa$}E1imU9kCQ

?Cr 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%0Dv4v$_Ri3Ddr6(2h;L#Tr`H^?|FB%*es z57*fE@XPY~1~?nrL&{c6-R;c`5txS--y#DDJ)z=Py-ufxBjaz-WVgu&>W6DHGgZ85 zT=d?zxGyrW2<`x?Ol}?kMgo~dKxKV3yr!J9NVX;fL%VQk;1MJlb%%1CutO39-v;gb zy#dh|&*R-(MEl!C%$}|4@p`!!?Np+}@OT(96aHg=A8s@n&(YJ?JqA+DZ8 z2V2p4=_LAXr?fdA6<;2fi!2L1M~Ca>>P~@Xc63-PA0AYS zXnqr5OFN~lGFmC_7faPew2Eg@v5p^6WqW;ZkD8iUuL1iq;TIJS4o}KEFSe`E_Q4)P zrz_D$5tyxS>=mUcbgHnozOz3cZLaUHzaZ?&(E*^8XQ-H97aeaG=@GTJj{g^`J4mB~ zZWInE$huISM=#4&TlILSQk;+0%R3b!$X5Aae}0C@i5h?oAgEU=3KSwW6UdGTiV(qS z=(NEl+AOZ`0Tza*#9cIn7XvlHkIpwD0_W$OcM!|6G}4bfnH59Q4ZxW=B)zv&D3&V4 z%K6p~D1$X{h++#mdxnd4`IFMcmj$Hq0S$ukEhOvdGuOEqyejKIc1ytkmW4aU4U+$K@p^RA`9Vumk?e!CAG2oa<7ud1sdhg)xKWIC$uo5_D3MX| z`_aO7XbPgFaD`)rjgOQGB0o#VX^0tIIBc91I4af~93&hx<4V~k$g#*up$-Z?lb8l@ z2g7!Or5;le`QR!I8+GLSGn;kWP$7koX@A&W@59dt-|;w>F{~J;Rg76;Cn1tk)Tw+* zIWr@%CBW{7ydg7l9ZYYe2EvrnNIFx=sO0>X)Ny$)4h+PS<9xpbgbft{Ck3VZMz<85 zk1;bJUp}|aakyB>rK;QVTa*(o22m0Sg66YmnJyd6(+-J^e4yooJPZbPn&)#lWNxr$ zk0EvGmMBwz=a>p9dxF}$B*vQtdl%WN-55j_rhwhJoTn3`Z`$u$U5adl=%lMS92V(e zu4?q}i6|6^u8t8+%3opZ2HGfVjKFZSJ@C)KHQNK4HTm=N&7Jc3xdeuQE|7mrp4O&!0CrQ zFUC_owF_3NWp~1fhVRjhK!tD}am`Hb3N5_h!2`GQ4xIupab#Rk?wsb?>uTU8674{kNkuU2jN~{lTQ4z~4l7i$0GJWe<)5oy zCqN2)++e%%nG|y4;R-X2+zTKl)R=}!u9`yif z%~+ue={8>8=){lZ7Bl1e%8Z<^$hr6r^VZub%i!UVG&=QBx@Z+|*BjDO>9E(E)*Yzv z%P+rhiXkAHf1ckgZtawcb2AY>KSb@OtSf8L@{jpweeZC4J$f8%?!4Hk;_m|fTa2VE zg4j&qXRprsduRR9;==1cmgm3BVI!4+X|EUB&9!LMc!w0895&d2UCt!{LW{JU&u0HH zL`nj%BQymlTb5zkU&AC+9ByBWUTvxyqujb$K%Y&Y=GI>C$$ApL2v7%{0ADAkA59;I{8mW=(?+qXWX|m_|_?UGhpi9`lZETGIhL8r&~iE2T-c@zb8W zw$k20t4VpR4Iy4O%BQ`L<{VF(>U^5+8P_Cc2JsR^Mv8^#Z1@Q8*2tUnnYucsPYm^K zk16fTa|@0@evZzl{*MIPw(5qEApIDf$z-!rE~Q`$N&B9TlmS6xCsGvQ_4*9Q$>-kS z^Fi67Y0G;JE1s4k+~^thBI&T4Pho^K>RQ|tPQa#V7zlSJ2|kC@mOmh)Zj(G&axiUX z=J!0MBu16e!Fr`qgtrI|8K2#~29dID=F8m-i$4;H97+w5$jdqZpl}t4Nl!IKInsNV zM2q7>wCL%o>rM_*A@6XzE$Au6VX{=ZKY?WOmAz4lr~z&8@!%E;Fr+s0Ol`;F5tghz<;@bztRQVy1_X|NHyB4E$H6SS%sf^JFnhXlof|Dm2PlCW$2FPlVw*A zTG%EURFS#>dv4fcf~G)Mw&>RtGLTiY+0#$}PP=@zaPArTC~OU1DK~D`ggNh;Js1@K zecR|%dp<}9ZL0Qvy*C0Kc&opy)4zOmo8O_wzudpat#76BulH{g8)4r(xDUoOo5fzV zJ_k%XOBc!0Hn`8KU@o}dOcVn&3<|p~*at{goKgw%%-Hg-?!q(HBwE9K03sJ7+p_F? zhp{5*n?T`QN5gQ#y?N6bXv`yD#y}3k^K)#8RVwG_*h^h~rjIO3*kO~bSbPF3OsXhHUH|-xdm0PHanZAMGXcDe;x&{8k`7`s1S!zy zYJ=W;IOPY%0hWrzxj2$PE~lm&*SAJ4%9? z2x@RV1Zrxw2D_N0%T7i%w}~@{-i(ZK2hYCf;PAY71ezdmyM3@%#RHtUbPs5Ybj5q{ zf=aCV52(Zw?*WXJU!$j%)zrJB3)w6tSa*2P2S1_|`_l3=xnKEQy{war7LMCv`cv-k z_`_e~&-SV)2$3EuxL3r(XYpq*sNl1p;0r4FOHdNGzs%$yI%6Q|q0Ua{hYflJ3cDV8 zSQ8+YWi$36Q5g@h5PHu*HF^f2?H&@b@epc)_e=_+Gu}g@ISP`<7eqY)U_>#Ei1%0} zQSj7fZaaiQ5aM@~7V*jPm#pA(eP*jWDJy7s$kIoV1Q*%V;frrI4|MUB9S)_j=fxLB z^roU%;sl*Op{(@-2vQbyBOY~oKLPxets`Dx&tZ^tpNl>JHTQqlf>{A+PvLX z;~Q{$aCb_IRa16;#%@1gKN2xZtRoKrpGtbqStok?cC3P~7O? zW_=N=CdjH4#OQ!s(13z~huC4Hz@Y--rG@Xk&^vFf0>UKEx{)7ytV_Zr)mCY$p<2h%x+hg0}K$9-G)01Q{ z&|&>JzhhxDcjXvbQTk-7%9XwXoKXW8p7|hWaQ(W68qZeMQfM$_o|y{3pgk<%HYGC8 zq%Wodt%eyD4po^=sYS{V)k@;VO_`eGn@p<=omg(0jw4L$(jF$kdW`eHBM6v{ewy;y zff<4l6F^p;I8>C~z!tHR7;Lc-12Ln_XONDQov&LJ29cqm+2V1OPeIEWUYCrYSLSC7 zpZj1wnMIS6fP-7?SR}~f^NdoAb0;!anZ=SPgR5$okrJzTtYbT#0U%D&*K&oeC89^I zgygW~Q%T|qq%PcPmwiqq9UH@Z;y5-wBn!XVQfVVdo3HxJGD^}kkLff`(NjY)nXuy0 zi-k(ow;E!67n3KHCtG9SCX>?oyK3LcA(mrO807yQD>_YUO=JGttJfUf^woR}DvHIu zkDI*OUpvrjU-JndP9Zsl1-w_N^!B!kvjp$?qV$yU^fh(X_eq5`jseX)X+S{LBG&MH zC0NbkIAQidCQDXNo`;bz(pC$EM$t$?^jry{#)$EllX-q|2mRh?qZ(Bw>e4$Nssqb|FB zf|4GmFs;c$6iln{Sy&3HVC85&zBwXr7M|HWZMHw;((nfqkm8MNIv@ucwD2haDk~%T zkJF@&lbVwWj(B&IfmCU!i<4OicvUj5fV4QTOpLjCfir)+9wJ7|^;j~+``CK=v~bzl z+QgAZZ$LWJcWEAB^tT?bP^c@UoPKo8O0XCO$LdmS(5B8QQDxw7C4|^Gv>jZiuNKc2UOz{4B(wv{ar*h9 zHEMjm_*^c0Zgl$Bjn9qGNMUw){kh-y+@C|j&b3zvZhn5&d^Gptqq*mllAC_R6Fc{u za{+`c64-VJ$9&l-Et4ZBZIKVLT%docQToeG(igy^pg;4;5Se{iy(`)PuCmdo>Msf4 zJebOFoage79~K|YerZ!9_|H~BTQnO|T*?Ym-Nmf>ED(C^$1#3qTWH~luUvCKc#1F* zY!u{ke~_M~3weA%phJPeXOEE3{J9{BWp32Nd1*Q@Wx5Bn84?IYIGgNu{Or|gETG;Y zkSw_@CAr%?0OFYvFw3vGrx(&qO>T}Fn4d;nUIk zTLhGgn7+&@8Ej(ZjK?Zem)P+8HjKS3ruJ;?s$aQ6kHf&_&|o=E}njMmZNcSrkWrY(V)ec z@^@s^pFbPEe)I^J;ypqp)<=)rli4rcWU>6mttd9Y&T>h16VKOZ&jwQC`PvNTMNVTXm^`@B!{9wB6s6woI{01 zPrmRfw8qO2-9C<^Hb2FlEzhrh!P@jah!rdzXPYz;auk#$+|Fc#bg&&j1dL@KJ^93a zW8O;$VN{ozo-8I2(xK}nXrF+ku~*8;Uo)cAp7~CfA>^2=)qKZc1{`;&7@?$>jrs6W zI6(V?gz7wC9g#Y5Oeo#@Yof#gGWcQ`HAFwVgQx(`ib)JcmX=Z`nGvr#4?Qx*m;jf3 zJfAZ@-ME2F_jk5=MVvqD$4kYiV`eTfjfhr0>$?y5bUmLq)mfG7^m!S(3wCCdTn zgb0mTY!cfs%6ux)iEHwZh_LVkvrr@iPT_!($ki)K^^t~z!UU0T2m<=%7D+0Q`=rrD zcmo9^D(Q%x_RicG@qQnNn_$m^-fQ(+5R`=DnRp@)@`_?15h&S+E;w=_qGQI<$KGu; zL{c2wj|=p#+IJE$i4^iIw3#)$*pM2cCJ{CWJEKl^chQ{t%iE9;vqoWUr^GWtTJw;| zN_2@0F{X6FVz-Mo>zyU!{6W5+bsCC8#xg%EoiJu?ob>tUhrei(&+^cpADtod{g3oz zjoySeAIwkb;sBqwEf7|awgQ!!@-obOy&jLjqKUJZ0;+ljXaX&gc~h}2W=wHIvX-@ z-jSLKc18HFD?+M*=ipNw2$))QMu_Bp#nUR#A#OEsj7kg(kUL?NJP)?va~U1)1#r-u z<4km@ETnJbeq>$SJj!68Jkf^n``7D7&p+F5m}*4FIco^|y&Q*0T)&;|4IHh=PtTMY zB1irRCLWF~o_#+1{2YHtqRJBLb&TDuy}^q?@3x=ev z;pbPsKKmt_2jzaGM+yC$lCGQr40ifz@;FD(zHbo_>6qAC*rA^y14| z#SxzeD!WZG(jozbdc$?V0zUZ0;hGe|jj%*P z40=L(OOS4UOA?|usih6CCDe$uWXxa+8f2uPgwIEEXR8aEM6D-MU;~K_p3>Q3EC-Hh z&_EjV$yzrP9>$??b3YzaL9a9Dx%otSqKv^4m=K;DWGpbAD9^FB_m~o9+~7fPbcQXR z5Uw{1&oW|J3U<>Bb*#6?Rphy&+LZBfT5T#JC|tb^bx^%6-?nmQEms&aZ?&Qct3P4R z6OS4XERVEVpg$rHE2m_0wO82P4ox^sKVx+ax|pbCKdQdvb)2B9q9V*fyb}1y%>^h% z&#|6qtN)R5%nCDUewjbU8T(XA-8Jf^hM1E7CHwWCXV2LhP`yj=VbhJA#@@6rv{w%c zK{9;oXuxjc6}kckME}n-zV2ok(`6=CVEYHh`y%EoW85LJfC8HH<-`9xw88VZ&RO`Ky>eBASNZ!mJfPr; ziNQSxd&krX@kfuHeKCtYhq`q|t2T7g=(hW}xZSR$uPSU$Td$HxZytQ`J#{i{_@7Am zM4K5Klvo8cPF*~_wn-AxM4i1xrr$%yST~KkJe{GoBe?*D6u_z2*P!i#pC{cGQ%Q+2 zi?cG>2-E82x9Tk&x;}axrW=YaFg||8yq7JD&e&lS7mdIy4|RRKFcRl=ZYh|dx~miT z7L&7uW(Cg{;+_N)tRWNt6hKK%+^jiA6PkuKWDal6`9_~iIhy9d)9EIF$4zKJIobIj zk|H~WZHXm_y}q7zzlJFdbN??fB#nLC+MjYs7JUE?l)$D;Sup<(uL-Gqa}Nm^lObO# zmoiv@)v*|Yq+Tp7^8Z+Fk%UjEUInW<a1;&pS|w(XTLuG{0sj3^;bmwz^#dmxX@|nsKVnZ zTX1GFr!Bsgz+f3=G{ZDjJ2gfrGn?<0voqP-Vq-Ils$v6`SxO~|w=tRkY`B7T9ZDMj zS!xkejfuQG!E*vnRUY_j(o&zqGoAs(pMe$S8-4+#}8YDy(>wT#~fy+Kx=#+w#K^D8V=@hR(~-;zmh0FwE{ z)+=TNd-Qa(RU@INF`8!;7EN@s?InK`{+fF%S|>{fPMVJOhi%npHUHP1DGPPNfvqGHvNK$ zka&jRki@em63(fEl^CT&_=26h(}!&hk&=@3^_{grq`1T#Oo%tkt(op<>>;v~@S6+o zjRv~Oi#}fHw~kkagCt>b%PYi$IlvsarW>O6sl&!lwh-QD^OMa<_Sbzjf8A&E*L^mB z-DhLhG>T~$_8Yhx$p)ks8XIt_b?Ce&`Ew74gR{Nf8~P8)%z`NP%Ez0lUiTvs8|o#L zXNQB{B^LIx!|T3&rL_Pb%^9V@vDz6K4M~j4ncxp^9O8=Wf2KUAo6ZrC)5aZ7I5gqT zSA-CN?m-_HQVlzY6wj>v?%?S3ToGl*_S$b1wlzY9A5QR|82c#hTiD(1VOr$L> z)*7@R-D3YXzjfwxtbiyQh*%Y9dw+3W;=u6)IK!VrY_%;Q>xyjq4uLkj7;X zAq1SQejCEb~N_ib2Vb+B#B+I=_u^VPuCOZ4A&Vw0U?>b4rG$P z-n()1b;T4boy#;QT)4(e?lJEFe%yc8emv?7A76r%@o!_{f`!WB+A zD?vpmV;^<}hH2$2jDG7zVcZS}k2}4~M&~h-_YPVP)&Mhh0psk!p|Y{|5*YRRqd2tN z0no!g3u*W#+MZZia2$_=PnE^Aj!soTnVjiip^#zh!ecIDqsKu(`h<9Zq|3izlhBkO zD@#nFDcM{bBzA(CH7#yfDMT1U(tx*V3Byb^$jf{t+=cJWbDFzvI=u^5bTRk%N5mD5 zkthbJBA6j~j9`U$5xklOZIoAwxqpJ)ofVnA+N4&-LaEK_l{vtAaq%&(%)z9h8NeLE4wUCH7Jz%M67VTOwg)gR_j-@rWJ9_g%r#vtMWxJ zn8z>^l=yW%7BF!&?Ryc&J}^Upi>^FHpwhT%$({3DXjXdxhA_(=ctF1{JfpXW?e+4( zo%C*P7F9}jOTYxmwrCyPyt>5ZB2>Y zNF!OZb#eP9pW|zG!5)Qm9x#~lSSdTSIOW}NEs}3$5w46OGYJJ@G7UH%K)Wm7*?(mB z5GJt}dTPK;GZE651JjIngO5OwcTAfMG|Hr`2nulX1jrkw^PSD;8M2cu{j|isllUA6 z0H7-_cLliGaP~|H5uwFPPnK9CNo#9$ z*-X6Y^z(a1RFeB9n)w_7J;v>)2gen|-sc;&oxM$w&y&HrAa&?$oZt?*S1^}!xAahg z|6^Mj@U|j611lB&MZmvo6wwIVTYYkW{GMB6r>q{pkScSFx%{i8g`ZzPLI5&6HOx6& zjGb2Yx(km|XywLVY4UmGo|(f#jzb1_#E@VvQZ_LiV<|^8qjte7z@&PZpM+Ji=7|`z@;deY#q!i_1$3%ePRaMz^bUnCWM# zH*uc$jG&^M?L*uvf?*rN+?m3#Ok2B?)5#D}Rtb%e;1y$*Se82tsL)sDsOFV9lhHv*K1p)O6|H>t#5s5E|tp1wWHta zovm_tslHlySFhBIb=2K`UtTKS)ob<5qnFKE{l(JLR=vMdx%s(KU%6YZZk@inc(MPf zcC&n1U%eil-1N6Y#&v( z>g8Ig+g!S~3GY z=wH`Ay}K*il%5{FD>sgd*!`@X9$aj_`&2{S{kP>Om3n#O^qtnNEtkqmm$AAhtM8Uu zo&L+_<_2JOmXAAV`?&P9bUgg+xKrM`tSxVzE;To6t6ST(rA~W)sa!7C`Wv-Qr+xCN zRJqvdkILQp{zd)tr;|^+$E`ZPQ1tyXL0jplN*dsN%n_?rI;@4l|y__m7RA%$DN#)ZqZ57l~k zt5y5CSO(s$o6%1gllRS)=G*Ga>&@1?t>2Drng{iFyBo)#dt-U`MYX=W+FWXOk85D7 z`qpl_xO-6j&<7p+gOioz9@A&Le2j7b3FF?NajkdjrP{l#)$)txX?g3kTmx?&9hdi; zpUOu^tL0H^8}B=Ke{9~5ibpTYwSqT}H5tdB%EzarqqiG|$5uh(T7BvC(@DK~aQR~A zQ@z{YE!Un7Pgb6mPnT;S>o@&(<(0b?;@?Jb8P~F3{wDmng}R+~P~=eNqr&yC9Q^~%Z8(~a8ks8GJSUTVETJIkk|ch#+(-Piq*Izcfr%UyI`W)V(IgGj1DHPt7S1~`S z?B3Dw&$~zOFprCv18+;ci_PY5$JLFKlcm$!#>>uDrMpqBEtT&s-fkRT)^+W~zrRt~p)630`oWblKT>TYX#Ks}@I{ zlWuPnIDTk+I{B@(wA?AzuMaEB>r0Je$cC5KPixiYVQJ;G(5zjTPLIo%F^+o6{GSmq$<0 zhwbLO>)Od`=df9OGPvmUf%EQYfA#cb>&4ThR;{z!?3_ZjFBdQ`w;P?Ue`9=0N5>=P z@6%#^wN@*Y@NTv6u8s-UKdsdJyWqigX=|%nuI(0%>RXsg&CU^IGdPcA^SknP6Ecm~ zjnns#MKzhj*Hy^+B7X1TclQ!9v|Ky+?WnW$7SH~DRC`)DT^T`^j{41bs%EPz&*-TwC8(&$O;_~#zpeXQKn?;0!D zyVc{n;>8Nqmf}BF8!N?62bIy`N%gwF-#vYawd`r5Q+sk$@2}LCK&Nhf=cHQRf}D6- z{&e}<#n$D=qvNgaN$qs6{I2xzpkBT`-YVZ<-af&c-a6@?tX7s!%cUFi`^Dw*9jzdJbUzu$jxcMLiK=DUwr&-eFM?)vqW z&ZkOe_x;7n$zcDuRN4Pj-)z1(`T$u}I9c5&lsaXsrFW&1rJs*3HZNCB!CTFxe)qHn zc%7{-Wa6jOo8`CY*XDlZ=ez0(=2h+K-QK5-TC3Y1)ZaB%4vMs@mo`sVw(7qv*H2EX z<&*02=}Kdz^!D_4_qU6;yYEgvE&W_*lRmOE0v(Dw#nM)-Q{FAV>uerjO%PpW={M+| zv%||lyH6SnuAj^m530GDnbu&?<3ohVmP1A?PH3QDyL;6`u@nRE0(+D{Ju&y$=8(&r zOt1Hi!Flucrte!1P+ylo9~uV3X_H@IYNz1f5_Vwj^y7Ae3c+!msd&PVN= z*7=AdY-WI;k21o>79T$EU-!?t4;RfP#@Zu5BGrs6dyV`+s5$K_pbr#;;Pw`<7t1uD zPHGwC3Bze-TnoqB{h4R6NfDf6i8P{c+XkE`s!}!M}#Bca&?Zg|k(Q&DO)5 zUm4rb?;_rv1EmL=Iwsv ze{kmN7VgC1HRwV;?tyB2O6@JYhV+Dxzv^`mO-H?hqYj&#=+tm+W~NH{87^?C6ZeLD zhl)bP=3+m3oWeOaqrhnGOx)lpN0Nv@!AM`VML^?C2s8*e)U|=2rE1 zy9Qs4<>0odm$+uC zQi%@AGduf-dpkuu+bI?HYMVQy7tsdll@6-W-p>9GZla2+2N5->pmvI=w-xOd%Y|(~ zUfK&uH$afLTzuo939rmhX<7+-*SuFOLt0JWwcV<$7cT` zT18V4469N#s%)?C?NL)R>os6sCj6qp!Qn}H=f!q4+CJFZgo8EOC<3$fjlH5Yg-+qx zuATk)Xmfpk{RLrHjt&5&JVV6Fr$PkTDj)36&k#9L1JD5k^-4v7!nghsf$WH&2>r&5UKU`qSzO-(EV{-pHhhcb zwkNmYuN(X1Sdvf1C1A2U;9me1>=!`hnU4xb8!(JeH_W{5B~q$sM4in$$UbS@QDy}r z2V%*gZEQl*Ci`CNeXFy!hA}L^D3%H*ifI0kPa`R!gMM8c{zaf-%3YeD;`z&S)+a~?@TUv(DI+)yU*sAQlIBf4t>&@au zEt}FdA7+~9kf@%lJC%@42)jqkVRV*N06%VjhUbJB{MvOBYoUHR#v1J%GmamunN5qwzDs2B2xn^XAHya=pL>XM4^W8A^g`JKl3Z7&m9HL<5R<8er3WKH6fkOjwnN&9 zFRe4>?&OKi4CT+b*kr@oup9Sc+t>{IOR-|5(kul20A?)n3EI=@FwOMLr2Air)dVd* zB>A)xKa1l3ClxERYy_la> z;qHORh5KuK#JLxa&gP*N(}DFWU9cJefp^*{yk@m-dvtC+XXo_30AIND*}@9D4acqk zmh}FHJQK>}PE?>7!a|hmXy>Nifhb34mfY7O<}Z9{uvvGY<p2Um!XNe{w@i&s@A z4>4;Ir!@%dhwGztj6AJgNGTPpVr+zWOgMWIIGow?cH!9{Quj+J3G+D&;sB={aXIit z?}9fJY$a4qv}w~nChNgYF zRKK<&D5{i@k>Ps~K|6z6FbWt;8G~>DpfuC1=6g)~^=@-toEgb0bMrG8CoblBKZu}0 zf|Qp?*OefL)e+cf>ZtJt(fJEPAQcW}Q0|@>qFQy&m*F3=g{MKj1kbqEf^V8H*w`JqhRuDUvrZ!g)(lqy%JU zZmZX$;}UQjhEtS;azVsKxz+E$$|mW2pB7nF$^D^oJNg5|bq&}4mq?~v^v6}Nw|LPQ ze2E&gaV0Z45Sc(xOQ{%b3|Ne&h(q=;L@CWd=0zKg0k!hII#a zgCY}eTG+X1nh-u77IXyXov|x~16j1&u;06UCt-WD*k8V((_A`yiDGWiqqX^LlZw+f zM>BVgCKJbHWC%cmGpODB1Dp{g7oLfrhr}0F>tR)fjGw_)Gj} zR-9GFtnZ!>aiftd3>u$4n)Q=+s8QE57RQZJO5N`{9aUD@Oy$3|K4SPbTM&Gx}b79hMETpe!ds0EP>R zlL$O{JlltkHT?S)HHtS2F`La9D)aZ8 z&zPQ{bLa{M2*r!Jx-=ddJE6Myf1?c>8-8}!>wH9bLFepj|3XB~*_kIj9HLCzp@ft_ z?rW`u8?8h#zyW1KcCqN6*|W^k0F?lxOi){Nb;n>D^scz%7(fW8;A6?t0W+mD0dCUS zooQgnrbQO5Ac%&&PHP%KSVyR+VASd~L1-{-ZPe}z$5uzt$GAvruy9L79}kfmgRx-{ zyNJTr!{Ra#!dnzXT8wSH>;{o?9LJx6NeL+E{>gVlGB3*x*X{V)av z@h1e|CAvWGxsU{8Sv7EX=WA>y!$>U9? zpMZ_n&~tD3euMK&SbSBVH61ej8Mk(mej3mRtjxy)=V zM+!j<+1oDeH~hZnq6uWG<*OAD3bV(94CK5JRR44&9WQ)f&jfC7*Z0j~K%`*9yZi&g zIL64#eS#iyE}cH-L&69)>NR0RNPfVq*X*Gqn>9pEhBiYzv%@NkWArkF_;k+6r*=;0 zSDv>dEw+Pxj{h=c1&el_H zI_+m zRq^2AHg#itZ8Sv)0j5eId;{yUtk5A?cxERD8N0;TS^R@Ac#2kSZE@u5uP(EWn}t*J z1D~570u?*@0r0VGz_GX5{V!gAg%}KC1}eDIgwm^7`>}@5Bcjr!;#wA?#fX%+ogwGD z9R%bZWJH|kDqL^ucQwu>~OC=l}|WEy~pADLz=yy1+RI8QiZjW8TVTc_huV#D?d$Tl4TZ)nOiI5TQUcV zy;N0aTQos^TWaO!jFP^QwDKgQP}~F(+)~Y(Wkx8?Y*}X5{3bL(s1lhwhXFA`Y~R}W zhm_h4N;$hgb?)V5DTvEvp)tC#u{`Qq42+id#y0_$X{g-0K(${6KHghy3`7={Je`T) zZAfy^M2@jNSfc*ii@)KPWINKd!JSF-0NkSubq8caj&bPpfYm!N4sO8H_knGyj-iM@ z6Q&0(zJqM6<5OpPxW<*BkW**d6wpvF^ep%gY4Ui!g((4&X`bO|@PUW(d`jqn-$5V- zvS2c(e&B`>FbQEX8PL>T32DK}3(qexxs^-R6;hlO3AnzDx({UMvj{;3qU|0)<1UO4 zZd?MV$S)*(qMW#aTZ6%n9-3iW!?B2IZ7r!X@V2cF+FJ?k4cF8KeZI`|5xe=wBf;7lD_*MP zTV2fr^o-ZpOsTZLs?RxMgT^yBHQIiUohevRS$Yy#<3TCY1*1yEir{Q&=b~}>F0D|q z!4|Ek;4Iy4_S*^o#R@r$VBYSCRilR%^=zy~nfon9nfN;VHq1*HK-WE-iov-(oN7Zh z9=cb}>-P=L7GtlxK-9z0yEJqg{ma`!CZgkf%dKE}dDoJyF0#-}4lLPj75WP~{DeGl z8~$9~HT>tC&lb>*UkV7{z_I;y9;P(RFcMFAPsrFsK3FrH3^&|ULie`3VNU@P4(2pq zGVlpN(FI&q)cD=v!6M7qlO|?QpT-fdxGE+~*dO2SX5y(gkF0OC>;gz^whO%sPZ=(e zVKTe!<}K~hDi$=?treYsVT%#6=&AXn;EZb-P3kCeiXaahJ;44lrE+JMHrPMVl7u#U z3$&cqjeyK{`e}D&#B+#LQPPyzunep5C2K+N!ZHD+vOvuTZR-7P!mT`%Fggbar-Zvv z2*Edc@?6t|{60s^TqCm^bzpu=6}_ipih^h+P6Nz)hf4-krIC!LLpsF4BTjG%tkURx zuSTb7Bz+`2=1iSZJfD@!#G2EysHW^kKZu#LnbaEh_hZs0X+#T{Gyz)a6c)=M4bOlq zPBgML&V$IftXT&5o>j`1U}mkP63vmtOgRA!x0~{~DGt}r{4wKQD3Nu{E&p&G=d-&D za-+^+rM&ROTu4vZDk72{9P85Hd+Q}5_ppT|jEzxmu=tQU$Tdzaae1)Kt#_8yrHf;a%)z;LeAmCj1pI$P6hjIA{lh zI3(tzQ3S0hZT(2*n37hFn4kfw=JWRVV1lI#CYY8hab3dq<;pCCbQ#iF9M_OZyEAhX zlx#I_5Py$Q<@c>~jhMl;2y~f2d~T*UWhA~`t7&r5#|nIfxdjQKIt%2xJ`_BNhkp10 z|Bv*-6C8ELCHVK~#eP-cR4Kb3-E9#euX_^`9nHR6#H|qi%@v$5PPIe7VWZn1cOD_0 zFRafkMo49cgWb3=7OCrSYyo-lX$8YI7nmr6#wBG9^l{A%Bf7vR)*Jz2jUi9DK`Bk- z;s{IP;{Qk7n>8zne{G`oe2TjFyf32&9nlxeB7%U7-gGdDGN?>4eEPH8L*~w`%*y(A z_lc7cyJ~MlW%#j%XFcm#f5C^tvA(?o<2L?^UwV3Q*e{vLm$+X2ar*DgK;V$G?0>vI z>(cj+4w`{3`G0@x^56G1hrudU1}zUA`myo9J~p6jH2&A?OVE!2jA)m^XdswKhQiPc zw7SM0FeIDhy0Bt9zb%`^U>}AB}5k6s>Tl-B0S}nHZcUfuK7#dW*Ezxl-Y9SK=?aV3qEK zC=M6!ImmW%cSiyd{+QTZV%d0{2r7?nVV@AvB#GSNeV@+ZaS$dZt=xja0LsFh-nZ+H zRHhyB_04Y0K2w2*2?bmxkJ$Pka%)|bCcWTBUF0L!Hp4dfJO8##my=0YxZUeR5uOVj zuH4DGU5@e?ik@X@(!|3E0QMUClN0&rpek!(9~c+i=0-7p+h;G0=`ki)4CIP=-R?%k z3Pl9o4B!2lAMoYP^0!kN^IW>>9Ht1zMmef6DOwWGSuV#>Dld-Q>vfI0!?m`=2oZ^Re10@8@w_U>Ssu47)|q7<1Pb(eRO4K5Coup!Yybz~kgODQBsrVEFlG!~}ZK5)MU zT1QEHMM=eD$Xt~wMzoTYANY}q)tg?UB{L5Jdp)~HbGM_aK2B1Fc5G#97w}tma}Spx zKV5sTj}4EKAO4k2a_w+<&O6>Pkpw?F66Mm$X3UJezvshwol?U@OiW%z-OeRwYq@n~ zy01oiEnQt-_p^we+ES_oJwIuztTbiepM*9*^2I^-Ld(Z|B_8ukUb64uS@ytlP!-<@=MRgu~-#NE@ zp11Ri2qW7fg85!qdlHit=Xgiag*`5u!RKXjDX$7UVy`Tbf=KCL=)H*6a;cl)@HD?vLfbAex+)KG+2UyZa_AR+F?Oxr$N z=XS9+C3Rng&+9eZY-rx{o;O8!V$_mY`$SgUYMo0YW1K6)^=8}VZ@QhPzU7H$*3%EO zf)prYZ030#VlmM?m-AD(vHQzTJ?+}OIt%q?u1zkMydJc{ALsRBuasrR)5~L;rf}G3 z^DgUToY2PSWs6*Ds+r_)s#5-T4c&I-&voENsi-x=dRN(GAdmzevSDU7l(+colVZto ztMl}_a9h@KQLCksGuuBi0STz!XxT-a$GWuD-Sb1`pYl=Mk@>6&7t%jf!4;K?opwAu zDDHp$&v$zU^Gg11&3<7JK~vc#eqj~gjN~6p<4}NUY_z|bMv;QS3OV*m)98p2ti87t zCkc}tz&MB}64r9(64fof^4|=KDqy)=sFSpC_Pgo3I|7)#FP87iYx=j>kPn+WZZCK_3wbkr->p}^Kk`R-v!jE@cv*Mh zqHC{H_;v(i zmFgX1fi=*}R-_TBHTO>{Jx{llf^F0>Fk-en%Nz0#P~k4zl@}4mWHVcl{VJiZoqNA* zj!mo`qf^#sneJZ{CcE$3=Y4q~9XV3_C7 zKB&PC&CBs&SJWd~npKORvqp#>`7>Qk0n5&f&pAQP@w3~~Chau*s9(4{Eg*Al3N^(D z+$eEebl`8Iz}L>Z%iUVcyQSlFxC!AXz8s;AIWMcnb1rx$FpmqDzSiQ_q9jDlEw^5& zTaQSRZO1o!zdrT5drz|C>2jq;Y0O6Du8>uY)mQRN z^0l%rI0O0F@P69eI+UHuG~FvIvNs1_8zgJrP)fJMP=Ac`#3HYYxN8~uIx=xB#g5xO z5cb5#+hfcRhg#&6o!mF2T5jrxj=>nBZckmP%Yk6=$>3YwGaib$5*@ASdr#Qohk9?Q z%8J&)TR@(+1A^i6)okS0ItS;qZ;Jpkd57qEy!R{e%8Fdhmx-NleQ_wLeFP(t%A3r` zo++p6!QSTU3w>D)sIgXd$_8PTRXUyp-3X_YJ3qxZzCCRPU)zPe5}x!U@3!cM?gv%3 zt=U__fQv3DxTWHf8obwIanYu7_x7-}&<*171%`V2Q&HCw%}XYEFT&M??^qggfrQC3 zeV0ppS6S-RpxZT!uHj4RnPqvVIQ#sc?XH)#*X|XD3a@gAE-O#mk)v9wF?7dQAIs>x85~YszR0d zIr8yKaw~I-@a9yh>c}@P2>kK{C&j0MeUHiABi)uSm$22BkI>tJ0VLw<=UeE#7zIb_ zP6z{Z+_m9U(dYF;zFxrp)9Z(Py@3Cx*AH&M_Y3%cdi{{E7x4Gj@85Yw7gXGV}MzfcX1+cl5fcL9NCYjss|?xldqe_@^#uM%%EkY-A-5&!H!7g zcu+vDRvjxy_df4g{G#fF!0E@7T}0ElVsN?FImY) zz7~X)S8i5~J+JQe<2)kLuwRWi40p;-#JWwDex(|ZZoZG$bn?PmP0L2IJv1q!sJ=j- zcfq)fWVa)h1|_5Cp0=Xss!z^t9XtvITd%JM>&vGTby!z=nes5?%Z4F6Owz3>V|SSR z0R}6qVMf%uXLSA^yMMY61XS|rW*H{5lvrAv0y5>iJ>&Q1 z$vqpyZZUi37BE!6u^qm;KI69LcEPkhBLzWkgoSMUi=K%J|LhY1S7&wL$LGEYoV~s2 z(lO1dh#8+)xo3|lal0n0185TGU$1E1qttNGQ&)`y1P!UNm@B2@Db`5uRCo!)V?)+` zC3j@QUg>dbZLiKMyE8}SvbzsvU)Q$f+TJ{@>GeaVq}DIsT3%ZWnFj3=$jA6mS=@q( z)0kwT&fho2C64dJra>cO9{cvmm5Foh#Hm}9-kFw*v!0*gIHxR`8-!`$-W{^op1^_v zCQRkNb3r>#9vZwItOxCskYpUzdj_tUWc{-bk#0~`>iYk_Wj*+ftiBF4Ab1q>*YSl& z0T}a+>IlEWIDYLMK2n9>Lm!g%@($Ct_+C0F5KfA}SR4>W^`hkJy!zAbGu+q>oehBGgo{-iM*B-c+>G66mc!mk=_4IlV zKp(oJl|S!jRLRYLoa(9w1N#vJKw||S7Afo;1@>AM@>v%xO8dlH9BI}IYeJ009Sui* z2V5Mm`moUuA=7YnVD%LY;*e2#&oVS=?ByR$Uz9mr{LG6i5`im30>bgbDeN&AKZY}J z->xd)RS9-Z1S$`~PbIZi@2?!p{HuC6%0-2175eI+IZ}n_g8qJICOy#<{Q(0#*5FO^ zuXhP`yp?sK@+bm=f(LZZp^_jPbNg_)lH0N{#ZyTIplpok=z7PeQc47eN-xM2=t17n#q+uJp?<-C-s@yiy zr1+5TWMwy>co^b0xKzVZcYyfEk5$mC52aQph*G!r6Ljg`y=TU7#l^iM9-nZf5IIk7y^D4Vx{}V$4F(8~ z*4ls>!1coDq3Z8yixho4;kJ~e0(ismcT64OF?>T9KhvGp6Y#I{omaZ!Wk(*f74F$z zcY}2;^mBdLaiu>5015&Qiu?qGzOq`L6Nk9KqgX$rP902i7NthTCNN!4-0&Av)5%E* zsg-}aI<&=immSmA$<3S*2c@R^Ou|~7?k*E?`Q;F5;V7k4jrD6CBOqoSj9Y7MVGxd5IjaxX_R69v<_}%BI`kc zNwaexTxOFp?6Zlh%5FuNKPo=Gbv&Rujk-TgKm0WfY zQCOdod?y$kk;O5VtFjlHPgH{3o{rL?I+eP|kv{R@7*8eZ;<^9?fKVekS-y^ zthKd>2efdS>(*Q2!tF|BS1;cyBZUtKZLXt}vAP5q0m+%y6LUT+wRR1kG4QKfdb7@tH-E(7e9D-V0 z^-U|Lhw6_F10GxRt|FcoDcRECyhM&4u}&(zqvop4 zg)jIBOsW1}AF(m>9XbMwn@h^inKbfBrC&7<&Jtu%CJt+bwIfND?*_4P=A^oC2bLuq zcAq9AMO&7X%vmXx0&&)`F;??OVc zB(z&JV|CC&QgYFr^z*4Gmt!}|*rr|ML7u7rcaP|FN-jFTMlNwKqrqx*vXw$)IH5N$ zN0=Nd;V>37yIj$`&|=c#M&2>-c*~TrCjy9)*X%58)W>cO!JEC0&-fVoU4(=iyj)*a zX$%U8q7sQ6ZU?mXxhmMl@LMLXFk7we*F!oh%ebRXPhh zc8l1;2*XIbw0HJLn^mcOFRt=*oTCekZ;Hi34;jA&gT0gXO}NyLe*(i{gyp+Q+~3Fl zdQ(b#i=jaStNVkM{0OK2WGn%zg9m&RK8+>M{n}7gKN(5~4CN1@Gy>z9%TLQ;x$3la zxcD>Tl_j}6eF7*jMAa4e!zr*yFsiM7l*a9QJr4}$g+D2_i+mVL5oSX#$;?f!;+^`A zaDPDN90alYs5{*9nw|O%ng6t{;NOn=D}?d4!~Rc?8qE0b5Br~v8iI_!RTPn5mlOrR z>aEMs7q8Lk!t>*jO$RZNX44p*V7p>Z2g!Qef~Twa#83%hA8U3+s;k?B)GxUL&}SKKG8 zCFrtl%u@|dQm`AYh@wxpN*!19YG>%Aa!{V4u+o$C-e6)iFVr#z3ftzT9?L~=+MyxJ zRkNoL+YM`cRusXQjCsP0$Pbou=TE&UxP41*i5{l=9hKD>u{+e}H#*n7LINm1{#bha zT6u)K38hC>d8*WX!`OC;!6--~Ac}>%K44FHoC<{QP|VrwjG#Iz@hdzJ9+@ zkFOl(=i1MUF7O^D3saAr`0l(|WI9+|x~g?dFE88rg(98tS#C~?jkg%hk`FeGH+BMp z-d#I=V&U4%is32Y?&U(I@j(xEn0Z02kY6+qv^ZtCP~?u$u7I?Q8&nh8{*E$Yxq78oB!JK4th51o0Y^D~e!}w{EGi88c<( zB?0QEeJQdq>=~zQ%-lfU@^324mi4TfXBm{z}uk^gA(jW@`I{*%pr z{>L_dS8(O0&EL9TY`)}Csp8Esgq!N$?Eib<{K3hn-WMFa?a^o6HP?z+R zj}LWnIwnbMSRvPLr8P$JR46ou`i?}$Ff6rR??Qb?%Ll zGUlf@f))6iBVRfKU);IhelS2L%_X7jNmrO}yr(zXQw4GVkFea=r-Zi(sRsVmTha=2 zh4keskk44`>jLy-+xjeEz3MLjdgbp=g6=54dtM>*Lf&JqKRAcI5L2pKjeS^9`O4=X zT56rH2@%@sJS{VSvbO4Ss*qwMhUsSLEPvXDs$q8~#2DEb_&=dDQJnvX*$7q7X11+? z+|phhF3~Q9&oKSko(#?J*=gkr>k+lbHA0W0;M!JSw3tun+p~QOZaa7q9U7jaT@)?4bOQJ;lGz4!&_-AUjBZu*X*F?*L%e-|XtUS$!*T zz6zW83p@w>dorANZsE_{bj5mm#(;15 zy9ubGQ+4UY+m9m)#6#Yr`|f%bk*~jNSr87{{}Ec)-TO)CJX?XR|U6!-D!ZT0Y&~jN{yfkSpRpnO#vk+1u_K@ zNHV|w;6}bblyHP9#}72!R|JFnV+dnoqw=0mLkMGk^%OrxEpH^Z*J(=dumoRM^f!{h zx5WDo#ve+>vfEO~&bSxeC34apBeZ=zC>wxh{3EUM7pgjzH*fTrGhj1=Cws&_5y+hJ zgDm3r5;m_95N3UD&iB2MOtQ;#qMS8QGmb2Xvb`nCl z)A9ysW8UPsGQB%jy4zByI>`2slJR}ur9#f{nNdaOc4d+9ElQf|< zlRlHD^tn463SHMWdS7zkzq9_<0Lr}QD{$|>u-*S9O7sGY{^$#~Z#10fPg%q5|3hD( zkLo-84!+>=gDZR{s8-hKX}`wE6Id>lFk2b_ygpJKx^SHpZ-88 zzoZdBd`mc!kjzJsb4EgHf#kVOhJ@tfr| z$|uId6=uUzk8^miZf$X%o;qdNuSDAEc4KRgm;M)`2Mb%U(LH6dM`65NCKNIXU4jZibR) z5*$l_LbaUY^myv6r*w=k<9Q?%cU4&F#x{oe&ZD)!c7q>;^mm`&LJ9bV^?c=(Tk9(9 zuUCB8;i^FU+$u09SGAZqd@TR$6Ci8&q-qL$`3~m4e8LWVf|B$9@WHg)K9q7ieaUK( zSMSCj)7pRO6A(yc3tjkDQ;&Y|34wQk!ab18yz)CB`+L9e&V%CX7Bu;&E8$%#`#?vQ z^SpF-=dNdsLs+pn6+|Ooofk54zlea7-f*`4oYHC_+fK6TmSU@kU8gN@GCRZYb~kKC2S^Gm z7jqqKx$N}tfbSwH%4yDw^P{`3^4d_FK~;|;-7u{thfRb%*qSxg)4f09{y7#%lNKhP zjUNuXWQZLAm+r>I`~0?k;@V}?X`Gp#l6~cIqy5Bz-8GUjNwc?Il(M^GN!aje@j|$; z>qE**oeFho8%S4~$Rk&|wYN9L+0MY?Ke$w;e0?<1oT7AK;9hn zLdOujdMomN+X!_G47QDV%>9)0dya00qx=p>0T~DXPR98ll_EM+h>g!+Z{dNClMHa0 z-&jpRgLzsw?*I`8$TlBj9H0mRW$5K_uE3Rm%kpBYdIJ&??vMP}>l;xCm^>VzekUq@ zyD=}q_@`IfeSiJU_aZ5{GXTDz2!48mgbe>@2UYsUeZ{iZviX;lWrW*DUSAr*syhJ@ zl2ysItslHZ-gL%Va-keKkR6Oq;tN`$G;<*(=~VAaEK^!3a=O?C=cso24b{VLK{$3G z0l{6Vs-11(ov&%os<#KmwR4tdEICy30}vj~3ok)zvo{=hFEUQ?W1W$ZePc+8X7a0p9(Wf=7 zh_{6nimP3qsBKI$NI_4>svH_OBui{bP-K^eU6-O}o{*yXviotx??WxpiHoW<==S zHw>(U=d=Ayp8@ilMuWH8zqL7OCvw-Edy&4lZwvdi+V!g8#kZ9YJuZ$4Y%>l=^u?O} z;^%$=`(7UG+e14!xt=Mf#+g_QN~hG3jekPsq8*$neXLzdd^IvfC38;q7CJ~zAA1$Y zKUy76ERRVX&jan}(y3mN47zj2p!oo5-AC)^TKB8ejeOL)9b6PfeAIKT7uVtHYKxqk zHy(4EZ~g4_$BAGCe}&tTavXKR%;u-+-){liA8>8a`sWQ-k2(^fp*hbXUwVAU%8W}r z3~b~NnJzvoYGdb-)yHZ3Qp;_sFj3u!^GGl?QFL)YzjH zR~XN!UU$Rc0TzVYXC7D7z}MKU4#LLXT7JZq*eV{G?KWb%?VZgJ*`78k-8rOowgXnU z8RahWboQ;n>327`r*+gVW+qX?m=G65OS0_l>!y7kh37r-pXKT^iNN*Ib>16R|6Voz zA+Z3)?&AWTJ-1CWdZozAY;(h_L2q^EZ$|USeUYDb{)y2FG1y0QtC8uCXmFo_cRXmG z;NI3{Bp;4uCOoc{rru8LjfE^Q;M`u__^xqG(v>3KrQ_pjt;M)^?B?Ue7~A%=4V(RS zSx~3P%RNdbX|Xk(^Rc&}m!Pd{@?NsWt)q|>y9TWm=EY3cv$Y5y&jnoK^Fi{Yt2zi3 z-G(0EG9_KD&D2a}v&%F$Ut&21`+s^?Q!BfXb}OQjKp=JFn!~+npb#IrEl42u(Rs%lWgz2%LJCAFq^`m}ZblOVm&14un{XhZP#(4AgzO!>zmuJkAKf_ya}A5rf&pc~AK`}Os&=0yee^n3fNH3Hg> zLGAU6p?fhGKQ?|Cx<4Mt*Dv}sbpQHDe#Ni(O0Rh(qn|DNPgBA<(-zMM9Qw-r^Quxf z&%FC86P8A)=XZ5o%CykswuA5OOW&Th!VWLR4w&ELRpt=y z+2j+6(bCH7JSJQ42I^L!NOD=yv5&9?x3=CJH*T$-Hb-jIle?y^rnA8*BP}iScu~{6 ze1nO(B^o2!)Y>ydNIuho@HTz6+cuP`4r>rMh?M&=BeqAgx%6o8bXN9Jy?pX(!UaGH z?#GHK@>vr7fpfD3;_FitbkEpo1WljZ=mAxWQ03g6&cA;E(7~arCF0~S`yzka`4{>C zm%mZ^zZ*af&2WwGQ^}k*NZ0PNcGn%C^`7#bwZNNe{7w^H?rs9^-e;3Qs_re`?s=5S z9WBJ%r&2z2pyx_Y)W}oYAoDy}rF8hbAg7&t6_!#hvA@!) zndOSmyovn)*W2K*lT6bhcE&)XF28V#LB+}5eYA12M-Gc!rFK85HrB~pGgc2DNVM$? zf&ODC(WX2ZpfLh0mX#D?++wHqV1K>(Y=u)D6ueKnAtL|+zi#wWKqfro78l$fV07+i zMO0JlnhR)&F#E%L(@9(hUF`I}oP-hrX)m~X+rd2a&_%^;4Vyk2{$qQrq7d^M8QD?` zuC}Xoxtj}hRUhpQ;!y2M$A4~_Wb)+J1EvW^Ue5Tp5`(+2&8=?Sm_Zu{Py};vFMt%KV=e}wpZ>{_J zt92h3y;|sbkx)zncP@6=#Wl|S^V-LKbj({BE0b7C#y>qKm^Qpv1zNs-oOF#k%?qzq8SuF&5<5N~^QoZwDiL!z7opdJX?1H8 zRI=k(#UVF%>;<94sl(huV>Qcia6bv=;!W#iWSVl2wEDO%@X(Ba93qa-^eBbr`9cCA ztGXS|*REQ`yS-M3 zXR_H5+laKf+vTP-)_N;T`x73CsB=lhWRoJyzH6%snq|xGh}y)ax1vi2G_OY*dC?Xf z>(eH&t$ej+)t%`0E*bI%cYO|etCCd3@?}U69a%RbW8)#sZD*7O0hG-lc_u52!Kc*Q zJ|4m;_K9iB7lD88b!I*56!R2pW?kY)!*%wl{oOOsZqESHSLstL~ zMfTg1Y9~k(-K@IEnbiR8sF^2G6u+*NYdJ7SV8TF%>hQ`Hx7sQSp6s$ZT}%vLcg!^P zQ}d+HfjSnKTHc6$ej$)1ik|7bBEvl{*>(G@P7SUguE@T#sW%PHC+a2YwR)#|(<)+f=5Lv6}R>^8Ln&bUf>HI))1hOi_l%1K7F8M@L8^hR3sLD7oH zQi&sUGCR;IpVAxhHc8mSAhvBQmi=j_pc}{Ka>~CfTNa)+vh1U`F{o_Puzaoo<>>~Z6wi_w$b^>k#2%<4s%+Qr;8 zIBPn4-kGRLOD^(YR(Oy-V`5sQ6q>Au7?=5z8@Ep=u$A-kcrXv34|hBd&pO^sX6`@e zlQwV6KDfE)S8uLOXg?HsK^_9i|O*d&REE<@pj|939K-=QqoG9YXPSl zxfnSmkhV3;iQ_Roc3u}v`!1ux!KHoDmty63yoqNxJ==ub~4Z7;3Y=WQF(UFAQul0bYD zTPbI=7eU0QTnfqo0|>npR<(kClaoiOQmd&ty?WXk)swhqrBX|W*I86xxffqCRo~fA z!Eu$=Lol!H zckm$Axx5f3yT5SU4LLQ-m`L2tdT70~2BjIRvUkSyh+Bgj#@egh?+6h)e+5e`TBfoe)03FhU=JarfRS z@z3II1cL{cRbvsz3Kh07nnn=m4DIzV`= z#QbzM7b4?81_!+_G(C2LXJ}}?@pnD96VnLv`uyX0wScTix!jLzpYRD*p4YeY9qsCs zm*q|6ZD%yWWoaut=}s=F&PYxLYK#^=5=GPV%wlXU@Y2J?+Yt%!dkE!hltr^1>zS6C zJRGy_$xUXEICKi=W5ur+wqw=PYA~Hf$IlN^wDVTZ*JoqcGFt17I~|30O&gzYS4bT{ z1gTYQc01jvuDG}J(#!!p0MCIH?I1CBKA~)n_b5lVy=ghq!Hzc;v`Xw!T^q1x%xgRI zEZq|A(Ev|Oz1%S2e!|6>!S831WeT>RC})U52X|?AWj=uxd!EQ8^fl(8J~F7Q5%#|2 ziC4t2teA&wnvYBH$dPbmr#e*vH%e)UK87|651Mz9c2DTVMJA*|guV^6VCs`}-_`XA zS66|(rw_P$ogPB|U~C_wGCw2FR}*>EOpT8vbGVF96FGGTnnC+|(rNlROjT{c6jt*# z9j+Z=jQlFUJgBrZDpDu-sGBzG&D!m}gK#xmA0mEPNu78rCp(~?rCvjvYu;~MqF=3H zrah_~M5+be_8ghEMpFFdDR5D@3jHk|?UR?xXVJ5Ua)TJisEK#p8aR^hYn%NI*h^ zYq>;QI-a+}v}$wJ$Eq0CPwLpK>+zqeE8ew>{>orjAHsh&HbR zJqSirOLzngrQ3Te$eWPETOY|w0OM6#c5}o6ZKRkm9v?~=(^ll7&y-ohPY;kS%}=iJ zjC~wR-A46eFCo-q3YE}B75eOSu=H>Gdv6;dtLG-8kf2=o~yVI8EN=m98P<9v1v9s-i1XWN=V`9XPJZ%FE#@5vGEuN!NdCEm+Sd45~Mwhmk@atWVImw&lI264MZM-)YG_tOvlA?Tl*X}w*G!GR)OKNr3 zIz`DUhoLx!Ut#@oVKh^Ap*%HqoKj&Gw9Ke`?U7|}cs(h1lAnytre7IjpQ1%wU1d$@ zl%+$I?ZiLN(LN0_I@}S`8m0Qrr1V{;^heP1Gbw!&qy4Gb8u^J%<{ebsH0KdbL_J&F zc*Rp=P8nyh|AkEHXCWs*W&RvY2_o#vmNNXKjY4av<~k$D3D$G3U)|UQRAPrV9@p2V zK?c&j^1&Dj#}32nE{P~$o^|5=&V>D3(&x$){}#}#zw@rASjZW#ZWH@ehTZ7s(dXjot;%f38&j(Ta+%?C1O~`*{hU zF3r9@$*7)1r8 zsO~=Pt5V$|44ZlRi1Wt{-$ZD^h~)ZuBhJ$1csff$XbKWKKIG)S+*j1b4TyN4svvp{ zhj>$#5dPaVKhtPa`!uS7Kp}b+fyV4z-z)ZU?k^0EV_P5#zXcpd_ENSiZ>ek)YY?xpahzHy}^@2sc~r zQ&mELDaHOyOZ2UVjC_?y{tc})M%yC zqc*pPjd;h#$_CPeI2BF~{aZPrw5MDaQebyw`g6aVYaKcp#npNiY(X|o0eT2)i!Rf3 zC;+NuxSF^jP1dBG3~z*@ain#(fxb^CgoZK%3zJ)xdAbYmKNO@>r5GkW(5;7I&QE1s zvfjflwPGul6DH2<>42V98wK5!DVQaX7PpUyahnax_4gyv$kk0T1|~6xxPun_T&H)I zbZNvQ&@?~v)RWcG3fI(>2dYa(d%Zdxe+j$fPp0P%9NGI{pz!`(4B|DE;1_h6cPi(f z%#ozOH3WYP>V5~tY`z9?5CLtW@$efH1$bmf#0Hg|7qu|C@27OdyC?KINuOE=s!4KYj%)U^mUrcH!&wdfI&vg*82ZE#wJ-lk} z_%f)OT`D9Y;S>uA0`_+;G=3bnF4TiSrC^4Bok-{N_hw9xaTas@ zp1!`ct#suj$q%OaD`E0<_LE%u3@{!!?TRl ze2miZ*sc_Qby#zInt}SKs{&mGT1P+{PfmoraXjK~$jn4sUlc^Z&1S~Na@)Sag?pK#b)WTAm>WK$-Xm#spY9W#*Jq4kpW#ifE>9ly+QIBxja~th z4V214oLvgzF4s{`HF_6h;>m6gb;fRUx=0w4aQD}mo7?@GIdBkZ+}72OIg;mgYa7b? zirY+3Y3X)d^2HVjAM+|_k~&*xZI_&(l0w#opIhpVFbQLG96?P@^fvcB^Jy>-{0L;p z=TEf6J1=R7y3jsjoja;w9ve!l&MY@R_Ar6rz4hxSxt(7}i`jd3@fqQ_)|i0CEa)@l zh8oU4sWKPuj|*FbP#}v5?D={!epE8`zAYgnnb$>9kE79W*j)tPvvR@GEl2NX_O<<` z)AzPeKXeX(4=Mk+9=-3681fSbyt-xljus5b42NoAXVq9h}=#nu63iL1}aXF?!(w_Vuh zR(LYUb*e@%_5p7fW4|DFk3FY>Z$?JPxOrl$9*@SHz6p;T=p_xUD4i;(nQR>3Gt|xei*d@Fo4R+Ok;w8S;?f>Q_&OZsT{mDxJmHtxw z-|!MIUiC+dGI$Bxs6rC@82%4D#XAY$Q@>y5C!NwXY%8`2l?j&NrfdBP^lHsor4%+q z3N4+j>T)*qq$cMK8fm)mJf-u|4rbp(*qgf~|zus8dYl{U8^=%Bfx-A|>92~0uHoze9P(#Fq}+F8NIkP~c=J|E!yO5Gn@ zvx}kghZbal9AMsnGIzIIB_4v>7q04*VHl-n!(A=okZ7*Guv)eMFL7_ups2QWYxnsT zyKe(f0c}!BAxK^Is00KBq!NGqof?^uk-2m4Jm-DycfUrSoyUwY(2%v}nsbb2ut@W~ z)$1kL-h*DDiu&?+%++Srw(BwOW+#c*c{s2s#-bW^EO69U4_ebiRHAkVa+(OfTbJwB zOk6bHxCp53BZ4=cWKf>a6K;}(_OLsQAu#LIEt_MfZyC$Ez}mVIBj~)N7wl73{{Y|b z18SaEJL(h3uWO}Usz*A{Zz>Ilh-%^5+l`h3Z1-R76i6Pty;`X_o1`k{^NFO1hRY6` z_xr^?So80N{`mc)^l>hHV`Pz6?`_K37=l30V@J>q!6I*I}u6zHS2!-0ObOJpo zwNPJ?t-NhIfwBkGz=*CP`Zn<%fjp_5-Cj-^sMb-IJk~Jl*D+$~w9pc%vElA=Sqg_~ zOI$Pppqduu>emYr5(Kl#Ye;`_rA`GEsbOT#s<@+)-^{mhI#XwLCG1Gl_77aP@;Cf) z=Q9C%=b{x=kt3?QlIf4jA{}0S2giU{Cd@tUT_yc?M19 zPsY;@zdKAKM;wXE^?4jdcD;!!uxr%&3#rdY%a)apSi+t?I}wG}{>iNATj&hH;R5og zeegudDY&|PX3-ek2r-6}V<;D3>1UpiaOPrY7z3?^ec-^MGdBz+K6}*qcec>CE#s}d z2lwzNKH^V%#-AO-AoGPyWBk*mf&TxtY1H45!?0;29~%3&E$ZjG=chXSgD?R?FKC#m8c93 z0&}KhlC^kTE)at_aCTZ;o8T}9qNjhPm%W6{M;zeTV^|zDfoo}+$FfO~s zZ)qqt5q2ynWMfzEB)HIR$4L6rJoxy&B)$=a)J0c!OQS}s%XXil(^DPnL$jl#2?QLn zoh~MJqth|bmpzLQz`jEl1l=ba3v2UCKhLYaorhB!!YXjG*i}1I((zoRi;yo@IHCb` z43&d>f;RH0E--N!HVmEa%atHLFCCD%kjq$KqJh`1J*dv5o)l=)!%r_PGlj2KQtusc z)L!@Z{Tg_}5Me8iJFK$r?sh90{Y3Nh07i!=Y26RKg_P5+Vq%)AoI2^p!6v8jY;NOm zA^=28M`x@aGTxl9$86wAD!cy49?1C{1bHih8CX1gZxJKh8$)3W8D8$Gw5g-?xbe)W z>7OvfU(y(2Nq!n|{t-oye>-C^;yh;;de?AWev*RqpN<%xcgeSp62Sf50P^2#9Poq+ zy)G{1ziu2~pAfi@pG5P&KjANVY%jyshhK}6U@SqEu{Dj7VS&rc+G)d#jCFPpY{M8q z1R&noru0}y2b4FQz$n+5J+7q*Gax4@-?oYfhMQi|8pekkTLA|2Otn_W1d*4V?(Jrc zv=(&!pYtJFnc?$*8M`o?#61e3VG5Y;oz@GgLfG+Z(D+DM8|mxH=LA^U~!2cnq${=#QRru?^&qA@mZltSL3`A+@( zwF&;+2=UMCegT6vICBK!;74pBf4YZ8`MYTc$NaiUu(r*IDwDkXEH6^C;rJl*xeC?G z2K=RU^tr~vFfn;kA^u=YMKYToRrXW;TYr7x|Ktg>59IzEPWm$FzNU&#P>a8j`!8at zYA2tMsejuf0BiYk#38UP_FmwbEga#QpBDLVYdm0H9&a?>FYEi?LIG4z{2xEsZ5+Zc z?&mYZ6aQyV@DH2BZ&^i zq9T0+@Byt58B=^rUU7indf^0PT5-V>PxI;N$lzRe$4QK09=ULt*4+KnUe{(GN75a4 zA6+m`{*Yeq-8v09R!3uJBL53y?6GKV*! z@|l*Yv-lZnGpT@ajYv)>*_!l%2f&yyer^&H>%3h++ZoY~KvL!aV%i*Nt@Av5&fa5m z7X0h4TtntbGX(@JzH0d7`3m-euFr-Z6S!;A_g$k+;Wd1|@*|M&qo4E-BLOJt%;t69 zr4kMF2a|urVQOz8$xBW1x(NEP@@N_yh$8hOXMn#y2dnU_$(evV6Ana=j(G@j4LFGc zs-F6l-vfY+22QsB`k8zmQQnsRgD`@3eGb534*xBZjfTgb3m$jj60F@hg@1o31AyU| zL)udPesT{&D12syA9@J@9R@FxfwD*#!-KGZ86N5`d4M|suE@xt8wQWpZ`(RNHiadF zCu^sd4nH-X-?vyI$^{Z^Owb~@Psn?EKf(K_0^TLY!vdb@`OCct9cyNKT}cM_q?CX8 z<>kDG02$?bZ|-gB|M6RbQ`z-xa(>0OeGtH<;TUHdTZt2oqh$&C9#-;oUHYFaOL=aP z$WXK3t#~)&e~k(K$2Mg-7|w8}uxqQ_4yje0Z&GmC*9`)u{c7W-)5*W{UA^6J>k{D0 zY)~A;=CFbUIhs1Hu+(UH3f-~Bd5Vvxy>;GE?B4Ef8bv>GEC%T3Z5(Ul*juPuriQXs z$f@cRU2qe_#Hy*0z%adm#f>0^>*aiQa5E7LU$oT>H2{(WW*|0q!J-6)RnZ5>`}%?8 z(pGjMeBuCzdOs2UY?#eV<2*k(Z14zMu7*mM{lk%AkW&*!Lm z*Y0*ESy4&QrF1q9rTXw>x4WU0C&juM>(w8Uf_|+Xeyb$@)7%PxF|Za9pGglaV^qIW z^!?3tV^rAVYtk{o|8%4Nh~W7t(zyO|Gk;0jgfaRn(HJyDugFeF*g0{)IrxY)hOPeN zL3r$40>GK==W%-V&)fZLw}&>$w=><3sXxH4X4V1I6JLUHmB^ zjv!`B7b)mcMVT5s|@D@ivobH68S z)Cgqfc-%JkuOmRtk($eNOB62BID>5_bIWQvUv^={jvi!C?6c^V!=hgW60_SCZ9aG7 zZRN|Qy7y00M478+Y9@3!s3%}HBQ>;NjOOg)@yRf#wC7O~M29iIk}4GQeZ1;VCLVMW zCUgDfu*u2{nWP=J!+*&QWrKVH0Ke;VS|*&U_DrKsmYOv}|uZCe!bFtM7c?Pdx88gZ;O2GJfo%pl4?WuF%mykKyJ9G8wu1#|CjE@p?YmGG`2ngBELMP8pL3fEL2Ca;v!j zRWC*O*q(tGD&O^u+OmP88JooQ*HtNO_Ym5*nsSJpO|OW1VK(h0-Kw}`c*+(H0&0ow z;&c!R#q)G<@yH$?B@<}R&d=wK*-pLEF-{MABN^<%zJ{YWc11a>NEBoxbCyd=;2L&@ z8WST1TeXhX85c+e0Uh;R>ll#hFZgLy(A(G?-J;2#hkbC#u+a=qj|^3mp!k0CynBe$ zJd@(sm(WYu5^6w@h9&9hi6n8Ci~}~5b+?BE*KJL)j<=fja21bqookwBT<*uhZ4BMC z9muZH3moy>=(36cZ+9*y?p~RVxNM>k!?0s;4K8_9%+D>UVy~J+j@1+c|*Zi>v_0CGuVu@JV&^qVYWp}fr&PS!OcboyvQ>fif#uX z3y`xjQ0vVFeeM&mo;QaKw0v^-+=y3hsn;kac$wqeMS>vRQ+YuYND66bLFY(g)Kr;GLF8Xk%^3hLs^|COwHkFt7gfZF)rS=NKai-e# zYB9Mq?`Gp;BsP?30`4ItTsi>Y!rebM_MVO6d78X}6Y5A-E@@Gn*VlVRfuO*wYc4%j zc|5^3$4NKo0zANxxl{aJ>CO6dE5RhZ(0zKeui;Em*CC3ilQuwcaZ?popZZC-AF_z+ z4>3vXZ|EhX)VW1k0<<%ZI#H-_mLayqJ{MU$oI~NT4OPH9pSG4Ple+b^y+wl zcu;~GYnjc7twR~E<<+&<5@#^Y+B-!_FNsa?C!TsjIH`RuiR%g|2hZ}f!t-bc<(X_R zdMr|H;`A!8B7~!~Q;9KMvpm2By0qj5kLGCmp%OSD51MNsfEmeJ% zDK9S*GLksKDLmCLPVKJSB=@2^abW@g>il?V*tKOh@}eRKFwB4;v9Bx`65LNPA7;TA zaj%~q-Z9dQLPpE+K#~rQr^tL?0an-EseMFv}eAOK)6{p5SlGIORQV4?OawFyw@cyxzF$3jc2FRK z`UU8OFmn!E9FX@3o@ndc8GzKypAY!o`V_GJ-T=_xn~?bYFTIJchmWrZ3mEG_O9F#4 zzz0GPewqO;&=%-$`SII7e*d>OUJnwX0}p;6D8@h#hrQ;x&=eU{7TSK_`a{UOK?FSp z>BoflmllKePJ4&IijPV0T7!ns-+`ttj0f`BgLs)+pd2us6h#3~S#1N{*T(GvKUY0` zoXMrxyr~C}@BG8pBCjuQoNHx1!RhwJDgsKwpSr#O((L_IBO=how|>{SH9&_1Mku{6MIaa*@yB8Abq-|lIWEA{;kl8%%&6;#Aj>l#2A*~TT1{2Xd z8)6WJwsMDZ=wK74`}(@?8Xp2N2V%?KL9nm@2S*$S>3LxOI05A&n%Y2$k?IZ{yu9UT~0yj3S!f zQwtpOdn>Nu8^a=i^X^rEQdK*#TD&UK6F?P~@<4S%U?;I*B>bJMc2$gVox&%oz705Znxy+Z1Tv)%Je z1t>D+G9&ac6>*=kSN5L{IY@i_-3rKxvJK= zurYTA^|USZdiIsAhliCs;?L9{@^uT2+AG%e~pk%9StuK>_5$I zK2*cs|MyR&7U#Wt(4Ps+kfr)N_$y=la!)G`#{<|W_)y9gs*X6A%h?#XWxoU>t5!10 zAJA_Ya}ajuX*eXmznZ=;weXO7#1Fjad+{^@gaVWK4>XlJpI$L>oB?D?gZOZE{qor5 z|Mivq7p^T(ZxAT924K$v2;8Kj#(tz6u@MdRL8Y4ejO>jEYbmp1}ENACI=(i|r;oAD)NHA-%!uVw=QtD3g`Ufv;e~Mit@o*1d95K(a9U z*znsdTKwt?(ZfE~K`ni_LgGTPmkaIw7-T%k+!aO7Lc9m9PPGmo8+M;*ovsHmd>=xH z^mcy?$U(-a8f4K8dDvNQz1XZe7qbxTD{>_s3NM5xBE#KCU`Og)2hM`~Cfio@9?ZPZ zf>-DpcTN#b4y#)_!$M&lH)}ByLeml=X7BVM`e8-+aTkYWcX9)b*LTV=uQZ76^uh8u zb@z3Qqpq&hqz_AL8mevhHfHQnP4r zf8PfGiH!P>E$4`5+wM43HV*ub*~0}&%lQ=mrRq(NV5!!j)3~~>*XUz*2M-o!5h&~H z#ti7IPFhSn*`#yaV_mSjtg-`%i_uy?vHbb&Tp+GV*=zUd;@Z1agk0IiFzniTXqyn` z*;6$i#=fK!2=J_o>oWJ?NqJ_s$Wje=S=|U`URe%*RW|m)_jk8eBOA)|Jiq3SGSU;f z)#)k+59c}rIq_(1r918-8H}_v|IluFBs;Rn9e4J9S)cE*mH@_M z&%lt{B1FhLqpSdYpRCE=J||`4tOn6<2Gcs%sw!l=0Yp;^a0x>fK17dRN*K&3?MVT=NgM39Gqf_vkOSj{5$u^&b|$KQ4M8dW2fxb9Bu> zpv~WZ7HhgeKzdQ&F-_NWmv#K84d$|5q57|r&AL#o z8|p=%W7+YpL8_mh1ZmI8tvPHHoo0Y|b8*F|1gT1fn6q9on9dUn>eJ~?-3-OW;s_`i z0CD1WIx?ID_OZR-I#D())g)UHR2y(m&0U7{4+CcABz!0?+@&kV-7Q$+GUMhO5UT;x zG{}0FI_8}@(0Sr!B62&QR*g(w^q{G>X#>t&$d{RUnvS634(hXifHIrkrKT)+7_5%% zJju2ZALOZjYm5G)q=t!}%^8?=lIvo9x(=sXQwB37Yq!ll7!d4Y0fnfnpIz^bQ9qqI z|9IDEec)%1QF2qXT}=NOf>C#T9v-)De*~M9Cp^sK4kSxWI#C)&$}4ok@e-26Y1)lxm+w6>!#r+5H$>C&5vGyPpaTz{g8p_LW10GkPwE{x@j}=A$Vd_1J6?t!6e>TL(yjQpIkjy{9G3%^N=m)+NLWzPVL(6?}LG%@+&??WDo$b zIf9_^bu|9SiF})1-sJl4Qh8f|tFcSmg_6=Tul15_jKO-1`9(mIT%9+#^z>rqKVgXm zC*i9?d{>8G9z#yH1jhfLU;E1=_CI;)FICasUi<&_rN6@D|MuEHRH5o0U;3}*C&C%9 zW`7gYeM|_ylTuko<5IUeWi{vBj(~H^4LhvQ*t8FJtL&_-X03FsaI{M}q@HuhuO(!@ z55T@qJkfr1$>8kxLqeW1><+}CD@g#=lQjF95}U{PWK#c{zzJ0A_DqMyRp*+C;U3j+ zC*Rk*SV)nf1K!mNlp^b~EcKq=pxa3G6BY0`P&j~lX6D7yf#OF7CX)bMcoc5w`ZMe+)44i4y>bYvWv6$KVlq03>n~?S&xjqvFDYpK?o}F(j}_K{bX0?oE1->#6~=76 z@&WzN%HYoHQ%|V4d{aFOdW1{k6!G`+Gmono$$>EY^U@5;&tLGV-zQr?(Nh&+@fSe+ z$e;;#F;Uxl0#dj55$j(;@o$7UI0KBm3W}vuL~k0-gZ=bVTJpAirT$ycvcP|_x2WIR zyMUh?Tvrnirvi2cw6Knl+M8U>4ajX^I;kxnVtjmz$sEAD(ajfq4|v(Xh*@Umvwwy# zvwHaYg&;}#d&%?-P;EXceRH!9*AT@03fA~H??f*6jj9Mr*(WN3qH(t1UdfJv>K;5h zIE-h$T?W5VdlK))`D6@x8ti@Xg^u;3Zp8zj7k7sieA0bYmn;Z37BzSJCif6OOBjMt zT*7g%emk@;He(U&aVI49r%O%>d~Q9a@pgK28W+ek*avtPP7!6&162f7MEbB34I|7R z%o?em)A%}5J?QOOxDq(^)VJ7rAB$~#fpob|DvnBX-3}W+_D;~K+$m$?Oj7qC_p*PZ z#0Wy^@}%fww7MZBdv`s7bw!k>L?NTjra=Vd7=Z`KQaZKd^c5&N@UyfGBK~mF&g(MA zz&a-+nNOYl5bQ9W&4&N1{+HI^M(S_`@n-}LwJ&B4)PEL@Fln4 z5PFx9qIbkI3<=!DC9D3a{BN z0vTuq_HFXwAsoG$J>e41K*YYaqv?XH4Qmb1YhL8#tkmnyQ6)6FaP7RfF7dcYhTwz^ z2w=jKaxtS#-_qJTQC(JWAwsiJ;Fss$8!oB2P}y@ZBr4R*Sy??qDL_{MvM$?sTkdJ% zw5=5V2Imw5z+@!!s2u}_d4SIca?4AG2`nX^L1#l!!5c!KckoM?;iZ63&&1Bm3uy?S zyM|rm#~`@>D)9gO&97_VZxR!H&XVcNXJ&b2Zhu?zKTT|}eB>=*Nn=-bPKS2ug` z*1Sd+IV141{bXPl>OV$5!9hIc4M*GbO6BIyt&0JDx&Sng9|kxEMpQq37))rstr!ca zYDM)o?;nU|y!m(HG!St>`32i)y^{bf3=NI5j8c`ZMwkJE^oLGJ?vB4{cexF)TP#On z1#RYv7M5xSGg%j1mr0nm7%l4&=)xR7IRYdjIzp(}G;zprw~*|9ho+n1aJCyumPqgN zoCWrZS~Z)eu>rH4CNJ^yqKl?3?)Zz3&))61OU2uz-)U+|+k3+q(OE+r{Y>_&2kVo! zG)^uMYqY0kU%K`NpZM%^pH(DACywA!x0|js!aBILAgg7bBSfr5M6lVO;9zt2(+3Lj zXAXQTTMBslRciY=mT|_emisH^>>rP!CMSz7E#bbhHW)Xo(qQU?#l9I?q^+As7@zt` zlxGN3Cg~POV9y$dgBM95mv;jjOk9a4&*caRr+@8?f7$N7$Ig7)^~(ICLH>_ajnAF# z&qlb%d#n2rqx`p(^c9cB?0;z%{lDGne&Liprr2?5H9mfM% zH__B*^3igK2j7of{`|6j-N2Fm%?|#{2A%_E>jTmOy)A&j{`<>bZ z0?6uqtzB%HD1a8il+k;f#Wirw1WDi7yK6B#PC!!6G94I|RWsxe$$+WlO0pv%XLW1C zI%IBHdl|t8{d@~kFml5EbDB{vy>6a|=y(;RhBc1ohqZ#cvGY?3?F|{LlWxTICj>)K z*#_oRJYjp{%Js?Su{*tZOU=f+=4;5Hd`y72P>+VOLF4IU0XDgHGrHY$>7_eB4Ehlq z1v(V8eR%0XM?pr8f2s4myC35r&Dt6vIoYeQNbXoq35|G+s6D~#xyL}F!;xQG@rpuZH8J4)7Yy!gZ6=x zr0Yia_w%t1(8<_PSJS9!7{PMQR$`o2yTX}g{sWz1zxEQKrQ|bA>0!H*7>=XSkBwu; zpI*UZoRzB`Jr^bMWvPC9l|T1|uPZg^&%f<5ug&51+G&gr)ALVxJSKPJqH`~AXBah} zd=fLdmBY2?u7w!pPuCp+8!s&69|_Pr7$E{FgbFL(8gR8ATOci}?1yoJHw=i`gh=@H z&$rk2UF+v7gI)QxZ7Cn`g9VXMvlQ^>FPk(JcEo$5Hok0u-(M;MLdN*xv<9LVj?YbbY~FGczVQc0CpE;Li2U941H{mJhqkY8@Tm zz@g+~_-^&c8ToW2f_@N9dB*C6J8lt)5w$Z+y)D?EZEcfei80?+<7pH;9N!kn!)q!% zKH7|-nUDNDJsF6A;P5f&w}B!(6c}IEtThNGpY_PFPEk5&1h0kea3Z3sQ*sJPQ?&dr zO+z}`Tamu|!zs@r!-jQ zkSh51j{pF4@-I}4&z_?AnRe0Jg8xqY+$L9HNW>5L1*mC=cb~%MtMAMY=q1LUAQ!Pu z=PwWe3<%^l6|2|(`A#!=PYj}RH9zm8NY$ssj10y*0vF$;X{d$aZp4yWqUTwp#FYkNX5c$9H^1i=1m>vD^ zU*7juhrC|iuf4&4X$=N4L+&A+i`?uWOboJsPV~_3sPNRW^N2_$o|xLM@cr#2)rstU zH<%u7vBuVSi1yuo%*UZaknK^x|H*g6w#!st@Gc(DxyD z(gp_^3Ilg+nqVD(EKrr?VeL@{_mFrMpy&2lh;}C%#D>#Nw8tI5vax8vu=7cl0&_X- z)&h?_53Ahju1?QyA_5w9*-hGZyr}B3VV<)|YMW(K^pm1Kr%<=E<7(5ait>3&_KD(> zkLvok-S_m4XQi$Ol~EFgx*5rqqG{~1?5}ysUpIDHY@Ky)>Fp?8iWI<_-q?~KN1SR?Hj70-dwOlur;75Nt6U_^%r-+LFODo4(|I*32node{fcy zyha)}JIFuuVwV>#Dg)D7>@&|Ff{YIal?P)61N?(8)D%yDy>bV(L6wCgAxy4*i`|Cp z6JlgfhRQ&fnX-x}!CslTNn5R69|>7dZ}?WO?3Ny9tcn%lo*<}FY{RGj5Mf|6#i_J? zaBB{7lCl1}?rN{HjvzhU6Cvoc;}d~-XXor|tM&|sRZF|~XPi7R3?Jmp@)$sVvt__2 z(mr$6-k^Y|yPf3Hvod0tDpBTp?0!3)6Jk=sn@!v)Alh&<3+hpyJ>Bi}7)j<{yZYC3 zo9u4L?ZL*Plxw{N+ARC9R;<_;5Bhi?z(X^|QA6ue{DdPkM9}EgQj*sPaau)( zf!;^qZS2_cvbC2dq|itpp4;z?Q=Af*wuh>c9HOhXyI8Q!8phU$_iSJorxnH9x(z1x z2Rq-)UEYA`GB!9l{`X_hq4|r8(i8+j-=^cg&t&@JZtzYR8b5b~f9mO7emUs8K+vCv zKUmBI3K0+(JXoZww=C!&Jd=ff zP0Zhn!0(8HzuTcdqnm;SrsZJT3YL#?x(eXupB|foZ}Tsppga8c)%-id?-kv25Z?CH zuU7(ek3F8SpJCDumHnU?f)%|n*Sj1s4?-2fKJ{(LpT9=!aDe$kXfg!a{(S#{>zC$U zXA|xH3ovqsc!HZrBU60U`Un16fMLP+vGPFPsT5t=Q}}pdp;tcL%^~-18AXKynk?z!0rt}d_IeE0~I|W+PpoRp9Jvq;5 zA;{}hr{R}PvBW;0+8~d{%r@diTH9UV>uWElhQ5pIb%{2YoZS=PM8e!{HXTocU-F$~ zAJg)5$9I+<(Gp{nYhQ8e6Kx7t=))nwfx#Zm0h*#x3_TPb8GqK!w4pC`lG4E$;TaaRP+|QN_|u?+vSv!G-LysNyTh~{ajwb zx88tRDWiGN@ey+1t2!W6JZ(9hC>6#k7ZDGTWB>5YMi*Tn;koc5siMM-YPd>P%9L|TO?5#$26l+~JhhUv&2pP)sJ z)(Pwq7z&P}GJI^o!I$!P6o>>Ow{az~0PoGn1b$utv?eIIjH6`OCyKu_4A*vE#tx8| z+BO9G%6QVDj1WUWBEEihw((WnQBxZ1p$L?2=qr*QYLO)YDPV1$#^=^vK!KR2$p zm%(=Wg8lp5VUA;(->m09xEqCW|^@rhp@`Sa0{ZXVFKR*U7UF1)f{?k?b;mY5e z11#?Uc; zMH2_-E4{B;j^uZ6w)I!fTE=XER0e3ar+{h30YO8ZZha%rp_*OR zL2?4k_X=*1WH#z>95yh42p?4!BC=^Zm#wjI)5Ji!1Cq6Uc;Gf@;_{$xBF@tV-#{!M40oQK zgh!FG1y4W$0cCf+(&zQWidRU$fh5BAX>0Lm7bSQ6DQ_Covou85($Bai6hFMlVv}Jv z^G@U5*48X7+YkdpsiEF}6SL%nq%s;yjB9#lw96KUp>K)Gd_y1ZAN?m$c#$jEU$mj9 z4aSrruWE zm;2-Mo4ELwlIZIi58)Xu7+Chp>ty|Xk$;Vq{-ZUX_ENBardU!z9^#=#qO<<=(k`Zh zB(m|WZTw1BhG}!8r0l7t87R-Wf;{*XR^j?BIT&tH0-!G#X%Ka-7RUe;uHvqCR=1;y z=+1*)ONR-FMqG9u%LnRU!j^hbmN1l^JJ1cG?HZWwrEk+T*rW@*0cjV=j@L&xKZF|x z0~JQbEl0UV9&o^Eqi*MHLr7f9AUF-M5ysH$bel?#gy;J$u|HR70YScXOyNn$a8C(4 zUjelaAHUYM(^KH(|h)( zm-TPRhnJoU4hG+m4;)i!y*wQrhqG9oYk$O5f?Ja7(VOi6qUX%)Io6w9r7BGxLd5ZM z(tzqsl=>V4dqmgp1!;gV)}$(|>gpX^RuejQv*Fgap*Id^qsvms2mj_mYn%J|^ztO0 z&)5MAxmHtzB0X}+S;K>iMINOVMZ^XjA=v@OADQ=bC7=T6-p1Kv>~l~o0%heAC81FQ zd5`X9xja&$zZY`TN7^k+Xh^aXSbs&u;6J3%6v@d>-9v+spTqK3B?0SnGFlK)~zBZ+)#4pA$cIjO~_g z?-;jD*GHVLG2G6 zw(rT^{Sl{YfP~jL2%3t*=#nYEsM|-%I=zi-s8LNB0Mh^Pb$-&WxDRcE&A@mF1knuo zt3NT?&R>Och`?`;)T65mVXTGqRaDgmi+J6DG?_&`d>6_=BAL+7M}_Vhwmir`bTmN2 zm9Zn};9yV1kQXTZEe~4u&+w)JeI0*y#NN1EcFdKCz7?hW^9btOH~;#*FzWpB%|KU! z7EYkbp*$sI&YC@^9;z0qZ(I=HHSj0DnP{*q2qb1*I?+f>rfx**80;#y&wjFQ8u$ zTx1A+H9}SLEd1 zj=Vn@T}%Oxv=+*!GCnv!5i{~HIvVIQ86(iXi`SFAK>Tlw)p7G3@I}nwA(;PhCdlPK z$znLexC>(?Z@qZLG5Ob@`di_EuPdj^wP4{=poR zCr|SCa@PYu4><=bD3KfL65KF5)Zn;3b5weY#PANHG!Abx2EW0swSzH*L0q;`xX4*z zLSz*L1h0)X-$CEk+-}Q|*&yd$yGQpMw_uQAD3(UKI*Uh!IP#7yX@Ycn8f|*p`b-Hg zJcB%JUQi)#m*vBo9}ZsLtN^w>HCA&{*%0BIs1~njbvJ_XNY--!TOPMrv+dS0?~>&=Q8Q45`-M+)EjSCFkq7xrH1iUB+>x&mFQ%9ShOR(;XY!YBe##nJ!Cm z#_TdE83ja4qN@xmchB#$EeE74Z8*xuZD3tkRi4d}J#94bL$rQD*foORF2dD;LlCyf zQy6}PVZB7KG@A46%FTi&>-~9}38Hgz(4-mQ?jharih;P6T*#_1PU*!^P!FX<4@K(v zD6nQPZ3JhtZA41jnp{wF3W0~mFuSi}NK~m7tI$rpfD%o4Z->2(3bkW&SM|_6_fnqZ z^k$bd_Xf%F?Y|bmc2v&M?XQFRbG!OaZE7KTIacw{ycq3gZ|H?uE~AI|&#kgExuXoR!r1)^zY&E`R`3Kk!{ z@i|-l^|4w1V#RoOqJ;$Jj`W*b^uj{RSUMpoh&kgcUdK1%L!0`?g#+G_Qu?RPvZTK| z%XtHxWl+D!O+B8TYIB1mE%bcy@T&s*!-3BWhmxNQfyL`m*LGy&pKU%_w@lB7;x2Qy zorcUi-;^@&3vzo&LC5p4J2=ELC)NId9_EAS5Vuo{I*R0n8JSqiypM?ekkm?JM>XwR7q_e z9)q$h#eB*F(Hr3IWodr2Av_ep&BFvCUiI~kCQm6H8fhM<%4`COr zFP^y?ET+5JBQrF682G_4Hi&>V?XLt^ZvnyR`461O=Vn4=qCK1=UP~h!l=$FHvZqJg zZ}lt5_06VDCvcdj&auw+WIen}RAuQaW!?^Zx6!PS+~^6lLvi7{KTwFVf!-SmqVfZn zNa^)ZuWHL5Z*FuuX3>%`T)v=f0fbm9gbyzLQ7&?H<&!V(oIT?T|9 zOa2T16vy%(0l{WyCivxHn#xie`YhV(}b94bMG>!&Ho_kZE zokzbEWW+Q}g^t!%zDBV9lFi(aQteK0Jm=SY?pp&LZZjT2pC(9*Pl!y_aJ_)F#nZj9 z->T0{G0BukLc|_xYlv?-do#=KdQmckQLhm8D=m~86;d_r%?8`vjWuYLA#YgST#A+Z zyzDNSto!+L?w*r{ZajY>ZHPvgFCY!0y}`+ub9N&jUMD8Jww*RP#AYiuiM$@VO$emw zt-3GtRJle<$itmmlwt)=1EU7_@NQa}n6O5)3`J=%Set+*eN>U)XHwNO)Wwpcz{N7h z^&8!Y1zy&51})nAw7u--D2}Q%ljTkqN+2N%iz`lxAPeUxkdy86cXCNA{qxjsYB9|-amOnDE)QK@H^q>UubZQT5!oG$mU`>? zW7@jRy{ZsuI3G?70V|C})tM07bs*Sl?)eHxbJv}&C#@eLd$YA9|2Qs{eR*uRZhV8d zZDYP#+Q~o5Qe#T$hEWWJ4H>60)SbEV-Np0s0UP!d4_J!1U)@8>NFm9Oq;T_|aM@Ai zIOrKqfCRp+s`wmeAV05bBek?PAx;ajI?pUfDXvMfHRy4ByGS;AhXev1UpRH7>oy4b zvu^xr2(dMneV;(n3Pj?=Uo8C>{+l+{A9wHd>*%xlY)lzGJqkWO-8@G;ySo`Z6YBXOp%76Mj|kU)r#}E%N`?oN^b~aNnURU&7;H=vHf+ z2prU}v)4D}>^s^HltLfKP#f-}m;3OQ#Cc)ffN%{SgLz%Pe18zmr(cYg5StFda}}V= zZ}%@`fbw%;r|bHetl_8tKk|E~1+>-@^HARqI5WMDL_ZCd!PoI4ndSK-#SdC))|a>7 zvvdG#&I3FkEF%5wjr}lz(D^$df@O2?fWTP;ECX{#Kg034D^|?pssw zmb%tfdjpFf7^@Zm6v#zk#XNo62V~;zwKyTp5Ry`r{=RdjyK+U3Nq4@cS0_R3vOW(= zq(KtV@oMr=)=@X`;a|`PypbWDA+))}dl7a=f|(vKr*KA)S(kMjM2WVCjle(08H#@( zqb`_#&5o}2cor+)7B=8u7UdLY+F(v^`dX@hUPGqxz=bKM*cr1dYtYU&RT@Fy*9C{D z%g$S3(4Mk>vhT*qitpeJB2K37g;=k|4tji2TxHx2s5NZ@-ARUfk0C9d#7m{+e zcjvLg%DvE|I=G@Ycl@4#61W?S-kFLgm!44{)$EAeio}CkS#97tnlQ<+h9oq#TQcoB zR-|^?ibugSsWG%09|k6c4`tDoESW+umrOr49wfmY40Rr)-QJEHd{3V;7S#JmRVi1< zI`@|2MoLJ|@9gKMn(Rp0A5wSWSZ~`#J9CEKUWzX?V0L0ld0yD##z}OairQ?K1(Mqu z@EKSg^p#kt1X4uNI>30N->BK7>Ev?5pkPvNc*zivESsjUzMX8Q|Y7B0z`FW?&#Y&t%$e-BqGZ0EQyhd@3Cytf?Ddd$utrMQrZLdd!Cqq~-AMn&}n)5t1QwT}+DO$#Bb-ctzV z)zp!$vKk+=cE8Xbee|!_z7WDb#&7L__*5dQtL24vb{kbQ7?}mDF7+V-|#p z=%TL$3$NBn`UKV%5dDH@c|U5V$NJ~JBh|yhna0g>Ci3gdFrm(N%DAkJNU{0h?c--!Q(l9{!ZFN!qT3x(!ZLZ3w-@U5pYd?9{ESo2Ut>>w_g*&0&efjS7<7}3J29PAkFDDS~d(I!wfv=`rG$Rh-H{p?g8`$ zA=#6Cbjkr}l%YAn(eFPW5(xhBRs(%Lcwv6JZ0KnGS67Yv+hzZ^SN)Q(mA|fH zpZ*(Y48y-G-|RO7SNJEuThjjVAnvF%U-`V%LV}+R#c?;;kY!`h1k9XrPA_S=8Qt2J z3;pOl6v}qb5i{)VLN_&hrA%~R7=KX7z-9;q+J2Q zBC-p8F*Cl2t)_=TVOB7Z3%yOHmNq~0czw4?=|LtuOH3`9PxsrfF6uo``=->pFI>)rm|KZwKA^*z+@_W45tEo{c zxa(+j9?PQU+FKbrW)uzCF4tT_PKLNQm-AjKSC_>uA*zrQ(LCQ0QM}smC1QALu-QuT zz60~(1)9X>uHJ2Z$PmV(e0O#Je4SNn?CJc*DKG$cxmTzIvpQ<|-pwxO8=4-t( zSzYfymJ>N6RI%tC^8lyaq?_}~ISC{7fYyLckEOdxhDFI1wy@d{zBDJ>!aD3rG_Lr= z<}mF3k}~_b_P#qv-j8#?TX+Au=GLz@_fuweV%R>mE1J=3;TD{0`Fs^c{KY)P2UWe7!i4T<1AQb|wKJ(d%hFl(r{y4~e`Cz@DJ zd_dI$M7r=ax%+&3J7{^{(2T)Cj;U56X3DIrMZk_iM%n9Ck{XBLHe4x6;^es@ym-5a zX0sjj?r^>~KHsdIlE0JN^0u*oaK17?IJInDkQ@%s+%0S{DPvJjN5o^h?e=PbMXQPc z)ff+L7`SicLyv8#XAMlOm_;x$&yLd)W_56v(~k1UaX|(5PQ4Zp5Gg%K`97muCOJ}X zUACvq?SS4MAajUJ(2L?^6Xf8`oI|~A2cRXdG@gEFK(|6?PqD6a1X&10sML@;xb16` z0V>L48_-I7S8#1X#KC!++VP^*Vdi5biLc&AT3xN0n>U$MrO}(THBvlmFKC)6S}(s3 zwvqc%8Q@s|=_LGm+V~CP>pLSpMXpb(?dj&BEs)**mghp zz&t!|BCi#oBUN~3?7XJaNNSNbtRSZgh0CP+>_d1ginV)5=8q-dCKA^H`>6C_qkgAe z*A5L76D`)}^QO`1XAiq{3ClwFb+)v2yA5Jd-s;e$oQ>s;V{i_BGFrg0HQJr7E41r* z-K>^U2?K^(LsWc|^kmju{M?>FtvVSg5zN&J3wEt{%8;jJbqk&oW=rxt&a5BNu`Vdi zsC~#Pu43#$VEd!uRWNa~z2MLDtE9emKssm`1{_!X;%rJMgxt8X(P`?ocnwm%^KBu$gOu&-LJB&|nY)6a z{4I458f>Q*jI4NF^rp6W#v+^F^li{JOTH`mpT+%W-OhI)Cb44OcD^;*p3Tkw6tt*# z%KCCFP}1104Xj0!hZn6KZZY{-Zg|&m-yH3n)yq3nlMPQ+RmP0tA)Hb$3sw7^KAW|< zlFjo`Z82@H?`ICn<351IZpA=Afj>iuJ7$-4+CIACveUBL@pg1_0Y#Ndvz!x%F7t9m z=70ouqwT0afRELNmib-vNY#%svQI%S#(~ho*yy1+Sx%1colAS zo9Q#HS$fOBhpp$=nv*2djo-;jsC5njv1{)82b&>^**?nS68Fy|;H>ZiuG`{5#6sf>) z=q#`=M;kYYMYWf>>?70nX3Eh=a3y2VreW{{e4bYn$#(n*VwtM1Ix zb_Xf)6p1QTn9Rb#p%UN?4#I`suSPg~A%)7>m-Wu*O91Q4390Y(#hP(yrZFz=3BqDD zV9WC%F^P_m*_X)>N~dS;%y}R=9K6TNg#k>+Ymf;{i1b`@VGIo}$F#ul3?St%wK$aGf|Y(hTzPga zz-LT1!3C2FhLx zM!ap>Tn47bqMNswKH)g@G3P3Z4Ha+3-pAC7vma(AGaCxu`7vYY$l6VG`?hCDl&VSK zFFD3W<|MrK4v(3tSGL;Nk~$re9e-b0sRI4+gYIxk^nh_XBpF@g({#vu$}2A26|v)G zziszB9got`%D1YNm9k`p4Lpl8w?)mCbo&g1lT^w>nqZIR$Ieq3fEjUS8cdYahxWrV zB%|at#DPqd<)mCg+YwooOc{I{htBG8PNQk1=PH#|<2;2t$>`;$KLgwwNSlDo^wJ=c#s^Q2p1Qs?6K+#=u z>wPuU=oD=G$@?w!oQWgM)35_WahUn+6$+RVU>snF7uboWQ|h}yl~^h5YS%z2G&EN{ zEt|@MNbCNtNZCsrhy0Ap-~@$zgFJyD`6;vcl|1tua|UOjw_EGgHbV}WYM2a}zPt~! z^al3$?J~-gwt`AJT>?#7Ur>NjRF-?3#5p?C0Hbsy1xeSk>;l|a{(!}RAKp>Nbz73% zX{AP()4B(rUjfNQmjHFLnLxn4J5 z)9~W_+G|1^Ec$fTtXk1|pF8q9jP2G#&U=p}xR*N`h!~ix9@uhX+RX(c^971*Ev6_P z$O83BU%XrAWs-R}XrfJCCr8DGN+3duKR~l}A5R`oAoXb&dI(;vFp2T${sEDV8{ke1 z^u~b3)B=~3p}wv5XF8Kxb#;N4v^}U7<@U&nLlOAEoR+mmh|BMc6)ps#kei72x}RKn;3qB`6EIBUk8hDGSLeOr+)rt)AD? zw7hf+Rk^Xti?MIBDJABdT!jNyc0ev<=Z6pfG>TCdB%b(4dXY5I-Fz)$O+Y!_RI6c|B;#*rJQc;)gALop8fz zG~QaDNOrdXmDA}cTsGv{EeI??x)!u;}D!>)j zCi#UxEwWfI1}guUC8~@9jJuCh{5uZsQ?&l`k^kg;Uq32F*|<7r{l(1^0wZ~S=|xfjpvF6bJhKxVsKQS1ZvxuV~7mzwHDow_&IX?@yU zvXnyvdhH01C`ILvDS8yf8cwZe$31vmp_9O?MeDp!Hed$bZIf!e&ibyYXSoncaEu$FDcnVuCn;)8?e_P8q=2`0W-&8HEy}2^28?>vm zSyIn_h+{8*J$LfH)?FVx&`+Ejs9G++T3WuWEMKa`2CBr@x<;Qc+k|tQ|3UQrTy9RF z9u*=# zFIpW0PT!Kws}}SESRFi*zgU`IF9AgUG%U@_uRYIOmI&m40hQ~MVER(8&@c506fd2* z!VgMet;F*_xAAl%0k^ks*XJwm>+KT2E{ioAYuNED7(L|jwC7`&wfhiHX9cze*ggM4w(D=<(}DX#0VB7E|GUJ?rL zG0m{2FVhMqs{4QlOakUd$ltnN`^~-L?ZAu6h%EP`&r})Vx;O3+)xmbXPS4=H?+3H@ zELlY%HbE2Tkm$WyD3?%0v&RWh(xK27_fn<~a&*JJgag7|YVUxpQXL9c_p76=Bpw$W zA!h-|`9<%@)2Eq7l)zmJhvv64Fx<2+g6TJ=z)vS`Kw`fim;s*lJTTL|NY}1`_dtfC zf>&gao&o3m*;9e3sqn@|l_=d)_-wETXa6cM&lU@{D)?t;S>gO25TEU*Y3GeH51Yx8 zi+vS8+1Rfx&qwGQ*l&AZAR8Fht`FGjK5W4nlU*-y_s%~1t^h`uizJx08-OV;=UGu7 z$;@v<3BAYL_*X}|H;lsm=%lSXEq4UJo)7R^VM{^nC9(#2U?~?Tuu%-2N|MJAl*(IB z{7Je@1l+xb&$5;)Lvj@HV7b<(9@b5FmtDp#UPSxmrqt0Rq9dBwv9#i zIdy|NTpFYYxjvDm5PqJ{a5|GrOx|^@$hASAO$>)^pn;}_+s(L^FOZUit(9m=4g>_& zj`vV(K?N7pVn>&!NLwNIeWb20_gO7!kODP-bQiqTipG-zD%_te1?r#w`A1m(u&#d` z?*F#F^WC#n-F()n@TqAjkvrm-3>|*8lm8qCs!Gp65qwlWCq-|%Km0|+1tPEi%0T$2 zPx*K8;mbOk0OM>4=!NHE$Y3$-bZ;knz}!GxD&YzX#Vf1eZyJFg9!r19<6|M0=sRJ< zQ!|Kw7~xg8!jdd1`g`m?-Hr4XkX`5BDKh?M3Cd&*rJ$6?+WKQh*A}jbQnXCse^A@}92HH;a z4%(G>Gr#Xr4t4Hlib?gIFI2=S-ETWGPuhj;Plv(wBNn3CSP}yTeKjv1Yt-`|U}9J^ zNDAJOrKPI3ZwL290hkOg=Y9wnyp}irrv`K3u@=K9Rx4H z`8nnwGGUcll6PqLFm&Qr9+~oovTUU~+NWI)gdOH_*Q#L0TXkTM6Uc3f$0di(_!6S_ zLi4)4nbm%@_cCgjWqAp!xF>CKZ;!6g>j;&YQ!{y%OWq+W^+GdE&?;DQB{f$yvV8UHJ_N26VvxfG?y?t;>ecq9YXw*Kotukp&8uh$|!UaY@uurbZ7|$no zwm@h*q*U`Itbu{ZtxwA%a##U~TOemp7Q-E%f%owxntli8KOKv^-)v`KYGA?*vDSBh zR;O0Cs6f_1YLm7x#0z6P+XNqCXcU~?{;1u~Q9n*08?#Fg0Sg1OMzuVi0q6peJEFz% z9br|dz>wA1bI7a2)d)do+#2-4X}N+ub$@ldI3y2ood6^S)ZJq?CuhZV*BY)YhRHDP zysffs<_E7KDDBwrn*zF2!H#mY2vM?dVxrsuB?!~VyGvP7?0_6WCM;*MgDvT(<@2%h z?sY6|9!sNQ4A`Yz987u-_;>0U+yy8}uN7_k0MYcc#5n1e1S@h0J}d}c)0FKcu&F6) z4iU1Sf!eKtl);Sii)&Vw>q5xI3$PWjA;&am_&56zkbMqURfk}chpI0ui$`e8>y-wm zaVZv0{W1xiC0!$`g&knoy&ZkVB*b0X;Na4OPomzJ2H&B>6-+s0SMKlNWMUi0l0Qnl z;icKB;|Nvvut``SNrFFb4v!S+6Rod%yr)o#(PnxH0@L>7Lkw$J5YyR%#mSqshmP$a zP3pWW28@sBXUHjWjpRQa`@WS4Mw0ho{g*=F??V9ohhz-N9DD148(YYA`PIj2(0?!l zp0Id)PBGupkYJ3-zxfc}O92}G!Y6JICX~**;{R>)hW3{yUUUDM`u4Fwzqhqu>wu`N zr)dGeC~E$)C;s@@Z=cQQOckCCcoNk4fBkHJC>M~gN4X!%h4Cne5vdYNJoWc{3V+~m@?B)RRVYg%NYC3)=6<`pk2lh!+P<*-OIuzK$uhGlCR|z_q6l|| zys{mnTTHWaXqGO&-yYq`KyCgOUfU2(M~7-+Jkza4md`}OWtpkQ)Kf)F_63Yvw74;u zsPNV|M)<3cam*kqcVHf@k09rF9A=H9sZ~xKS1r)M77k-!+@XSyAJaBv z=Yp+AktWC4iumEm>?G9FMbV@iMAz<>N}LT>aCh+xiJ5cOVK_U8i#Bu)E;!rna4--& zuuM-RbkU6_FGt?!48e?2mG2sQ1>CxwBvyrw_+bu1fy+uCr6^E&n5%p9@Q~6IB%Xlj zzgVvn0p`W=#^r-8i=Z*Bb;h3I0<&yLU4=BVS%-c=Syyr@dluT zo!X|)l28l1ajVX<2(kkXf0z(ENI!B%-a6unZq=n=S6JfAv3 zGxGC|m9<;lkRwxH@sXUi{Tc`=GDL=Pj59u%M%dSv99#k9;()9!XE1W$>r5Ivf@h0W zDx%TM3wlHrom%=2 zX6*6lus(tjvI)5k1QbxlF1E%co&kDHo;hv{=7%P)Xeoc(N*rr8Pg9SZDXf@093Ww& z1MecNknCJNhZ~SY^WnT0!z{Dxt%X}HaIZ3G^f>I*JwmVyPAf-M5Qy`sUILfg6Ei+< zi9laoLNKE|jK>iHQXG3DAU)Q~K`juIz0H9kr?z(&Fep!tt+vJTPOjV|1e#`oD{kZY zYz8MipxVbGZrH^hT#Q5s88=;roJXIZj(b&_c~euR)=g2Sb1=#6gYb0GyJ6%}dNWjx z%q=vfx^UEzRG5WWg;)BnK04Y7-TNLQ?qSr7uu`$hKdoK6+K7AL_>K^Th8I*+e@JVPh`cUD0i%&b~(r7uh>Z zE%>jn*a1fH#FGB@L6Zse%eKv$dTjUETr+2CJvUXdWY*oE$^{|3n{@~2j-QGFkP`fF z0ABxT=Yfr$GxEat0C}B+{e-&^8Q_v`^w7u zQ%9M47ttag9p%1`ZSX@|k%*VIqh{gm##qxTBJU>&P=ROI?;j<1(rc7lF0M8@7u?XT zVACA-Bz5-o+uKh&hA>YB+tlx@{Z*#GS=rhYwqqV2y#*tJNA+ zq(UPdw3;B1)$NBCZLl7~D@q#R*C2d8QS==H9ToetG2u0G`<08~M{&YIg`4H-+sT4C zss(`U`?g*JMN(ORgJJ;0(FgGv=+!=iv3xZ|(;T$3ek2_Tt1w*D*d~wNg;Q68DBiU@ zCYIF-6cPA_36Gx4EHd56^mM&P%!a7>)`D!s)eZo+36)u+x!cZYtd${fHQly!ow){( zPGlCLkQ3e(JoAF1nh!KXA6;$jr%YJH3x-z_^{mW^Rh|oMyC0#ph5pxS3EY+f0$hTv zYfJfNf8RsOyO=l=pydlcpUN^-jSU<{T^f?^R=Xh+ASz9C5k9|_7Nh zYZgMsV1XPyspTh?+uHWT+S_oHNoJv`WK(;;Tp*v_oNxHf&kT$2B&3jt=3D~o3LOpu z^s2Bx-WBEr+2>$}6}_BX-$zcooY{~m2Fnj%&D{%Ra4vynm~sTPYd`R~{a#Qi&`ZJM z=){3=y9F!YaJ}QvUp-z(Fq8xyhwnW@-SW-#e2SlGpOOGMKVtTMv$*_tmh|a!{o`MW zIG-}GSFae*iSJ&9cNy61K!`5)MF#f$d-8!w|J_@H{G0dWZ*K|mZ{Cx?y(I|$m-pmf znAIBOeguLAUs|OSX7hS^J6{x;<1C0Q8awyMH)rg2H|%V+pqg3mG->J-LHG7y~J1*sdt>;ZtK~Q3QFzlE?8~ron<$N zdYw!gV_VVMExD0IJ*j~&3@2pVGZkVGCNuXb-+ku&ebMiNuIzia+V+fHj$qq5ggrI_G4TQT zR$+q&5{wIfB1s^x!34~SL$IkDTMfd1=3xUiZ1%k7`}}gx$b&}Bz_cp5BUjxP(T*5Bd=Ev?J)e+cYLHVSVP#0u8`sa;rI(}bD{%Vf+WM@CjE$JrV@*cKs zSH%$?0#S{61l;a+>w0S~N+I+n@h!+@mWu}%$HFt5iFPECj_o?Q_nf*_Zh~ayYRuNo z#9X1Jk1B()J^Api_c;fTg|WY8Fw$8ZM9*~A<8|er1##NMpjiQ4i7g`Yb|#g@amg%s zG^)5dwjxHJ*{&Mt03c1iX7m|-1U`)ID(+v*zjjzBugTn7Ud8Gk&`v`A{<$Ii28#O} z;H`f%!22kt|NP&-?j_h$f3@wt729g9m&ujfz?4R^Q*{=a?XRtD05$wo9?~~m1N8B7 z=*t!Pt55f_)PEVYfra>bhPt|X@2q{4yc!hS`U)b9YQ?+{+FM7bjVgIg=dL|80&gD_-4LwChy?Os5XSW$gq0|k1-i^vq0Msh_~nOyVD1e%Jp)A% zcZ#ucrZ0QT-?BO0rj+1cdS(hfhm_B*BwA+e4CGCCio&g(PnYJW#H>Gf*T7mjtXKD_s5M$>t-Ox z08A16qdTu?8C$N}z`#8-ufYMb5e5=y7P|)+ObXvwM<;>S&{G$lsI`g#K)75WR9$07 zZ5t?yJ)aXd4XtEfXt_Ue=g(D?&m6_0x_neN?d+aSP-Ea_(4VKjYX!mBMq@H;b-semwG_&Yo7XP;J~;N-ED{~ndz&-`-81J@>8*YU0OW?{Om$uK(;?W`D0ei z#t<_I(ts4$G{W6&QfFNcJCt%;T@siPaA(9IgInVp&Gebcue=$qOoWnAHL!a~gnIq$=+%Rt3FptE#Xx_z((2%tekGx8d?)N|LhCt@ai#Tz;NT*@M@3gT0XA{czkj zT;SffXZ7)?{*w{x%o7NqpJ?9iC4Tu^9N^V{*JwSZEl>G1P&8pA#XUC% z2w~?&jen`HAqYfzy0O=g*oQyW*PviIDAXH;{$sCrdZ<5#W<37wH#|jP@C#trO+yst z8&&uRX{7lUgl2zix-ahv@;fQ^PfF~42U>!&Jx7-%FKrn>2v|g!*k^g9iPQ3WVonzX z5W4`>Dp11FdMBS`3=jq9r7#mTr=Rp8@Op;m7AffegiV#DLOCwU{=TVToh5P&tAy5o ziHs6ZDA^+H*#}CNFVuc5kr7C_mria_#+kvFX?OEjhFj=*A6u8>LAu1k)r*$WEV=jL zyn}Q9XdH|5up2WBINc&5@Gd1c=4qwS{fgYgL&cr%!bvwUV<+}ri5AE3`WTm$D5P7~ zwOp}URR^(Tfes#ad)&W!z&Y#=I||}$Fg#npP<0CX zRSqgU2-BOX3bOQK2qI09Z%eK^dBE6yzkjedzrkCWo`vf$g#CS(-V;0dw1Oe~`&Ig> zImNQAiPg6=TN!@d;nhRUg}uAA%yzZ8t{&K$^a;++!vX9bs5}4x!lHGfLjY3>nR342 zuXU7VAf?b7PSFw&7UcnlyzORt$QP?i)n5X|Cy%HE3nlY7fx_qzHgXq(*JT8ZvgmgQ zF+vJ&+)4JSUh_%P;eJ(Do9YfRiU8n(=p?pZoXaDCFyu7U%5v&uHPyHBK_yJtx>S@? zi1jtI(re@h(G@8biw^+xcb$#~16}-$yE#NCH;`Hc7`>tGXmP=|Pfc}A71a$i42b!(_= z<8~0QL<7EVbZOZ+zIrX-}eoI&V>A>;VRknYvvfn!PP(LS?2J_*2u9Eaog8tg0 z`ej3k-v8IDEa0Lq9~wf4Gs_(?T0^-nBC!1@uWXKYTi|x}_?F83RHy%K-T&P)`glUf)2R5jLicN(s~TIU7Dn4WUB|T!mXd>d z1PH@TU!)`Au!)?Uj#VF4p`I)9il6awm#%c<&TMA>hELgSDqB!n-&awLZj>s80YccP zyU3r+7InFYMG9*gk569n(F4}Cf3Ca8f1n22y!^J%2W6bISde8dKSJ$B0Qr@ z{rA9`H_`YTW$S>eBHTvr@!yb-ZM^4Wr@jq2*-yu;%fJDOR<~L$?@u-h`5))3;x5_xf|eIe z#8U0rpLQq4H40(ywg3}g>2S6l7q5a`%z2K0LhF}c!>lv`#3L0rcljN;J`#OakqYEe zVFiodss%8DnwC+MwYJz>Bn!&DzmqkL05?E?f_odb%bC((0z4cmDZLwJf74 z8ms*;Bar^K3UlJqku#h>Yh4qN1<75`395lTfWWED%RxH%Q+E(N$#neVSU|_5FOFyU zb{0G{EFeWgip?_*XRKQe5fZtda;Nuk6-SSXXf65X3Z48b%ejD}ex)xy2e0}GBUKaA zk1t6#_nDM2$}^RJEZ<_L9!-nnOmOS`YTgPF6Hqi1IR>#2Z$R3Vg9yG4WZWB&7SfVn z*!ukc`@mHa=&zd$Ea~DY)o|hRxwUC>6$fO+a9_9DaEV{y3%sSr5VJwo6E8bNXz+BMMWKLAl} za0|~y2+mC*uksFrG0u?k)vCT!=rU+eVX@Od4Y@o^%+3?;$1|}iHK`|BEs^iN(D62# zXk2=HTnw27dGV&95PUDp590z3L9`TM1_AHIp;8}>rjfSAocOEdnku(zQ+Flcka>aK zw|n}`1H@1j*UtUQ)fi_2IlA0K{AGP;3i8wYBWRG0clf>me>$AC^I-&|j=IsQhsjiu zw}!~~>I~sN-}Oa6?4*E1`TNrRn*fTIUnRW0<6a{Hb`u}>)aI7nKCL~^oSs*L{F%%U zZ>ip1Ul=6&cF&PNeN?^<{o&fl`_%#W6|w>&fn$|~#livRufJ|rNhe+;2l(S6pbDXU zSjdn5d~ZY2ju_s!My1V$d_%GuC0l9wAwF$(mC&=;W$p%px#trdD7 zkEUYNUZx`G&gX;f=ot4EU}eK}Ot^dhbe!m0F+8jt$4nXx&KTFzhjRAUL=H7@$^R@`ddsYwANEtOux3)-)neq_P!YsNeBH*{l~gh9azlr9{-s7B=6GD)V+5qS4*J=3(}?pm5!eBa&+8 zs7>Vfn3KUAmx~zebVbgegv6CsfqlE^rO(B?mU+nRMUPIZEXAAhc+{9dkmG#g_tC~; z55!O%O~iGjbk2kkLT7Dp_H-a15UFrXcs{STrWm)x-P{6T z>3lAU>j*IJrEu2ii;4I(wdjQkp#8T+>T5M9gld@W(AI3=&7tJ!xaJz}f}d=>OF+~I z$?ru9Wy?A^=#eMs__1}AWDh`|(nl62FmB=mo9~D%MH`~LqKJpH?wToB7CeNNh5&gO zYx`zMyS;aIVI~bhdB)bAnd1R-n0w7BQU~odsPSO{Du9T@ha&&;3gg|u$1*2gt3Gs0`q$y=D8MdHYw%q2+uvniE z;_#3TN9bbG$xuMwlI@0|lhVZvr+f&vNC|dN^&9G-?^0HQNWkm7r_9m6g{QH)sOu0E z08DFm4@)H%h#*+a6v>cam5GaTe6m7kS-6LEA zYjUXjC*Q<3_uEw?Poi20WA5&GImkyAnSx}e7C}>84IEddHSBjd46(zda;(u^mpKqJ zX1h!b@7VOG;{F^0S@OM?@;=^u)A{^2%lg~u{zT4)Ap=UU>{v|<8z z{?$r^vnb2pZx?=as0|wOkYunSLmp~D_QB6#4_|Nh59g;3D?bcqo=m41f^wgO))Xiu z>61_bBjM*`z`_69OMJdUXbt_}yu{}#MBr@jU%$kEvr}~5)*!`cxUA;dp>Af0VDueWf)MB#* zfhVm}(H_J{XimD-LaQa)%q))D0bd~rranWc%>@flPn2M`wr&7sh55iXR3=g$qf#Gs|yW(NM;VUP0(6B+cWyE>_(9z4;&Tkx zgvC<3?o(2gysfah5LPPu@2WPlhH}}2PXTGz9*R*8msI-EyqszU#vQwb+#~nLJrhlq8{!q5We?}I}~ruc`s7e!YlzWZ!se9)eOI`Pva@h7q3-#+e; zg##b=;a4tZ zj(>a%Z@Zf!ufqC3suE;by~G?mU~Zw^?pJMp)^< zcBfrF z1?6hMwO5E(u9n^XWL%K5SoRY4U?4a>>Cqu#(Sq~C)yQ@RA<##~P9eVRdJnC0v-S#l znXo4)Jdb)Kul7zTXQIyw^!5f*QesA~o~ALjZ5+Kbxfr6lKJ&J~OqF}R?E%rjE2EwV z6bJx z^H_Mv(M0D-7mkWGUrH={_s+g?_uiwrv{!N#Ywr=#TJ}dWWVHQMgVy~LI8$I>kHzm= z6K}2LA3787*u7sV+U_^BY*2s_T>K+_Z342e4lWVWPT-Wp} zyzci)7nq5oiJcnAV}f&cM8*r+8O!pF6ykJGqm6KcB$BM-x9f4$00#)Si+A-Yl^gj+-KV-tq+<)PLhMhC0!=bZ?w_+{g!^#%kX^i51p);yhQBSE ze_b+n&yRLne0F+ICO(Y|y%xdf8%3hA=gkOYMZZ`^ftCBCr2ENcfV{!imiA;a(|91m zvUs>&vM=*N$oa@XZ6-nxH{k9AhWe(|HX$L2q2A|!qjEK|+_X7hU=<`RPWtU*DTP0S zTuprr%|87`(C3Xlu7|J#^J=v@V3xm0JKoOp$-X!b_2FUz|5LD~eO-wQ=10R;E#066Z)JB^;Z21nanC=4PH<^w3UEv0kFNMgeq4Wnzn2?J zdyV{@g%ZGl85Zw(b18#?I-ShIl8R=Txwn$0ymqeI zXgQE8wci_u_L|>1N=WXcuHsORWbTS+soQwnlOWR`>!|lwBv@kr!s|0unr}}I375`A0X&}zp|Kt2Z1zzEVoBvF++?!9A`5_ICbAF{ z+)iwm8wh%0FUJfG05CDX+?IPtq}NVBnvf38iPq&qSwU+wLW!lR40aBOy5UygElJQT z9XZ?uZy;|F__90;n{jA#$70Af?hFTZ%6BIx&JE`LXC>Zq-1kd9QZuM%ow~b5EMWwF zD%zWXN}gQZDo{>Sj=Ue>7lFD%9WD6pbB_2Y0Ug)f76asM*2nc=X`p#j?gNc=(O_fqBYOb1JDoAuSwYO}O%Qn?6^No_r|Gto(ADWG!h+j-bYn%?GHQF=WFh3sB0YV# zxHHpoInqTCD7H94$O5|=tmQmo{(7otfDo-joj}k&#vMLmI1rNb$5w3^Act++SP`pI z!Dqe*M1bAphQH{PN9E@i@c?kOO>L%g8k<5yZM^MpB&vkJxCmqkpQx>u-1b_bLgtkg zi#LJm&$^Jz$0#=g$(Z$uhdCj$is9)Ip>iVHE?G~>5vY*~pAr-?PPuyL9ORyjM$l0D zeYq{*O-j!|^Rspq8aSxn8o6U_&wjT=ql;oWTNUexYbq}eTL@mm{#XYqiC^EF(Elg= zA7cjo-u(j+{rjc-Z;QD207)HPeF~R#N|}iDmW0%cn!LATQRzd&ju7<#YRVtPlmloo zKBdBM)g^CzL8kg3kCAa$kcKPBgdzLjtMy!k`gZbGAfuaTB@j*kaE3eaz2ghBzcz>L z*v%974DDW6bKh3?=K&EG>#KRrq47n6HdKkBoo4;$A6-?dxr|?P=tkzmpPsBEK!@oI9KRUL58|^_6&9)Q8+VKU@ z4HPZTYR3%*4{~DT#4_U5BBJ(~shqVzYgA&qqnN0;wCp-V6VW?Xp9scQ5qxeyMoT{7c+}O?F9s|Y#%M&xAaQ`pWp9tK&V>%t0I9d`l-7J ze%C&R?c0Yl;M3z7)9?j!a2X0rDsjvw5U~3$_7?5}_4J)QwW9p#c`juD;sWuKJPngb z{x*IpM4s?h^fuPWs2K5R? zA@IPG(m2YC>Gku1&552U@kBw&N<%>&4*YjRX&L1YY()VC`t|kOb@TK3x9c3r8|V_D z1dh5=?2UrAo;cBWO4v~lo)^iZuPqo|!u9Y{Axs|17@>K8s>Aa)<@$kn%rrG5KoU}u8YJo(?CStR)Cd6* zh*`WLj9`*gd_vJN<8xe93RgTWtXYaLs>-l$Sgb9KWlc$lwNqPorS8u!gd~NM0DOdJ25C7mg3{(5~yVn`Lha`(O0$f18O=|5csD@8@LFYDRC62~u#Uj;etW`ylm&)Z=k z>@C#Z|L}E?^iSHyeIU<8@%hcKRW+Yv4aBw|n~B8Ady})5ub{tANPuGoUU2uZw+a~4 zar228asUr!2+$aRkyZq5XOV}bQm{4{ENnjOG4*d0%U3s$7LxGnzI^1|@-$OWd&^LJ zzejK}RQq)s``occ;KP4R7hvc5wqJ~+^7)c`6^5Ugg}B9+Zvb%2*A2x4Eh=m%#=C+0 zDSQ<5#(^IM1)@m(r(FvKeLT=9;pISrXd3EZs^j5`NK(_YT~G`~kZQ!P?kuh!n7cL1 z_{9s$6GJ_I=xT|M#TuaMeL<*ydQ=YjeQ#SBI7h$y#32T66+o}(E&ThfS43lPyBZkq zU|V}0Dd6z(es+Plhw7K_AME(AOXd0fX~vSXR5W*(VDJDy#QCs71bWmUz~?)!$+V>o zCnLx*rJu~TW$vsKS*m*#*I@1Vxp;XS;V80&G<;CFCUNux5)vHLofCn&I6d`2epW}T zPp@F|G%8~xs!qNL=WEF7&2}laIDlc%^BssDF$4v_BR>BYsM< zBl2*99^D+f=Ik6)<)GOM#VLV)TpuFdJd2C{VHd5nM8s()uWc~O6T79X$+9vN_6V6_ zF~L&91`VrBrx0^n8jV?9rGYx7F{AYWMVv-0RaSsRAErR0?LStsF9}-Ogr9}$-|AH6 zS*McU>eK_N5%GEiVwGJiKfIJ5$|nk}lpuQl;o}jQ&^ZT8^t+mtAuBcn0d3;$S0ThM zeG7z=!6^DpID)v7FYVR`NPbZ`0*>I5dnT7Wi68#g8%O0!zxAnmcqL7}#tzSq1N0kg z;{u-4O@te5Jb(LOljA5N?@AmfWd9S_1|xWoW;UdlOraorfQ@Zx z9;qH{>VXVald#C3pSp6^iO@z$%Fkd)g)#m8n68es!!}^G?WgV`8g5>w?dBmm_7sgX zb?zPTcp#Vb>eF!k_cqfVXNw}!LCSj#x6O7E*JJ(IFZBmrtylMKT6^{(n$vY&tS}wL zfmt{uEc*ykSKOvR?bN z0@~DZP)~)VsWO1T7oOG|d|FUOeLN!~c&*0^+Cr?r)+M9!XVn*tuzA7;^2MI~O<4Q= zGQ{8Tg>Kb4GSEhFPlbm)INZLvY;cN&yw~^XIky_!HEDl*^UvSQXX;UhLEPI#{O-L3 zhFAG^75}FfahjIoa+u*tTpkcp1E=-d9RCOM2g}ng&6`lSF5n#ld&g6YMnb9fa}V!H zAcrp_nGWEVM!@vzGP__r2r8hZzdTl`a&l`b9c}Kt`g}BWOer_aW@q05;-MxF;LTJDnE* zOr%|xUS4mj$h$49K>AzMbaESd(7^p;B~?;h>W@~yKfeR4BkOcf&%^qh-u=TK5z%1UsF%Q?)hDC@}xYu4vpHN z?W&#=u+JG3tiDn6vV0V<6u-4};nW}g=1xCrg(vmt$;Eh&<$GG2pL~q3v3#3%@h;q0 z{QYJ8<^exn1@eB%|5q>L`MrO76(G6aKh4zC^JVQ;Z}~$x$qw!Pz)=9mj-duO;cm zI$p^~Ag625s(hu}9X*>2C5Fh@;A>9+(rf$XV^ zcC)Y{8s3+C!{%(5n*@VHg!q{!^YpR~kBFIUEXv;nmf|H4${DTdORQh-92%arkX*PM zmCI@&$Q}o7hdz6BEvIJ-{zTuxq1pp~h?mjr?pWw_PIK=vaM*b4AGZ_eCtgx6Pr<^!3t^DN1yT&aL(2m)^>GJW&dmW#oUl_6sjt_{Vx^{S<_mD$Cu!CKjT z+|&!H721t%QRM)z5B0Kc#2wNF#1i;jWxaA&KwKPWs|;#Js1o}U$R!30n+3z_JT$^ z0c;Z=3*oN~6Z8XOv4yPSiP3k&r0=sX~ADtR7e+v74>sSCQ;<;Kgfr5uaf=C zbej-Gf6&;9nm7KbRsR3mH0PhM@3a{fiZksg=d*o{HrXOw-gFdk7F)GO~dL8OF|` zYc_m7P^%&YEJ9D*mTIEi_@Un6dzO^;^}*0P9ISkTp19fy$3i041{e#sR?*?*IYOP) zW+~}w=ogl|3_sqaTcJewF$1JjsT5QO>5 z<>)u2gYPs+CPoXrlJqb#V;?*;X_9$6+%gjg6EnH|=sKwkiNSSdrt*~>vwZVi6H(4L zu%hFbS|W@ADnh$rTTb#Q?^nmc zH^Tzu662+~aE6LhkY2D58;Ii)>^vmeFHuYxa3b!Z4E|2X=$WRf{hkU@O3oOkEZGW+hyqVqEPP^LbSE9 z7Y`sD!{XJn^lHma_crdUM6>5LSeNHib$csP3yJMfX+E-|^Q<-5PTu3^2T{v2!FkzCfZSauTMWc3jd*A^Ka`c*FXCMn{TXAF3$IXeTq9G zhfRSfso}V5erZYuf6td{_Gvq_otb@Ap0DyQ9YY<19Jd+-2N?Ta%|5eSUeTxU8F=e@ zeNjlsqU-493XZ2AUBF+NjDPYNgJTUWXX6VKQJmiN1Yd50%Jl?P=k@n(jmq$zJ<0c$ z&^k;j{8KqPilV^0RTw0*8`J^RwsnN6#>H`Tu<; z)!MW*;(|vxqoBbK8w7l{wQB6NdhF~SrmP+#n}x;snsFoq#sm>RJ)o6u_3d(5FQn79%w_Xg#&TKjAM>e z)*Nm@cTXRw5&}-?VddScr3Dz!1ae$#+7&S0Wry@G;~o=SEE(L@{<#9ca1Oc&%veMTMxaj44jWyk zhq6?OD>PUXh;4?RgHm`1igh=2E{fyc^q8)UU_m^b=lHttPU{)926q*nE|9%b+8Tvc z!FKBv3OEST5x zI)iLl4wReYNssx8GASqan+?fBnli+{o|1*RyxFdRE)dpIC;fiPBdT!cvASr@zTd-m z&%a`ozwZz2w99pv;YFMJs14_hwxYI4L|0@WnT@p)xzN^06Px8Gydag1fhe>iDBv}* zAi64ckjwP2L!jeV!XbkpKfpE@xkJ^LV-FmpQ|)1DztH>)Wb)(XG8>(lPU~!XJeJ7) zzRyDG)bPZx24J2VEWC2`x44K!c@t1jnC7jL-;S_XZklA4bI>9k{3>=kAFQ+cAu-Ly zt_vn(JSeCxXu;%;f*Lij+e*BB98V7Okx8XoA+X|m3m>(H0y}7SH{Jw$BR4`auGGX! zfQ{wQD+ilC99h^=|IBJsb)O9$7Xh@zPxL#?_@Ji(7`SizIcQUoF;BTMY>_04$UuZI zO9Dby0gPgYHFNMbJf~4@2C+cD(xbj&;8>E5ROrJ4B(!x7w=+-O?iD7|Dtf@E6@v2D zK;bq$SW$vzd8~U=7YzP#ovyB$P}0TNS3W<)XlkR@lk$dQAYX@(**n;6SWr@-K0h2J<&kM zErql>P+<_MJR0Zlcxkc)9zZloOhkAQ!Xd-oFFJ%*>h0!M9k&&IWH82`bv($NMo(H>6|c8$|6wXG>+{*k}W!ETv0LtjH|meB_XYPpAAx4Vz=t`t=~)WZmeKCW!L(T&@NGyz<+ zozgOogNo;kRjUj_(X1G(fzVJky1T@tSzj=jqAx_z!_8vVHQEaJc$Kof2x~SN|2Q77 z{%eZy|C;vke@$!bzb1P9UlX;m$m2gYFge+Oj&Kuvnc9M@{jH!V!+(T)u9M*(Gkp90 zJ%A`5a5wNzBlN$fEqwpmpZkwL0QA;;zazT)_(T2Ak74WIpZETM|Jz>+9q!qpTYmad zD41LP+(UR4L*|d6!UhaLAdKZrVm$` zg+mv5RVA{AHiCf(%w>BKg0P@nSA{Uu1KQLTpzM9BL%7Kl>{pY-JtCJ)O^}GgI)Ofs ztB$P3dT)*n%SkdEdtbRZx-K!y9_DS%{N!gDP^$p0`vHxxO$!cx415m&X{yE(M9D^2 z+d_Wk15n%mkuxVqzRsQ+M-Z#GCt2OafNOX?knKpiZBOD%X3tjvRE%Ec%OQ(AJB2Re z19YHu=nh$ozohjFlx7eU*S0bo1I)MC5W}#XJ#Hp?k| zr!EO>HX!hSzwIfgIQ|e}=5T<^VaV6anj&MFS)D4sX)EOU+D#CX_^#837UYbwZ#)

WlUe-_t{Nzd&(G(Z)PWL*x)m8VrOh8;ZfKz~i4&-!)P@D^6aQJ_DAVz&m}9XJ!;o|P=? zj>R;r#P*y)nUD87g;z8ZK?gsq3Pb@$3n3;Qyi76l+97}#UmFu(f;DAHY)<|Tt~2=c zd~a>IzT#fpMJ74FlrBGX#zB7dp3C|JHz%)AX*toN+H2UkwJzJ7D&ylCNMY-3G6NdJ zK+QASYh;VXr@su??7lw1Z0KU|tN*MLFpU9=E zUL#48$W#Bg@1-t_7a8Mtj5}vuEM+JHYITDH<{^(}QMlNlyDR7pdQUwcs&gdOYq5p! zvK=bN{B;qg&XV1X5DeTcjNKZ7LKl7c*zAs*MUoh*fo#=l@+dO2sE=b6$k)wj*?KMb z^|}2y6Ixa^DpCNh`El8g{YAKEsumLmpswgDM;|Mj9PM@|*IK@~NJv)O0pwsqu%ebg zMkDjE{8)5hZ{nk=wiq8JAnyL0Q_?lxrzymrTqJ3ofO4i+$n>M3@fL7$dZQ)iYnB77 z@7>RZhrh&H@*-VtcW&9TMH3FkyZ|T4uSQ=#5b~j(dzl-4uN6G zA@-LhQTS&>$`RI%&5Un2YVZdPenL>Hxm_$-$YU?*`dO}(5`t{qQ6_Glp+8Rb=ofg> z$!Vls;j?lVL^TBghe1(6lWPme&p86{I8HzrBi?oh|P%iQ;j>o?7HsH;9K$_GlT!@STHnxkhIG|TdMow4R8aGCE z#O^^PvjUxq0EBpO2R3Z)#X?F%lRoFV+?+8=S;*B@U13%WxQ5`NW4A}E7mr~`#XnXC zG3@uI$SeOCs%rhp#PGNMlTn|0WBw_41}`6@Mr{^_Mn@Qx3*zo!aGIbDqi0AKrn2gk@icCI6XIVnDLYxB}w9_c#9O z(f{<|2n^PK^XSjA;Ll#HZ&s{$zIlX*9PFz)oNlWl1+mf_=CU#+m`-+93BiM%7-Tx% zrVf_b8H?@0N~fvw@?38&*REO#Q1*c&WqF5K*KKkZ1f)BItngv#ITjtRV%~M=wIJ1c zaf4xsiz|dgC3Na+a_Pv@;Fj7?W>21bYX=Ssk4XSf-fvFE$zRWwiy?h4=zxPfUT@}u zbim$;E&`A?4A?r&wi~c@UYJ=vD$J&(;jn36%mj_lZKHkMPAsEBXG~TuUS>n zZ%r#L_G=s{Fl6XHielAHvsN61`Y0T1bLrvNaqd?iIfidutlx+VKE0jLcYdet#y`-- zRa%CPyD}qfI*XCpmq&r#Q{6>r%3oc~&lV``QsiO<(=e&A+BPnEiYsSNp%O0H% z>TbUZ56Pi6+)*xzU>aHEuXDd5G0<&zTD_L#N^jnv%1^+iLlBwOjZu3 zBCZ(6iI-dPAk&xj&WIaD*{bvU)dp zMR!1#1|$ieh9JU^R(Osl{RB-$X(9C8%1zGobtA$3pU~{^kmJE(1&Rq*d`s^yK&!XK zYC!HF4rbQjZ5Q^7X-ghvNYh&-OcbbzImC;5Tqtpl z&H%;Rs>l+LP-eusqz(jCB&UqZMF9PWfy0mt5NB`O(JeOzgEM?@b!7h30;Ls2q+g5H zmqF5B*DB{ZJSwmchZSpDGD-fj-UnyUmnP=ZWdzHS`regz*~Y=fCwax;+}3zMdK6vRGyf!4jtEp>S@<#Ek4GUsAD~ z8b-xA%N}!l)2Hxu$sBx%U9o95ZBt>w=aL!?4J4&vHgN#jAMzP-gm8P3c>H_MJGl<$xg7iPmzxozu(U0j7=l`40_Od*whA)@`x(cbqf7TO zjf^^RZwH(B5YzocuOdNM4s9~XeS2Z9mc{q#so*S5o!R00J!&FV+6iROs>C*O)L&ar z-c+1yj{?r3?7AfrT`_R$43dWS2@X{4OVu1z^|(R!`y$yupfzr6Z`;Df_kn6yLrbq? z+4DID+;u8WJzPZj!5IR#gi;_ko=4jCfnH|l)0yR z5a@-*EvRmklYpEvYwI;cLh&jO@vMup6y3ZtOw^q`nD%FH;qP_&K-^T=eIAhf?LfA0 zlx7a>iTthv1e&1CJ~IQFclY2M$*{8mJ6Jj)+N!!*8^PJ6i=)5qa*&mhjp(VD9h9%` zF;zXTvJcoAFcR&iM(XL$KyR{bAzbKX#-~YWryRmIY?40thrisDuBpM&`(?HJZR_N( z%i!f%vRyuBJK!n*Rm+27epry6-u&-XNoLKBK#rB5Zaz` zK|%z1)sREC83K3n)g>jdBTB^r1;=&e&AnRwJ4fbcwq}dr>51J6#n$HWI?u6n7?_x@ z#Al#E1UD66%(65buIi544u?}#_}9hMUSp~=c{|Z@rU9GXxmq008?!`Lu?S4-(773x zj?QK{+qLH@H+5j0HfQ%{u-UAnVG__Iq0n07(NP(DwT1%kLF{U4j5`GxooLAU&bu&W zMsaa}xw|`K#c5ulgTmQ9A6+yt?}`$48_LOPVW~m_*ghUPbrTnmSMU0m06CONxhGkq z(C~W{;d;{7m0GtCc^4cR-S&<-EC=D)NAL7v&%j49&j#IPi&IlDH&DLr(CZBf!z-4Y ze7p-5jqlu$=5aYjn;ip8XYWX1yJ5GtkM_op&t)^@X}!E2icJX>3ZweQH)3l7v-IeD zf|6k)Zr|4$F36Ao234YV4OfL;E;sb)2WH0yvDJMV3XGLOapGtn4OM2x&r1jzSWn&O z^BVeW-W?fo3BiS4-5lqtCh)qFmes8tKf7M9rq@lSFE^E`7AkXvKlcfAY41QF7~qB$ ze)TK3o_;v^{`K7Z#NY}6t}-2D_hBcVS=JJDEr_s%$km4Ev4KCFg|3s*$G*0trl&1; zTrSc6k{)3DEgY3E+75<@JDR)7h1m!KCItHwSu*L&F8Bl|!Pc7v`qAs}@qyLq2$&Bd z=71M;ksPbqgQ8IMPBeR*>H{2k!Lzl8kc&IvPG=S@r`#P3Px)ohuo){qmaAnF^YPM^ zZWs88G78&yQw)Cm?Q*311s&WM`7u}w2hm&7s+~sYt=+lucVm@pSJ=?MNdS0c(4y|XCDGnvThzH8c&g6t$)*HG%sHCPJ zPZ9zK&dactjy!p;2Xt6%O)@wWVw5}j9}m9&HXivI<@O)8u>ZRLE}yosTli6i>RdPh zEWdsLw++&s6S(eD4T6<^XhZkh6ZlLFAeagL)X&zlo;64FG*yFe^P_EQkUj4=P0IfR5tx zWBmFQ|EmP%a#Wr=b7+o3rG7y^qUcnb`Wnalifev0CV_A88D|R5^rtjaz!R)K%6&w# zzrBGFKL->A;Nmw==*&lB{C%s*zeD0a-(x|34j#UA4?aSFzeBlvwhxp!_v(W$fG|^q z_hfOqOW7LYHQDY&T?)u#T>MfHSj2*Jc_Y_Zr{EORBV-M>0HE0SCrGK?ppYw8;~T#2XPp$YUnwA18m8nOK`P zn-SGIXIO_*JxsEuEh-NnC+R{DL zQ}2^{WmV4NoGg|VTO`ATpJH*vc~D8!ONl0KodJE|!3P78lSUl5f}{$n*(DPRwEyD` zIaMyS0g{DQmO!h;{DZDw2cXUj%I&aifWzC#ghsUTk>!>Y%xDYfaqLt3bcTI3yQvjw z$Dbq@M1~srZ|#H6?g4xM0E+NLqw+8VeH%N|!wkw25I1M}ZKq`boz#2JbmctOo>H^cuG}9A)T_6I=lqIs z_hnIk+ME!_k*D7!8NUY^|0bh3{wbsRHOl(is&-&Va4eob;h7x_RKnvSM$$&Vt69@Vgi2FiHbO^a*3 zL3YbtoLa#E9f|Y1FnUrKz{K}ULF#uNPoy4FkjyYm2%bt_h3wdVdt|iKSV#RxKfUK~ zFCErJnF#@50xFG(RPgnhI|=UgT+_X}-}^9!nr#K)*X7O;1NBj4j+e9S+YN-%`@@5pdZe_9`YEP8&K;r?&ehtK8VeK3!}S^#j6=Tzo-4ZTkI z^Xr8FRAPQhdb#~-efV*C0E))9==m=YCV=Yw9H#M{NXJdk!q^Cm;UH?Lt2u<}_Q$&N zoHt2d7ZxZ8f4Q*yn|0-7T>3W)3#==@9Cv@6cE4g|==At91oqvok+ge+araXq^ik8C z>NM^bcj0l{ZT+S$%pzpCNo62&NmHhvsX>Y67Oj7G3Jg{%`ybkaA@x+puvWh+Vs8=P8EPyW*t|SoN zFSgP)x5J2;__ydUHwHw4%VZ?%sDGz zhT_W}leH7%=plEo&AQ774-a#EFdQ*I3hnir`;E$g`V$hUK?@jcLPZT4X)JB9(!5ik z-p1W8kI_eW6#=vb^KaMC&V5`f9t3Yd*j^OtBlxuoa+zRm1g=o<$$yPZl-? z3MqgnpoY5m@VQ`2U7LJzqtAB4?eNoPPx#K7DWVCs-wQbc%_~@8rfp({5b_xjA8pYmioP0i?7Xi12})COY=i57Zct>4{EV(UIIVhuxg;tr0F z!1Yh^vE3Q51#Cyki)$q5mOh1wy?;M})wJB)`CU9h`V7ng?vQTZ2c(hYOmLG=2FceV z5YBff8E$)jOa8Z=`u|u8{@i^1+s;9E&z+?!dri$v|T1`~z1O z0LWiY{NIYh|Fsi8{`JKFte)UFy#8-F@jnmzFHcqIKG)n2Xx>jJ{>P{P|CyZ&X3{Sw zekf@nM;B;v&jUa5-*w`D9{52U21x^t|NRsH^T3aMwpaes6MsQrAcNtl2h8T=^&SQa zJd7)D!15t;5(8&AN)G>G&HtRD|MnP6IcLQ=8P2({`s<1b&m#p@FNokB&ymRs zppf2PI~+8?&=iw0uhTMbLU37hp-)@sc5lO6EJk4?SjM$@nB_?O%c1w?B9cnpy6QxY zG^cSAq+{AnpukB4K>;+9T7~zzG5Y=e#;h65qPa!Z$cG55y6({5460Uh>K4zieqK^T z(jP>pm+1{dnl`*r{x|(M->)BkTRYg>b8x){UK0SM z;7qLRRL2J3q+lN`1B1+x%{or_X^QjKF}#1t4*AwGoJr^Hya&vgDgeD-Wj*0=5>352 zVPD*kP+bMk1vs>j2-HM5^$|R+!pGgf0S4a57PuTg_?a{8weX31e&C>@`tlFoY?e|E z3Qjh-LttO_5fYWuPKk)1T7~h=J*p=#ntz`CpiJC z9N)eyJntHze_4s{f2>3iII4Ow^)CO+WYvMp`p|hr)_uFz;9h(1 z_vWP~{V?|b(vSqGooBDt*!)V3`L#TKe*L35oiG-r>MW%wLyk^vv_!#wM9T$&*0frl z61^6c?WRftRh+r~%_*}8>Yei)-~~+x!7t<>r$fB;gwW$5#;V-)r7kpTsxC_OIMD(O zuy_rT^Fx;QE=)GI@|oMYBFC{SkJ21Ka0;p>C&|XgNP_NHt~JtgQ)h9Pj3mr5*f~+z zd3~34zF7#8L}1ANe1i0HaL!=IgEvwVz5~?`z$N4oCVLHcgZ7qmvVCzCcjj^9>GSfo z(fOe)IFK??vXS`K;6bdGa@dKWC6b}935L+2n*^_|!%db3S1Ta);w`-kBQZ8tLoS{0 zCNfc>S>0jpkn$O$`Kx_%mN6_;Q^qqJ_YoV&ph4z&H@M-2tcs8Fbj?3tBzFJpTjBQ!Wh2$Rb$EGI6j z)pX@M5mS+Hr)eqQ*(R0t$yDBeyW@Tdy9F`%=`J;|>kiIXu!_`AKi?jUL8APOP6+^E z^D)#zm{%@}iGk3yHQD5BPm(jOjMo(Ln8C;wgymgP_nS3QvOAN!6vKSD4R*;NS-Gx)=+<;&g+M8I517SG#r2*gL(Bt zDe)GJ^!IX4gxT32tO?PU(6i>^jtAG!AnO;bHN6&`X&r?vs7V;n)BUvZ=MlBQa=Qq; zHHdBQSLl4stJ84O*V`c(J*L&dVxb`;A3$x}wOFXTdr<&Qlr_ipjI z!+iggaoHxiXYk7QWvPzx?fQTO&x$U~3$&pIf7}W){Fb zQpI#H29tOx{iN@IQC2^`G-JM%)&C9K;&WGgW@P+!TZB6F%Z~QvZSlD)BA?r$ZI6K7 zdCsyJcAmc630P-&ZjK-13>{6>ucsC;urO?e&$xGZW(s^R`N&78z}K+R*CsQ6%GIEG z3smgCgqA$tKah35Me#o0z*jTtf8+fF`v7G3($r_F-tWqafAjvmLQ0->#dl@J|Kj@x z<;1r)@K5jG34l<)Ped^rr)hVHJ+vi2H3sl^07_rnFH@oB?aQ7c6=_j}en_dA+-UOd4EdCPqg}>>>-GU4UL*(g+;LY`TF#G~UU#pn8 z+@<$Dg?A0 zlEkBk&1ga2UUg`OBjjP+n+)U?IcdllhahZ;JL=RA!4dn~gA?4NIfK_TOMtPB-!!#pZ$4R9)x-8JJKyfcXC` zGWgQ=JwEY*%-e_wh=Bbw?bhP=#nYDsg*bOhp#P$SIVr~Fr+%#u=rT2W*EoH7)VBvM z-=)0iGq(`dM|*@m#q^eCm`>030`_?$(3;yHY-Ye#{Q^Xc;REuGy($~_$iA)WphKEo z$0`}(q9KoQsG(MU`qhC(4K`V3=`8iNj{7JtC0A!emO|^#J`m_*g@-`e(K~fBu#1Z&yB@C|ksUCt zAzXcTk&1(iX$!7pmf%6yqcCKK<%gk($Z^9kaR#zP1f1G*`+nn)XmtV(9=NTk4m5E4 z3qCEkXt~Vk5Jl&1dG*hL_bYNda5`g6fC%Z9J-o~Hx;sy`!Hd#qM9%Y^n99wyiFk8b z=;6AL-3-nlt#6I&Z@JIC6 zowt+@iZE#j`L^`#Vq#(m14d~Nqd$S)u6-c-q~|ujSVM^TgK7t{m2GN_UeLQLmc;DP za}V2C$datGrL2Sn(P{hRscMs(zdH9^Uj`^=D%WW36tc*SXs|vXAxsd7;K{lUrn~d) z!dQ%U$I<0{=T9jCgv)xJw)ZNtqe~{?w?%6>#pPr=*^*CgXZ5g~G43W6(YnMEkQ3gI4hSM<`w+VGs>@6(gU1$gMsjD=U(ZI{~u6_F(4%CWhp$yTe-AXif0A4kw^;0)SQWI#hs02}_!Mr(rji*C#%> zW_rb5SNWEN@Q$6?-cGWnc^de#?YeJ?^OuD zW0K&IgL?$ra2q3P@B=V2#^ptou|Ro%zWHqD5!P{R252SJdjMjzZfDv+K1`oMK9?zbdQ}~FCRE3Q(M=Y9>W{66 z(AMe(FI(YjFF3CAu#QIm+%9itH`r+%X5U0Xor82tWbPj9>4mqTE(8#&`nc>}FE_8l zuJd_NEjZf^vfg#uGfMN?RfK%l@c_xxhM-#6%^4R4ad~J{A-ih}1*{JsfgyJxQKbue z1yG-V-(FWJM4?%^c*u5?m?J|s>u6~89cqdPQ{T0a?-J+bQmc~sjJo$Ik9c^Vvd&G0 zA+pCr*?_XyT?!{J7|;mdh0&76YqTS90=c@i0rT-oO6iyoDa+fV_LZxhE-nyqRH!AP zgj;HRx`B7wZsEn3h2^J^F$%8ft49&oWwj!1TD*C>UcL)#|J5O5IRh%^WqTo6bEXb5 z3&0l6K8Ykbf`D-UB?W>;NW-5#&jo3!$YIbz7g#KGov#SfrG%mE${ErG-)<@Lc3E@GZ+!r z%=V~fFahZdcggwsg|xl9J{HJ%X@bUP4DE-rz0YACh6Jk)GfrYbCOFxdZ zMoBggeKvE*>!_UDcFGlAMA=nutCh>#{7^x_6V30*xN_vtb*95HZGbAPlwO+qgJ+WG zBqSE7K)PJ(G8kh6Y4~tD8KXNHiZidy^2v2fb0Eh4crFpT^`*rYr`Ng5_5)tty-g4u z?&D4=n#UdLn;F1G5g{)Cvgup<2R2^~jJF{G6B|Iq@6pX9-4D|gKUxm4jhdT9VsC7L zV`IQI817Y$;6Ob7^njhB$;O&Zu;w_xruNk$HH}v989Rj(mQL5nCvTvIlZUc%`3x#vF4__mkK&`=CJFXbxXQMxCOT=a7j;e zOwJ3OTW84Ss2;}y9fwM*Z%SJ?@Eo&X;e5n04l*m+hY`23vWH}Sjqjs(4L}RGpG$o* z)2rxRqP*A3g|%}Yhl_)Vn&bFwG(>@--&OOP9P!{WwpF$b>M=H{3m$J>YAq2LRcZ{v zw6B&dxQnsoF^Ed`*0J8jxAU}@YoyttLm!8dU7@n|x zK0)9+^6QkP({_-JRn=tK6qnA*N)3W$@n!>o>zieI+!MKJ3Z{f%7igKB2~Qgv8xMFC zl)kfGI9=w%ik@{Pd^n^63z;d@&e{M2nv3O1w=OOccN-$M z(PohDCD#rKZ`rEv50xiwmuFd7XTTWd?lUTtyY!gm=hIT-gx(D8+D}Z5fF#^d6WbyS z{B`7+O05!kC0Bx&U9TA&7XU%mT69}KaQ)0U57J+623>|x4Po)94ylsNVaHk-SMHm} zSpmp^_KGWblPFqgq&_Th2vpEXe3E^{L3ecmNJ+Y>@cS~k4|up~^&89pS30njv+Kq- zJZ!bQpp%lK_eT#>`Bdzs?8A5T@WJ5wc6xephF{ynm*W%jtK-x31F!^)_}tqMk0qHh za)TtD01x#Uc9(D6 zek$iJVV%%1Y z)an5h4O!m<_b(K8Gl_3q@|x5?_2Lj^{L7W=ud7z{?0;3CS{>@wCUMID;mq@NNPZp= zz_OhqZw|@zuM8ny+A{Amfa06I@+qKxGTea{1T6R0+}(Tu%|T%KY|keExBxf#Q(Fn6 za>mA#H|PCe*c{<4 ziUwVBOZ?m^P=PP3=&YT4oJbk0HT;@Lb0ZJ(S;%ee8zVY{?Lq{Sv*oJ!AvgsZAv{u@J+Yv`89p$W5FfGk=VJ~|Y zqj4`V&?CR>G(;uHsV&X=!d`#UhCn75I$x3UC-Dt#7 zSth3qFNVBuTJHq2Vb^x2)5n| zMIK;_dNd1a2|CNwGKNyjJ1^Aprq$Xk&cua6;!S0=INlTM6$^hRy{p3aR|5M^3PNsl4cnIR?4sX?fa>~ z-;Baf4qgWi_q=?-rM|n+i3je znf&-f-clz1(`WJvPVZ9{^H#8>uY!$!$zoELTyBmI?Ckuh)B6XPiH|!*Iy6*S4{KTS zZo~=>F=AchL#t<(<^14Hp(+U_5TP4lwND55|3e{mJ?CPJ;jCw?Of@h)8A#o8cLa*h z)t*lEZWDqZnLMVQR6)YjS~wchM0ix-CE1NZz+AW0YLA(9A;GVf%ScxhA4--*@kcbA|BNlj^kxOfK_KgybHo zlBHhkyG1rK$xJJAJ%e!3k33@E+(bP<4ey@pZn{!%`6C+X>nb?c%QXae>nj+8s@*w) zZoOVD%}WZwm78X1neN^IVu)Z#s!BM~@oq0Q2>KhTD6>TORA?=B1PwSOT3w-~w_9`j z2*<8jjSZYQ@ShqjhBTYAr|=j$H9xYM+Zx3yi}H@J-tn{#l_6O1S~6DE4z zSe7G1Z@{6|Bo;Oc9e5za^&=dF-w)CN*$t>g5O$qjH4 zmRi08O0pkj4sEAp$H#COhSPiruQsv={TB#ZKUApyJa~aG$i4D<}{xCEi|~#1)(RPg56~U@ZWB`N-ehuwgE2K zF%h>0w}85zC1{D4gcBUrPVMTjbRvRqi9tZMu|#Iwyj7{~px0TIHSI|6-0eD-(iR%Q z8`#@U6t}dr{aUcRaFdFw?Ub7TA9e4trl`JkefGVI-RG&|AfPk_OM4%$1otbFIDK@9os;tV|=)P(vs4Kj#>~alPC{NYpCmEFYTYp6vVhz?raO zax$(dRze&l*MhDj&)Z;UmzQ=Y)WY-_d1{oJPIX_>L<%g)Q>3lwuDpkf*uK9Y>27## zjWl$#Z2u0r$+a5ZS>1{du1_yuE>@+}Nj!1XpxgO8WX@i>7jsPx^_|^y01h2)2jB2Z zVK4*&lCEBT&`>bb7v$%r1`fD?R_|?MXF}7%5Nl)?piCkIoNdjh@;t_t=sk^4&L@2?9`e(W0erDFwT;FN(R1WAJp z7Gk&0p~JW)y3Kwm*<_C+ikNM%BvpM)aCq$-B;fy zwG_car&@@Aan8m_5E#Ojk(DN8kDS(2@`5aG|3O9Y$E53j5g5k&+#&oRzWV&*KeY@; z?!6^~xVkTOvI31YV!nWGx$c8sKW1<1GbjeQUrtWHBxL@o82HQW0OOkM(0+jVo zea(S1sr>xX#0j1qFOlqnBdUw?H09K8ztut|I{K|O(BdfsIa$>EyS z={8+_A>x*X&tN8+<&bQ>G%GsX@1O?;qkfY#XsOP`@{}M+K#eoXnT&_qiog@pg5=I+ z$87OJx5Ef6t{g`jGp9O47t&4S1Dv&a$@F6q0+KWD6!cC85N?x{==+1#kOTq3e4_#l zVbjhvUJtVeDvnG1ie!|kcRC3%^Fpn;EL#-MXDfCPmDYsRWjD?)0HH9m)9{Ocz`eog z({sXHNtR`LY;b9gI&f9MxTa!FDcE_*{$=YFYIL$9pS}Igd%C7%MoicqpAscD#x8|8 z>|RN*D7~&G_DIp!h$Ec~8;`GxaLTjDf2H~TDN)8z`F)sd%+k<|`-t1zITP#W5G%5bos=H}F?z4xwy10OWtexU^Jli*?XS+<|l*4tE+v-n< zT^UV@OgfOk#Bo1zd~(^y=vk|GWYouE8AW4CR=}7JoBQczUYYDfH<<}EnIjHf33NaX zLR2NJB-9I{qUFx^@{8=e5{P!_cROkW^a~4YbF5c$HAKC{;tHsaCvg{h?P#1a?iyV| zji)E)CRt9XAY_Qkbh;#Yq|Myu-JLKVgb3FXZpDbr;;M@_MD#TdA-`b@;%lo@4kubxZa#hdce-PWvqndBOf4 z7J?tTlXo=X#R6g9=K2u&Z}Y78rVf;q>|1^67C(X%A>^x!KvfQsB;i8=_zPt5^J|;0 zFMdh0$`>34Ntlg&Sjs-7S-;#?uo}=$Uef3I3XClvp%R(=>dy`k*Wb|PkBFr7%f)QN z9l{ax_>EC;dOwBl&!G70Yf$@t`r0OZUlD&`yJXW{htuNk>#6ptqL!uDI?aXYa!7Z# zQukJ>@bm6;f{|*XX#Hp-0%VYenG0r5z?r;49WSwX!qt;zqy?s( zX!?ThuF!_D)VTIeD#aRi7L*O-Ucq6EiIFyFwq#jX4#e34!gIOz58uRB@R!Q8eLbi1 zMcm<|3P7B6DIbtb60~PDR2MF{sDLWWbO8;pZw{U#$h_ys8}{!0I#8U|kAYPn%CNgCyaBerzlxPP+tAF*b6ceeh{UCOapc~tay9JAzWCHYk+O&eH&aD;9{UyK+4+ag-mGRN6?ED zl3V3J0c|<{b$EaMbZFjc3?689gBqYoOV757x)vp>7p*>$glTH`ThF)`64Lw_reM9bohWO1 z*$?ieI-s=RSwkHM9c%B)B&d2ymd_muamxww6nLzU6H#U4!N1}(SJM8?leuSc0|0`t z(t-?;@H48EMTFwyaiH!tNUul?eIyvL`Ya5!4l54B-vjev3o;dj?#yiEQ1KThVr{3{ zo@f5~lr~2WqBj;`&bY~NgA#u1+X&UK5MCh?gWY=Pd+U*t_&@yzX^sZ5~x;`}iBk$_>@!(_~(ww+6cUrAElms9att;0ly zUKE@$8QXUlQtnY2lBhMIzLauvA1)g$wC{_;EddGuomQjKV{*kVIYi$f^yxJxm*6p6 z$?B$XEJ5ff^Tg3mbjEnAF--1V}vZAcpuUx)DZ{=Vbktr|PzF^%!Sw)cxb)3~ar zes*|HQG3l!ead+DGF%FNs92+S3y2b*pui>aRm_T)1AC*DX7@7Z6l|Sv~e>w4q(oV#b3`5wtQ+? zh+aV8z%j?-G1duh0r6I!bHJteB7Cc&ttazkUHA<+ss^baBQrzB9-bu-1qg156 zRnPiP_u0F?v*EKL?1}lzxU&KcqJ=WDs<>}6sCb;q)07?@1CyxIj-6#ot9|c+wJzJ% zgDO;;rnmR|punE>LAvg2k|+iZDG#|O^j13^1irs=2Q2Thb_9Oc6wyzGNF|+Ng4c0A z`VdZA-g9dA#J3jOu2!3j2NXnu!-JC_RU+R+fxe1G1G(QVaB z7RZcx+As2A&jFEil1xmzebB|R%_;RTvdOTM0*A3pwopMJKp%&_cfUo*Q*%ec7s3Z+ z9BcAqD8%1pfXZuJxAFgdZyrDNE&tSr2>bV-hxwkKY#vl@>%&97?9glhs4G6#kK}j$ zTOQQaKj^#Psh$G(;@z);bp(C4YJ08VRG=ynG-&F{AJ1$cntqcssaIfsOyIwP@!xKm zb@Lvaft`l@IJ2$yj~hYPuz(8%_rWXw<4^vlAH4aepZs6+6L4DEb|-$O`<4tF;o&{| zy9^!{Wv-$cISP~3A#oL(0GPiUr+wwk44^0@%7NHPv$ym-E?W>&KBZbw4kw5qyq)JL z1-P;l*yrP549)325XHl~+|t`gVx(bI>R9nlTc3U{3k-+X@Uac!I%8=whw~6EsgJ7# zL``>ttV?w7xxG4}+`wRZG-@=C#@J1zb0$8sVK0awPUw(LD|&*jh;YE>I^i7WtZY_k^a<)bB@y73Bu%`nK=9c=q zV_XW*PrNfp*oKq{XefX+CceIn@X{M}(>I^xiE0cU%;6384Qm*5zuo#b8|bebj6Q#k zI@|p6p?*6Vc-y_Ekh}xScYyR3*O%%k@7T9Ot%CORRB{9=umCA!UK;~2r;14XLDuQ&l5zcolAiTM2OZFAqEeU$6#NF!JRE{u6($#!ut-daF_@n0Z(%vqyYvv zaEIWz1G)(CD&8lJ46r<4;)DFWOY>W6>z|yh-;Vhkmc2sDg53j?ZuYsi8x+Z)RB@&{ z+>68)WRU(GsqsZ{g}#g>+w=wQ2}aBL?y$V*Y9rJ{GP+qJ%6t6^3&+)}x(@UuOe-*5 z4Ofw!c8+B~tZoq2;zqDHn&tE435lv{MJ0gQ!*#ZO$RuHU+my$pD}e{Sb7k=Pqt`xp z=H)1);f+yE1YE6a#U2*i!-hk|_*SPgxN(b=|ud8w%!-<-@{d1E!=)pW` zw4cm@y}lYn9|5-OkNh>K)!H~rUM^8Ew50Lf2&S0)aqqX--ORuj(N7QTL1iFR&binE z*v2NstCz}O{BFHsgNE%8{?zOcoy?O_x9s&+s~KXlb4IOn4w@fz-$NRNdTmkESYoTs#&>&+Sdc@$GpJ|jcu)Mj=a|dD>H?Ibe>KU!xaRSQ zyLU^`@(;ol>Ad4A~`TmW}WZzWVkvS@L8bC{-2i>`At&ch zf7UtRm>=~9zA1;=29JVyz~86v;}Pf({rNd}hT66OcY*vSdwPpIHP|k~sHVihy#_8f z7|rm2kbJKkKW~GQ{!4^;2_yzrdzqh)P&%%ye)TPw6`AQtf|y1a7QJ<)V49-94nDgxf1gEg zJ$^pr#yNuE1fJ%Pcb2*f#i|9k!nn_5H@J$xd?isv1jm-7cK-dCJUe>51Y#<{Rc3qaKoiJUHm&xx6BO(eVk z(MqOO;bym;CKH##7#Q)ftPG#;I5Tg$VgspPBDNz;emn(@HH!QIBl-rbwFM6z)yVK=7fHo;ngQFnb+jHk?M#o)(as#Pa)Udr;oQV_G z-EO-Ae|9^M32elL#-YDR%an{KLey*Xfl)U*f;|F+y&KxwZ5!XE*f6>-v*j}%^ zC$-&zBytQ-X>_~n1DgkR%&YgoYGBblf)ni=6zu?z__!mPrZnj*Uc20KiA4-yfZY_Y zk=)|J{sMOPX?iW@276Tr5uZ=`eWv^p3&0%*Mgno@P>WJPgL*K>xx*KKPaYNoe=!e3 zObx7yrzhg7L*+fPXuK*o5b3gFvw%D9!lpQ>!1AM*4ShLL$v7E+tIXO0!U~f?CW<3- zLI92#arktB8MkKId8ieS>@dT9jUlopwK*d;pgaNc=(~TD+3-Cz_S4t#b8Pd);sb|u z`koEREYJV!-$rb^=XWO@k?I5T;A99dastOZ#ll>^()fde0Lm?!C14f=v_bdRfAH7$ zKe7}uv(xbSy}Epjox{<{^R6IIoRDIOYfv zP)M%=LsJ1&w0)-vrm`L7E(}0Q?}Emxn31>)-Hqk9B7|DvDY(#|5J+%iwUueH*IwM$ zXWN7+70;AhiSJt@(N7nVL5rz4Fu7eXBZhh|A``@;x=BJK(;JP3@pW2k)2@4}BOLlV z8@FznaAxYeT6%{w(%lo#nbC{{*vb@dd0sd_=S$t`fY@Sph((=PUuN4JqI$1NZ1X;e zI8Ma#f$YK6IA1+6XgEle5s;Hs=%J>?ii!b#mDc!q3g=GWFMIvLiX%8xlG_2|rY%){ z2pcBKi~gQhG7N8z@Db;`ZF0KRlP>5XhFH%d37oh>=4RnE%7c3EbAc0w_ORz_Wp`+_ z%RADtpJi;lpEfHi13vljGE5!4xf7;yEYq*fvnU5R-0qlu(Q8QjJB|j3SIx>YQ~)3( zTqQFxADx{_?Q8gqM;xeC#ZBGufH#2144jXX47{1H3kuo?MjQ8A{DN~V!-45~k|ryM z2)zA16^DZ{m%;e(PZZSmi>?tk!W`V(N;hZme$?UxJZBKr*Hzwr1t*f%-3K%Ey34iV zQhcX2NzR|H;>2AcqBn*uB2E_4a+ni7h`>4fcMG~tZNk64HJNX!=G&_S0)_vexBSP> z(uN5a>wG6=f)=gTF{Jhq+kp7SpAT_gon`;)eChuOo#hXTH%I!Wm4HB8AVv*WASb~} z?ak`6KQtDgulU^SeeL<)9VU2pG#CkO^uID2wy@~?xbb}(blksvUH-1&-u$;6_un<# zoBy`seh>cs^s)fl^6y?3xX%8^UvL5j0Ay|+h?JbvNb180T@T}bLt`-qdH(hjf2Qw{t zxWgiQKOfr{G0K*Uj+Ztp;c(ZoGMQVC(?IezStyg&E*9RTCb!eEO`s^))i8*4&OqEP zgAnAtTOR^U4N;EQ0Z!T$aGK1{&8|Fk4=#mKoPFK3kI64mBqVQ7S=>pbKt_?lZqSs4 zkxb;$Tx{wVu4y!JL6!UXkZn}e;6%#6u^2)huV`_4$k|n(YLLdBFG;b85=i@}>11Ux zBtGitVdF>yoSUNC>C&7;&U`iCsEMB?o7ka`nDp6CBnA-f_{o7Jbxb7WXbXN5co$Rq z#Kd`J+|7O5##cy0(>4-1-rXCm-c_uww-S)QXQmXx2FEd)4|(s^z|l`3qL;rlF_p2X zvq8Srl<0t$6~#9&I_gnL$=WSV;>~#`u3)O^U!ciq=tG5WPk5AV<1jA!AfN3_XN9sS z?^NurQuLBs+%BGtyn7V)X{!^!HmzYuON^*!3meH<>ctG>%wRfN>~DtV=RKzG@)v*> zUzt4<>JdM9^R%~03UWzPBt?!b&@Ts*aBOB~8mwWOb9-czZ1W1loef2+z(mc)*6?P* zURts5vaAPp1m8D_I-}8cYezco!$t49Zy1oH<6c#_JOsq8unH}g()bI^kU~Zr*zy4Q z`6pD6_Knl|h3TZY`|~ahlN0i7*NwQl_eKZMLGE|~p8)yU2^Fj?1u$-e5L5fN|KQ{M zpCa2oZMK8%v-=_N=7ULWdF~HW!Mk%V0VgLZKzKMbAa$)Eq8z{13d}3b6b`d+&i4R! z2nb=0g%c|z0ep2-n;%-L>921r=i>*O?=4zz9nJ-vSaHX+RVE>e0`dkwkuKoav`zPY z9{p_3zV3{5)ba>~n)?f;N}uq>nfelrft=#&@CuCGHh`$?pUi5IO3~f zuD;yZcqlysZVr`+e6DOv91BU}ECh?@4U&3mF0H6r^s8aJ3)%xA30e&cos;=AkFixI zMB>X!hmCv{JD$J!x;K0;VuJthdY1^?)PAwYYr(a zH_v(9pOmt$YtlAkux71~<>+)9X!wIYsGA|X5ge3>AhMuu?)pZ<)YdXv5C)&b*hWDf z2PU#>weJC+k)L+)D={<@B9*o1=5*~N-7Ve|lHYR0Uz_nrrt!4r?20!-a)IRdnVQTA zt!XC?T^1XfspNJ&5QX`6oQviYrW11u4Wp*CtwkDu5xW{oNivzZEJU_DvWYHsJG1zg~y$qz^b%e<#7i zB;qYaYkvAWXsi9gaIXf-tUOgb~w zcuKt_&kfVSY3Rve#Fo3xtIYPMi?9GkVvN>M@$w~)keTNN9oZZt6k3A_(pCW5Qz4E| zK(KIITxEw+ujtc+Xj$ZWf=Ds%nJ}dK+Fb+Ta5>TaxnW^~XVtHTPe4$ULz4$2Zyk^& zqMA5;Hm3t$(1&I{V+<~`3@8c4A=)Hbwnuh{&ZTV|wrQ4PdYM?lAedW#Qgbb~^ove| z=6t%l_h$^K`tBCjkW_cR@8(?QcQ(G&v~dxxrB-e9gW@YM(Hi*Sbt;&#kMnze5SW^A zC<52P+DM@4Il4Y~Sz=A=d1iawIMki(2w-Zwt>p3kU6}iS7P`nkZ<%>Fg9V@&=#AO1 zt}x2Lb|q3Y{`Iu?SLh-a5I9cZ$>ZYtcmA3P$oX}hBb&%%nKFWFi~+;%zM1r*Rly9}i zEE=U%@gr#Hyp6sWLyA8YJEv#}(OFfAbWzx8)%z{V66u9lPUe{dwq+#1oTe@=AY6$H ze8-K(DZ%#?6~i;=JwoJ-^G1cWpL2rv#W*=Tba8xOt;_ZvnnbP)DD691lNWeSF*BHc zUup_}1aJs3VxUB*mih^)lFD(a)-9c__}^7&AQpB>4)3l1wKDyWfsFk2U8nmWI39nf z)5ZT*omL#synWSaNdS`Id&=i~K$c})AZ0Y+gXy6f0&^c6F<zv;B z!N2~|Kh|wX+WiTFNd0GZd;hbF_p5FLoByK*e=pqsShsEWC4aGNkMsP-Hon(J6_8`o zjVF4=O{9Rt25v~-TfbeW;0p2rUE|kfs`}|4{VvhtUB@^7RLK9k1{|L8Db3-jHtyN2jR=M>ig4)TjN|@SZ z%SBm*>E`gl`3z+T0ew}CWQlnYu>Du*)>e6c{#`PH?=u90HNXgXpkF;b9 z00%9%tkfTX{Nd}12IM|9zY78UeDt!@lTG08WV?&>sA}S2l7k}0J%e6NogFv z7xMomJQsFzzwq~@m!@S11QfIAEa6QPA0Ywt|0- z2C8vi8-W5(Abm++0tGlR0@7$=Sk;F#;n+rQZX|#fZS($f^5zJE@#+ z3EVmy(j;OMUd10;do610xog<~%&`uo*H*0DBs@snF`#{RQHZpYn} z-{by&ucCi%!~bc}%kSQnwBfsi;Eyf%R&=zWFOK{oniZ|F+C;eysCYz_9K<+FPXQ&kf`hiE9<(Sz8}t>5J%5wT9U zqWy!MpR^QQ$6GO6E4h-q3H(|H%DUD4GOFHu$!a#v6W`KH{Z+6%K7@N2Ye6`HECQ5Eq4EY>))G9?j%bF;R?GrR!0 zo2Gg5Olk}x(L13lY;afXX%=%mQEP)&#*i=qsrW1m`ulDu>4(5>I<0m+9rBU(_q>O- zbd6W;O+oil-b}OL-XoVy1=8g_=b9sbx!iQw zV7KdX3`F4VeJ*M?wj6GG@J;^JyR)kPyd5K=j?VKVfw7SszQDJVKoFIHUiC)OA#R6N z0|o+t?zbD%xUdPcoHL9Kblv=l$XNffBWZ!?QZ$Pf9Z<0`ZHKFZ?OTz9gecCepTnuU zr-@7K+tY=m=wbzU`r;?3pKrDE{6e<= zX&~@4*vavt*1*2Wrb9E-yo)`&t#kv~Eo)bt-rG6-cP0OjB;cKMx)GS5Uy88&R{fwn z|6aG@5C2%Yowu-|u)o{kV1O$^E7SHDfHFa3>JN6f4<|8zo&If#^0uRYX%ZTZ!-U6& zTFJAP2;izeq}TC03q#INmDjiAIv#j1@BKU2r9B5(n++Vx!h6zBx_BPxexlsuOQOfZP9l)x{778Hc|tPHseN{GaCiHN)-ZZhgtwsu z2Cl+$cWs5$O>ptNvr@JX^kNEE5;*WTIEtLjn$I`S3nnTTtZou&+QIKg(c$`mySD=m z(ldSvV7>N2uSal7Z=>TV(;bVX@8yOGg!7)upv#Lv3ln2*&xnH3dlq? z42rzf@Ic=CSg4VZ*vm7iPHmm#fg^8dC@|iMd>)hggxk6+2nR^8hK$eK9V@d-OO~XHfPkwd(oSF}N}{Buk1U{@U8f zb$XEYaU8`GB zc;fi?aJ-eA-aWcl-bC_UlPZL&^DX_vwGIehgwg7Nw8}NPbj=xJDz5K-My|W7^^H z06$|(ud}%4@pM`l6B}L+(-UI>DC6u&e|dBoZZZTLka`-6LsvZgnW;7C=&Hq|^bJGbZUQ=C3b@vs&BLVr?~?`B3?PI8b47b*4vHEqyPFDxc@l|h_= z57(uFOGuGVY&Sk+eQo`%eK_&h1Iv-u8kb`crimO26%c2efgGD^WV*SaKnJbgg_;CO zg0$@8lwDf}v*##eOFHO0W`hR8l)}o7Q;bkJCUa9Hk`<6}j*q9{lsj8AXj4*2_a!uI zXB&vw|@xhHi zjQzQDgItiq3pl{P?U(+hvi(ID=2`vM&J7|Bz2SE8hHq8v-L!$@3_3K(wfgMZ%)hGI z=WTy{6u)+D@1_j~jqm>PKYSE_fP#K-z<~++-W7g_g3hd(JUtXKL1WJVIh#apJuHvN z2l!|95<@q<_T0)?3hcfiL}G_D#KMM_O!0M95PdG&nBk204WME&fL8XmE;hNQ^{nC`O1vN ziwty_Fs7fC#{&N-w->@HprqzE<}o8RdIDpAr+0S0H?o_ufCa5Nc*73!0QH^+?;8=@yKY`@^qP@%#ecu73ew4kqCwC zz6W!X=$SXhH0)>$vqHu8J)_GT8&PFMLhPp$hyaJG4B*kfOrSKES8#47>%jPnXG_yK z%-TUoc7o#8+74|@EE2Ia4}`~I_o#O^HDct39$&0f%(7RO@cO^D2ZfgTo?S_wdC(U{ z(s&?anLWP*Eq4%Cp^~USO#hB zlX2=Yj*)>xEu78xNDkseup#DL&MyJ0N;N&4afc%G^Vw_=eI@!D6lRb6 zPe=W4X1UMP`xbt$S4|$u2jlvn7x3&OT!XC}#Mu16)Y$;|6U=iTNd4af41UpM@&F6? z3RhV@3^T7KNkewc6Ht#61VI~ek5xA}n2D2&Q_l(pQOpH*r`y&#r?RE)ubD2ZskRls zM}P2O%b8))eX#A=0Bql446iz8$f|*{lRi*;o+zFC`0VQ0)E;sm)V+Obeac&>Vhc@SAom5Zdg(vL(!j`fwi? zL5JgxLMBhRGTVecvcwr|@-NiqP3;8j^TEoWcW2Neimnjsd=_YXqf+{-y*=(B9Wlol zN9Ht>dylGV{3t7N{ZIg+e+tAqR#Yn|B=N(%Vc_Kfc7nt~8XPGd8xAJn=F62%8-#q} z@`d2e#;Ns`W1t6MiS-+L4nd7fKEx6-R~BV}y=MBnVPzCarx-NS(yScnmGwb{!s&0&hflHkES+N9Hw@jSHnHL1y z!#M)L`(PC?j7z`_4NKcd&^t*$OrdJlqoTUuW}Qt5v^r!%QEb+|j+i+53->(e27&Hg zw_@uRLgrvdfzt6Q25{4%YDDXGHUGg__v10+>oWYWBgg&Wobiu?6c&A7j<4U>n{uSw zD@dP0UdJeD=T@%Pq030lK5-2^q(}tqZOXl8J zUtMc1xU=iF@{DJJ!>Eu38uSIp&*H70)UtSVY{ti@)r2Md8CLpOPnAh7jzKZ<*r;xS z3dc+s4|x`j0BJ0g8#!6VRTmJ6t&2sr0}Kcs#T(}IqtFuk$2P=hS2Q3-z$zVB+JWb9 z6Lr9EJKx~{0Av15s3T-Lo}jr(pBY5b8jurxctoOuM-XlJ zaTEu9;h#Pt|G~6zd@qWg=WjhL&mJA%#r(zzApPQ_tlqRh`32OO_p17|InI?Af|>~e zz9(6*swRUtt%e*+b%7toiNA={uv~D$J|2!iw-tWsd34Q}4 zs^ecMc!)8?-RM&%Zpu-=RatajGW|v0g(IYuL6k5S;LQ3dcl^~v_bY4ouNlGV)^xTC zUV7rupiGV(^C-uurI)fJ$-v0_RWmYH(39OAM-S2@EUwrTb`o=>Qecpj!SfMidVSt^ z+|Bfs$NdcJ4k=M(=AGj-`|3OW*W3orZl9$dAFxlqK`D2O0jiPg41DvjaR_bbDl@Gw z(LtUVvc5jRUaK&cRD_LgW%G8O?Gk7#rFOUPC&}b>W50^_t)fBEJgoF(uER#5Zp9`T zwplkRtiOL=y+&W}XIm5pc{amlnsUtX>tJ%m?3|h;>cddFVNWnSPc6Ie`B^oeryQt2 z$bs_ISq2`>wXUHHWuKw4<7@i~2IWWE*N4Id(hTQOC`ir(AHdL|KdcU(^d$8dN^ zFll}L?Tp|8&c%CD-bNuN~}0LBcA z5a0j+D3f;yegj0X7hQseRDg{TRsH3@hdyQnuT+uZpmv2V(K~bGr`ulFFX7mSDD?x? zSjj&KdEX%0&kFhVQ)gj4c%P4`cX-f!LH$m_JHMWtl7#H0RkN?Jjq;_A;#vGFlL=H* z&?vu2x#k7x^jp!YfooGxAnX8WE^nFJ9~?{@03Q9EEvpbPiV7W)My38Sj2gnl1Hk*d zU`wTt{Y7v(!MBmS1{G{fj?_#RR{;kf-9x%et+Qi&@*%tFTu!HZy zN8=E{j)7#2z-(*gdAB1uNNN3l!<87Gn%>(yYWPhvSK)tC?)q8 zpf=PU9R>z8^mtp!qsI|@ggsEkl{sqwC0B`q#Pxekpm}J!*41jQ(070W4A}|Sf`unh zxJ9Y>$Qr9m&X@^Zfwyr}b!r1)vD^jpY%j*B60O2zCc&6+jVT?~Qx&mtiKve|lN$4d zo+6=J4OmN`@nc=%c0+&_1H@~Rp@*9pVrNEzWg;SwJXt;*eYV$nu{pC-2OLZXA4!r) zIPeprh<24&EVn%s2Q2UhgpO6H?B6=WLU(5<=pFaf_T_u66RZ zFdYtJ;jb)23Veo;d@&OLe!KvD#P?_O+hs~G)F2~Do5U=OdF?3XQUb%WZ=XGX024o4 z=j_ArEf3NTFA-cWY@9+!L<*e2H-Hf)oSPq((_fb?pbK&)ay|~nU`a*SUcqK3a^N8qn#j2V zju2PmdVJDmd%yy6`=oJ3@POse$x}H$Tw^zI+Qq+8YjLUxmb<(p65G@Y0$C-H%eCLb z0f_*;T-4k(4RU1pn$TUcf(Vs39#JkOWoqwEaF$9>vjvn}DP`|&O=p7H0&t4J|)N4#|mxbO)^=m|X! z!`Y+{i)o{%_*BmlKNAkeFIk@XK`hqeG9bvP-^)Owb5a2>HQ-aq}z;nwu-?PQqQ0U<}A$RA+O z6r@8CM!l+@p`;uP2;v^aAuRbVL30>(yp2K>9XDXq$B{@@_gO-8V(2NVVqgHVc>$I? zfr1Sb70S8X6@2FyFtJtkVG0A;@*-r{(}@g|;sr{Y(ch&H1KmvNKnNA+1Ca0F?GoOBPuu}aTwkdne`*RK#JYcRpE@!T z4lk~^{zc{i?4Yvoj)LN0!dZ3U{9t`ox2b@~_$HrbHTwh2@S!>8Il=WX;Ld-ez5j4F z17+I>pZLeK*|)RS2cr<^JInie{mCi>8w!}HA*vBSJ1*rH>`#yOO-cN>hx@ShoXGZYcBv=y&%o4!WSv7sM|Y`<4Zqwuh^kswjx{RceO^TP= zs*0b&?pFEqT|(jiV8#O@MiO7F*;hxX3{!Aqk7IA*E~es9=yM zIH;un^n{U@xj)0C5d}L8x^@@BzNSieiZr~T&Nq{=(o3k)+5`u`6Qi4AN6m;a$td1! z7Q{93HPv@%w?|XtT0`c`)}L+2BvaFn%t>p$9(GSlBunYr_3C5L^P4#hIB5Sc)cG0c z`#cN%qljqLpA;jmY+kgAg5&)MEPlT`&Nj>ogWu*~`Ll-ZZH)-r7U5Ik51D(*S+neD zScDOj^00X>hoywZT~1sKGo4N;0lG}l*F!>9+y-FG7Udadb-ym)B{`y_Vgh1XOz!I~ z$qveylJQe@UeK}c*r@6+acJ%s{TZ~RcalAthDM@eX-KH3{EZ3LB-hFjPkEx&Q3RnK znU0U@zU#8>dZ&7cCip7L7`}7e^VOM8XF#G+)K03~#c$3lBqdFQv6|e|yF#L1m>>jB z`N`=hSErHRue*ew>RS(krdOsvV|;uj+jR@jC(d1yo!+6ipmWW= zUN+YZ%hPqa%t;ws^SBRe^@6RdNL}g0-2+LWd%e)QKWh}f+eNZlT6?MchxzVD{OsFp z_}0jcb$-7M@2dG3MN9lc&HTrL8NCZ8M45jtn7=i%u+c9C^BqcCY1{|?=Ln~$`^LpQ z{vC?=eSW&F-mJy}hFH9_ki7$WjKJvnY2x!0M*Cr;`@nNuyb&_ivTp_Rqte1)YWX@n z!STy|htcA2EL*=$Pru&wy8JSe-q_V){zYdE6J6N737^6~2&ARnoW~H(Zzi@MVaDcK z+>hLc-jOQ3dV?syy=_rnlrDV0fgLn2$v)i5N*?R!w1&4sd zmJhBhnD9^jr1wMxWavO%nhWqmfkC(3QuqIlyEj>L6YIKl`&`A>=lLH|sG>;?qOL(b z5E39jfB;ck{ho>lJ8h>k{q4QaIgQhBI#P~MplYqT<{aZ46eJrEkTH}Gp7>mo3Qb!S zMNoH3=n8$9ZqdxcUR17lm}%jzI6nZyK6JPm#@3m(AigiKng{#ZfB>!aH6Pps`e+Lo z*?Z?SxqubRM##rj>%fg5B-_2;o#TW&Lr_e$A20W3+`>U_pa-_@aUm-$U>S7K*AgM~ zLE1^X&|Oh=Ph7W!0=Ae61_AI%;%`Yk<#s7v*+UZ9&wYOLl`;l&*AN)Z{c)=xI9pn> zO|hBjur@eT);h7Ro-1Tr#P`=RnUhf3;LtEN2JmP{dzgo5-bNg7$C+YC2%Q}4C=8%g zVF7%6>;HMkNOwXPrWJF}j|fDvZMog0H%wkRaI5*dOzwYNRDWsrB0uPfHKWsc2+$Pz z%hkR0naTn&9t72wLsj*x+MPn;sW@$Ly*5WkdTNDBbDFvP(^*CIF(~{U88=b+fbhFb zv(#&^I>d3&Hvw~g*M zY?rxeQH|2YsqI(nVAqVGkox6^@&pui`?7KF51a8ywLL^6OrX=d0w({4Z*EFTozR|s zHW>MD^(D{#5B+`a^{0hT@Zp2XaNkuY)&WG4d&!Wp2L zpu>|tP;Ja=6vx*$5N0aA@6;L-7>}qVWR=vy8!FnvTj36PPf&+{zJgybpz?lUU}!1e z@As1pQ+e2hU=;BCmmgk;925-wn{^EBOjy%Cdg?qpo1*P$17s-!;`CoeBEL>V`bCvo zR0*v%knJsGhU8dy1jfmU+1bZkp&-)^bVnF#F(E5OT1j^xo;}-TA=o$8BIepYH9Es> zcgfyYA(H(*Y+L@3R`)Wp>n)o>^sNdV@B=BZSBT8I?rpBqZ`@OQp1afH&QN&OKD0mv zli4^>0dlcXD(Crd+VpemOWJLxtDv$=gLBw1aw8oc0ugMRN3cbtmswd45a!(s#S!f^ z%N>`1_siy>TbI{~fRwe=s+b*ive0;%=+}@xxpLbbz?{AUOHCBv9Y$WS(9Dg&>T%~F za80hr=Xf!Q$L_Hvm&e;jw68Xdu<7=(YP=zY5~%F&48~+oj%PeigItBS zG={x1Q1w9*>!(1Ee_mOTzb!2sjsG0xLAPQ7FWrB!L?OSdQNM}KasaGLs>Ef0 zy7>Bep|6#3#{K7}5BbB&l_vze0|7CjDD*c{Y(7Mr5I5JDf%I9&eSu3UZzr;BnLyH4 zV7Z3X4D@I{MHLQYK(c4HU30JW3#5+wp&MT82@_l68+jJT> z7iHL!X&tJfbvtH+6`qLa7x9vd8sdpUWTW3Z`ZGu&?zV#^^r z{@)|wrE67P;e_%Z8fq{QgkJswXsrL(*ZvwmFZqAuM?Vw;Ncoz_r@IsSK?H{5e>lT@ zSCanv#h>4uYY)d4SQD!ttklc z^7BirH{e>WMmVFvNzn%s3pK(P{Oxe~#t_0ogID?o1k3MioZnoW2o3fPXvUB2D>l%Y zi&RK=K-sDD`GY=2c3ufNaE=Id$D3;!)w*|eIh|6Jg2#8#^Wu=6zIB?;*$t_T;1*gM zMaAn$CQ)^k`WFm>V_862K&sZ(Jl(FaU!Yig-C-e`7^xx9W?QwpGGbr)eqUp&bQqlI z^l;}GIpC6@P-qZdduVy9@r8f%Nw&)M{i;(No{0FqR%PXiN%xhrsCz5$)Am+APqQo$ zMn{RF67@n!-jc(J92ds6s*XGC3;-X8bJP;I+O63pNinr~0UK>Ns2fgZhlaXZU0lvf zrAVi>^o+Qr1U-+OT^Bm0z;nQM)%U#>*!{rN30>>MNpwtGm8*TfOH&&3nbo30Z0Xmr z%U}w~eSlo{?_>TSr~HUULmt$7e)1LI{_7sqwgS7c_1r0pE2~)TF3ntqH6Z}Tn?Mow zwhUYu5TKbIeS|xMzVfnrT<$c)S87mfdK1&gyjuGuBrJpmV_yZEA zUBLOqJGwuQ3wDptP z-Oj~6&yI-OG43OgAsl>!g_;kBl3=&=BsfadQwKD4 zeSN{fGnM<$cFvm6iX5`3QwlJlYke^4sI@eWURYXTSGs-tnQ4d8f56_rV3!19mTYY_Mg;Q zH258Uv^xN3j&Gg1R1L@u(}KxU^q1$3fG~cZV7QfS*=(QxlVfx0Z&?g^Wt01C*4klO^o$)g?!Kg~ z2lGIy2B-sKNFdFe!Lt@wJJ`lLt|d-9%E%W;t((+sxq~DF^@ZZ}!Hv~NI!hg&jk@bg zj}%G|=a^j+^%)<{kr0yWu|oJ8aJb7;PGMcRm&X~74f}H>F3{gIsde3m=1V;Kof=$a z_9=}H#&10ruLLTauZn;|nhGVXM-&2hHwPrwbus`z&hzB(k8yvT_|9}%b8E9wp+V{) z;5IG7(C`~SodAGRkz--AcapD=It z#02zE+;#)1Zb4{wgMtdcRZFCxH}5eb!geI70f`P%k5lC-@z5hp<0(VLkFO za-+Gq`wc-tOw!?QD)Zz6hKU|Dg{l|P4Dbi`y%TxYVAA-L-9bwc|ltXJABWVP3p5U(|$~Hi4j9t_iogVY^$>ci_BYk?pdC zAqExM+1+o7PD zr7Dyfgy{6+d{MXQN#?~Z%%j+oYpHR+DQ9BcjGorh_=Ai#$rxBk$JVD#*{bTnR<@^brOQwAr$s8il+jh>bm*&OUzu&o=xrKXxHDsyi3? zcC|6@wP#HTkJ_ruVG-n~wom*cN-Qa-gn5;H(`x@dvi?K!4W)x%I$z3z--^EfbdcoE z?3kInzxGL+w$$_u2KeSs$APmhEPd;c2Y zV9x%VTf@fWS>&KBhGXvAt>JR`=S1w?>~zHn6pbLJ=6I+IV7ddDMbHC=)&K2}u-{iJ zdIB^>Yw86SV$S;E1ooqz=^x_hee1g09`uyE&4B*Aw=dw5(?or<*?o6GGg*TUO9~^J z+CpqkM`@!2zHGz2T#T$?{63(8;y1DT5OX!A9j)AHta;}geQk;;DlfUWqwZAjy27C3 zR^(FQN*C@?m58)^IKknG-UxOB*((o|%i6fuRHZe5jdFekx;HH8PCGwD2*pE(A|KJ{4gL7K-Ly^8;ZH@o37Y(ZNbAj&MMHhZsUXOi zR~oauV~GhRc8yVa2DGJIT_s|yp5p%DY}Wy40L%L%bY0zsj=%-6TJE*|U5TKQ&r4`h z8c#RhZq)rzE0v~{((Ve;65Gr-=G7BhH+&HG890j{Colx+c^9tXpA6QwkB*?D@$Z)( z_}Y8)!B^L42;qd4=h-mt51Z1vTiQjN4TeL(aX~~Lz4q*Qyf>4#S(c0_(_}(XMvadkma^qwqoHnglafoYmd9hE z`wL-`-XomqV11`2mb4baU<*ANEV2}jHiXyN-}YM_REc5<4EXbo84VnQ*PPPQifylW z&p4#{xHq>rBQL0R;QDl0a^C8b;~;WqTU%fRLymq?wHc;!gmi7syYv?_LQH2!DK3rMx zqFB6sz7Ft~*2C&K$ZN#^tNQv)#~eU5@K>7e)qVDc=<& zp8}Hpy$Di2E`qQIp1>>uEpD*MzgLx9(-99&M_^9@iVpZBBpW6I{1XCRzb!k(ms9}8 zOg0eFVeIq{o&QO+&@t13` z`Z6`%&47gB0yu<eADYA9XDnWA2}iJp1WMG+*T#` zY2@kUHjS%fUuqitLeIz^&3iXw5-5i+WZb5!a%8mYr0pq1-y7ZKik?Rb0C&(!ka1$i zZr9Bf$j*nYg-<9n|2lDsebv64LO2UI&?f{8$pIj~VVL=PAZ{JWl14tK_4$5+quAz1 znNK}wrA9AnR4nthI4S{fI-R~Q!^!F_{MGK{ve+QwV`x!{lh8*)5_+a%fGm152L{xz zv4MO|HA|k?XS(US%TagK8z~oSAKyTEzkP1Ij92bwbiP9rnh!dm`*Ircvb#*Y!U40N zues$~pbW9s$ITK=6(mNJQ56myM)mvSb52r%ez6r^jB%b@-Q|_swe6g;Uhg90VboGa z2MNgcgfo_Z`$95k-h7^vz7o#7=}!zf1iFgGhYg+Is)xBNEn%z#q6Rf$gT*|^6XOF2 zkv?VO@?=2`2grxGy;LG2_1Fx={Xbsz{^1j^VCSz+%xQ2vSv z`}ld}Z+8G*4=6bymC-MOU4}uL_QxG%m*bCfJ{BgFECehDAeVZ>gt4~@3i%3~Y~RbV z^7RjIC70qbS}Iy2xb)#<$;a9G{Jpl7dC)EZ&K9m3y8?$DCf_*>Q838U@iOT6-#;5% zbmu}4;`@%jO3}~8*F%Fm8A!U6>;@RVADrLxoq7oa|F@PQ4$dtMP~gsBO7PR@!C@>g zR)T7xgiy+J9)lzUR1^>b0^yy%JV(DiMTq*#lMKlDQzW0k#hGj^Kx~0flA|*k_zIcG zLTaN!iz3QHnx17n1&C6FdHnKql_CO<7s5Gp7dqrWUGm?q_;-6LZNQtGr|-=M*jDxq zxtXGH+fk>40AcxU)HazbOo3|OJVkj423gU1t#RnQn>xrZWc*V|5fF~6gKpEXj0h#< z;>j#mt_y=2K*6T8@m`J_W1*$x;_E(ayxYnRnKzRfA;=|UKyFTR_@v|c*|`N-I8GC8 zuQbYS3UpA-TiL4pfI;{WVmvc+eVrlBdMBN?vbFqvGJkA7mgC?=fXmV2qZloET_6`;mitQ2wDxNVaa~< zFnF0DUUDZYzF=Y%2c+fnqbrF_rncJ@dYxbBDrWf~~0TdB6I`l=~6WgI>X# z7DcmmiCQawUzvcEd_NU)UbSZ7m&16uk=P1ls&jF?_zNT@Rz#w%K-v{JXCCo0)Uk3;Teia{7!8cKrr|c;^|su|O65s2xk)8p zND=zFQkDG3SMlIN)`TL4^@y(yd%jUe>p2pnHP*U9sgb$cSXe0*+nF1MWFf*Md`xd$ zixr@w_3?c%R*1C=J0WsXR>tb23X+am9RtE1q<|})+8o%93v*roW5Xo2xDCH^!#A;AC*trOV@xhz4GtUJ4`&onBi-VjddCZB+!c4JY+gB@hfIJ&X!k^gfW4 z{1qZTPRHGq4ae9ttn3PvKCIWWyP4Pvb=Y^FwkbUC9s*_Rh4MR81JXSri1I!SO!Ep| zne0Bcsp-B$E?N3 zy1!=7N)_3`q;_rWl>G5?e@cPwUO69&nKpYU(x<0qfkA=zY|jqaKFG>VxI%AuG95r^#IN&W=||8-K(=wk z`=SCkrt8qq&`Hnu7=>=8mi zSd*e}Z+0`M@_mp)>6V0>bg1?lqQT8DaQAkSUhe`{vkNg*C~}I1!&oWK<9=x75Q6Ir zM!66}zHXC?wb^Xs+x8whwnC-)z!5Uf_yD}A;V88DJ7?K>V)W8f4h+;O4@qKZwt!+B z*T^&3(E_+bBnD4_Lwey(Qr4VgxyZR5#CRCN`ZS%jlw$6<$`h8oEGYg)0ZMg8fSa9H(0^`*t7aw^dCHgPmcPp(s14k8ABc;PI{+bmKD^ zIBxb@{D^i+yaQ*q;H2>Twt$^drecY8KCpno#;8Scub8uKAF;lb4B zA=bm+T}0s>^2c}!wll!Z53QUPa{FdDKwdwG;J~!RPWUxs@^^qe2v|S<*1iRwzDL&3 zbVuHNXV|M3{SNZsHJiZf1#bQ~DDbD-Cing`Bgrkn`{~lj=PzrZOMAkR@4wC02H*@p zJ3m?>Ns!cj<|VNypyZ=ahdF@WfBX$j|DQVWVA%f^g7MXX|HZJc-=y$$V;IUNQ4EA0 zri;f{choW|X|~aACzSd)rZ|$}D!4V~T=0s61flA8K%p}biSFsx;2Q~Xg(0?ynjaK!#$n}u;4#S=@j?DmTQNbHRpTX z-e@V>1gHVXhU2iue zo}LLLFS%|9Zm_T)k5vhPq>DbnTkO{KTXDVDY;`@G*KNL6Oq^qq6kwki3?Dl%Ui-op z!dI!&^q4alS#6=gFV)lQN#1TYm*HkcKB-;zXA49m8%o%b zQ;~xeWa|d=N9O3;u>Wa*{JmlSJz@W=m7~>kiZVsnsJPv(>-b8wiP~?QJ+}J?ug~9B zmQPYToVh*xm{UnN8I`6G%S zFdv??x!n^zLKE0{0shx)7(;WwG(Ns!0MuNrGi^!xG_(?xe!i?eNY4^4-&fg(R<_n= zIf(nZnH-F2oGN|CZ!unmE}zs(X#&ySNnk_LHhX;5%hNxkJvSd>%{a%Cxr-Sq zpfZ?xH|VV|E@=f`c3gZN9R9hZFWmO%AaS>O9rE4&nVpm(zdX~|zW3#_RQcm(cq$LK zS(@^EJ1Cd)A!Lc&Ld3+d&lA3a7-Xvg>uNr2x~hxRC`GtOsckOL?j$qI1k8%#9Vqa%C!9mx%Kob~|>Ux@oSguT`s=&oByEQI$MWl7uePRh-GYEM+RHv6ToISgqQ z)soTC3m$DtTIj|Su6>MG77-igZE!&EmascPa46X-=@p*pU`$m9EGeQ9Dakc9x4LrJ z4b(9yL>8HXZ09CU6o}_ylXf(Dkam`-7vr?YvO^T}#UabJ9oPw4f^DQZSCc@0IR@^5=3(;uGjT#i zDCX_^@x)cu5&}at0ux$CG!uPzytHXnn<_yM z+kTv0E^ygT3E*YL7v%PQ_ys^L4jDjy3C90nn37mSzp$+)YQc^Gvz@Q%q|%cqVRfH_O|nAw z73O$df(j>In`V5=9ze_xHQBE8(XOB_N~_tSBa6>|!^(`Jp&~NM^c4nPcI&Q-@YJQp zZ3O|e#4i*hU3f8H8tu%o^Kh(i@*y`KPg#U?QbDO0k))E;y@t6?`YSbev^{xW9y$0~Q@l?0&l7@u_(;o$%K(-xu`Y z+<6`RvX?!;t`WsaaALUg$A=F__5GMa%j{Y*Rk^)wrH0k=F%a?QXlw+nkBlsc?5;3N z{jj<~D-xfOJzv&zPyj+-UXi_4@?|31I>V#;fdNLvkt=t!w!wMI-`GqtN@}AXo=X7G zsmofTT-?PcSVnvzyzrI|r)Qircr8puNCP{&>Mc*6yo27$GL&6OI={5~>;dap#X0lk z`Ypv_{+h*=N*__G5%-n);>H72U3G}IzELM*?l{imuE^C`uLIPv~|; z4-k03!4bQ7ao%*8d&lGfRDl^J_0Bp@xQmw@>aH8&y(^8(b6#JwULb6{k;e1oU-xPE zf81+z1rEf2#HvZ+>XV`KakwV`)jRd4lQlQJyW!nm-SEE~p5O8f@In1@hP8pVtE_bU z?F@^^l{I*O5g$N-X@kR+ff#DQ!3!T2S{TduaBfY92o_BVbVZ*(+-t(mKkI$sdEdh^ z5WJs5`3HD|rbz+_wZJuW_Q7$rFcRc|79f)UCWiky6l>q`Isgv-a8%QPjqr%ib~>*0j}EvLA3%%$tA}@a`0HCR2Taue^N05 zDm|N1RGeNX<&a$gY;psd!$}Xe!)Dcwyb8&2h3r>*kj_}CYb^>w4W@Z9ZD&XemoaoP ze+Upg`kItt_G#)YPe9Nz3~~v%X=AI4YX%~q#xVW$f)+cT8Mbuf#RgcSyU0Uy;9@%P z*#Ia*9FxY3YWtRT*2SYjPT(CNmxe^K^Z?7#R$qVYFZq*{fty^Mgy)S&s)^|6o&|0= zu;Gxx#LhP|kfa%%#i?CS!niwM>E74!3?rh@L?zAV^tH6)J&^tm>Afx_Pzf8#9$!v6 zq>k=)gW+cnhYAqv%00ts(D(t-xOVY>qrtMXGJL&B2t4ZL$Z- zYTy)CX4|^0$+d#z1%Kf2@cb`wIu=Yx&+DH~PaosS|DxN;)9*ET{JthzzRc|!$sEjy z(U#^BZAqzi{`S83&>G`Ec0k`+W5ITRfHG&(+4A8W@=Z1e){^um zxbeU_E=L@c$AFfG^_SDWMxELeDgy@D-kK|oUSZ7Tun8(1u| zACm)1M#!ouCMx#scCW=l zAE=#770)K{mg_hg0)_?z-5$#LbWgOahPdo*_u7}jMyxJXgcm5RjE9SE-%{4y)$3E^ zU-?TSHeUNOlE+XT@5MYR@^T=QB{rDcJMu(z+w_&%5XiHgF6}CtyKuqgn!+|=AMKSn zJXlc%;DZS;h143~>*h93FM01=s4;BGDSzHchVlw2VXxF<@qzXfObA7Wgc;jqOr6c$ zaYsL`O$uG?W09X+7<`=2nNHnzc63e!oFh#6Ey}WaLyY;6zoRW#aKHmYTSy=tbi^dI z#MX2k2W7(Yyz2P8Q_i)khgxvSPzfd_MSS4*_oKUoBQ1=AVnO}34rfs_WfAC*zm#9V z_Lepb{b%XdcjXtOF2ViK`T4S0t++ql_-cWQ5C?}h0to|eHEIe=B&u;gG7vPVAhI_n z0SE*a4q~YPQgBV$4;m_s|Mq>z`x_x;;fHT5KL&(<2Z6rj(~uIb(R!Cx(tzP%19Hdl zAat-`UJ2B`BXhLRJ!mLZ&uj}+!{Q8fFhLak7sW{m0P{@}Yx)^-vVtf7JTOi=-}7q7 z!DVcwdbLekoB=F^2i>VoLn^t220e`TI!oktB6#&N+U6)9+sa3A@ROHt*5m?Cv)iV$ zSaJp2=HbG0W%VrM=Qd@;x`{aJY|iU$L`J95Ij=tP(PatHvkG{uGBnQE1>ocYuwbj( z;XoV&e&@E+lS`kwr?y^-`>DsT8I{RFK}YJ)omH8=dkA?a)Tet9JQA$3{c^PCbPit+ zVP(2Dx*o_hTi46WUY>9artgttA2%=2XHO9TM!}R~PJN#qYlt4OcU&y}CRu*1I=v0O zd@77v)ZznA1VDvTo@mY-FEkivY4U3-2VZ~}Mt6Cb%3bD9O59t@4gQ$>_uHl{InL%v zQ{P5@dgXEt;iUS2{q%4PC_8h7KmgDJl!Z3_VT*|g{`*zI^O(q3OAgCGCkV_P-aHaj5nE>Gq z@YaIe^dIJh{3qc1Tl6&y^USQ%7T|#i*H}3$fT4T3%_%i??I>p?^B4<`(vj%JrGU&a zqqyvb)LljZ;X)+!%Otu>Lh8iny2WIf8~4xKG}BLA*~YNr=~?dqoxW-yWI+rwsvuiP z8$%SY2A8xaq6Zs(9;lUd3~2${X&Kw)4oEN@3I!YoHqLyRD0ROvkEiCjg6J-W_~Q81 z@M13)ud65xON=PFCsLg`Q3fXox^3T%C`J&(%icv{O{S3kl+F*w(x}$j5m4+}I{yWvHv`C{36 z4|cYqJUq8NB$)aapYqRvUEr~jAdFCpi+Cb;9pU;iu$5sx&3_vUa z`v~=iedLduhW7qs&)<&_92=SIuWy03?^olopF@*MThMH8;@<_-JDmplB)kd%hVT5s zZ>^itN>|@jP3di$`&u!-odke=00Im8Em2@(kSDyC8qh6X5r}PiyK12F_ken=;kui@ zL2vJT?4NG?(^b7M3i*HLs{VHtK;2jzKm^(-h1ZL@H;PT*@xe)VpD>hrp#(rjI)mmA z-o{9eE^e;ZHWe4F9wmCw{sKJq&D9Icg4htDlDd*19SP)`KO@jRxN{t2W|w=DFw z#NbFuxK=d0F{$L%gR7+&TZ=iI^~Mbx({QA_Ey}FRv;t_tAPU6es20qc8~b8PbVS)8 z<7zJ59(xJV={7@>w<^MFdZv}d4>gW5Abbp$biY*&=XqsV$?Bdki#~YtQk?r)?6peh z{7P@F`Xy~zXQ;K-?p zkU)lZ=>oDj3_XA^&XI-f#)R@`77xjIqaHvvfAPL8fY8^lp@Ij~!ap@rezMP-WDKXl zo2GAbSi@Q4wmhRnKOtLFNd-fLtjQwXNP7raJ?|3{oE0445eaa& z0(vcd!M zU#;j2&kd$3AQQ6&nJEaW2~Ns>*@CX zd?JRkyI<Gxe#3eK&R!%12EO>JunL*+VfjPAxit;1gVxFqnYG88rv{Q``(q7k8 z2tx-JSbVvy7roDfD6zO3i#}-qhoKixW{Ax|(1(XFL}S;o?J$ORABa`-=k%}R>OJ#LZT;<_Cp8{@kJx1 z?Q%5bppK`e=742hi|lyoqq5qzITG$f}f1eQd3yt6;Awm*nx}UL1pdDL9SW*sP5T`${C|_PHP>(s^*Xn1}OBGMIrBPM!&d; zdMZMXQs>>t1B`<f4G4?rM1YF2b+ z4tMRK;6<1koVqzzV((VO(SdHlxwF75eudaqE*V&9B&h^-kwXy8*>)8#t|Phmt$S`k z&TP+t6>ke2-;&3iJYx=~t3+kLQ(4-k*(*;{5}#5om@I1K0ExlJIetNsW)Fbd=G9*f zl6#fAoVrU!0CeM59CJaV&SJGd)ZIHvX{XlT*4{7BE2bOfU!QY zXb*seP`_z7+_QgNLIMV^&@zO*ZG3Mzzgs!Jjv5%Kl4DbGyuvufd*ta3a4G;E$+0R~~?G^RA7voX#BZHg83yTPWobT_-CyQjcdF;kv^a}fh5;4W1B z>Gf&^W{lR&{()yqd(iQfbk$DtU&_5cjs6RnsAWqpQummXSrr`o-;Nrl!$PO(0wI_` z94r2GggE7IJT~zikIk^Z^+~}(Xm4lpP9MM4cvtt{v_}et3ijL7S-v~!Ke`+Ni4DF? zh!~4QaF4?v7dX;Dv=mCU>pa0tWdsp`14uNzHC+^p!_dG&4qHghx@Gdw%2S+D$&p4#ADF|e zxlQ^St-MVRZK(|Mx%@SeUav>X5?a|~XdjD(q7LLyEUq5x7%Dwd8jRpj>n3j@@E-Is zWs@VIziC-zovEB>i8DxI8|+n$5le<4E3j>h_Z4-zKmw=IKJu&DzXsuGn%xTz4jV|n z^e6}~?5}XZG;0Hb8IEFSDJMvE(~|a)7)mIBpmh1eV|_TkXh7k%viEjF;AM%H0_+8_63$ zrS+<>iEq4ev}57}m!oDcX-%Jk^e600)RW-O#{6`KkND_hp?ispfTuMa7jc^72dz0C zW94qXG;lMOlUi~q)uNYEUkCc0ga(ze+1HQ6cNE`Sz$h@J=paBCP#Prnd6|-Ow{&;K zRES_Y3IuT>rP=b# zy|dWvJ8Dzxc>HWH+Nxd>Q*?^V8ZGG{-$2MqsQV0na(m0ut5Mva!UMYXmVrq02%i@BJC{KVpPad2#@laDn1Z z;DAyzjEkHiGk`ki_)bBDhf|_NG;D!;*+P4LuT6j)u%T1}$TLJTzkBQc9>@W}Vm|(S{;AH;E&Cn~Cc(fx zh0uX_dL~dC?Q#-6+i1W$VEA|K^(G*H#v(AVI|)6QeBQW*Pt-DaGTz?<;Aeo}9XDybU1?k-GWGj8glWK? z{xE?5MDEXb4H&%bkF(21HpTC*(4oqUsQo&f{>#0}4(I)%oX4%xAuhGI=0OxMjsav3 z!?sEG0JNv<0Fc`qL5diPKQc0P@S9qt`?rWf_g+JNVB6k45E3@G@6KK&cl2^)MaA=TqdnwL2|5=-5sXm+ACrXeD}&pDjIqf#ZmR?n-)!uF9D1+R88O< zM2)RYhF^oRBPJYq9K~GnAD3K~M%TI(jv7Os5H_Pk0vFp3RVVKn8~e?;V=AM+!>o&s zK=EFbdnePb^PGU%x|QlvkUI}V5NN?wEZSe`eoB0p%ulG)I4{Ff&0R|Oz2h87jN=X= zb$6b?TbNG(>j~H1xXA-5xUaKXAEzZ4udfE#wd&Ar`IA7uj#cWyH_}M+>F?u-CL<%W@~yX4)g9bX zM0gC3dXD^`X7AtLOWvE!$_R=O-H+{P1O&_Dt{%y#?B1py===9xyq{|x(@(@Md*6>F z+bsirt^cWCI%j#~Lsr2U_f0(hhZc`>+m~=d()RVY?6r^L3-2Knl8YR~61=^IHeRaom9eau1Y^_fPi0 zXK4LN6Jl>q*CgOS_n!xU)+gW#382yXKzY8jRu!}Xf}Q`VIRv#YL}-7F)4`1k(?8e? zeay8y?5bf$RM_8wfquIUrZIp_`IGe*M)ZKfgj(h+LL0oloqAoBcoPHTB0ta!KqL^TrmKfem*@24zDJu^R*w#2NiS1;o>s*Xu z#7)+7RP=2t0ZDJL%nhF0Ic+Puo=`)A0HllbZ&>KyS{M(xo%m_4vzsU z$3`lhrZCLfc*9I-x4T@#T2}!o8J^lc>xAOc^=o%}-*Rv2-7tL2_AvX|ZW#~clp6dQ zp+g8-sP*7=^GIkcK)A)QEe^?97V{e)(>#Xda9EC9;Js|Urdm$}kL23k&H#P=qD3Im zUpDT4H%k0-6c2dylv|iEI1Ygnhv@~Yk9#}3I3%t9K@E29xdl~;;)IW#a#87VegxjJ z?c_{e=M~;SeZ1gLED2p;f=34gb#?G(-U#P9tM+*>+L@}WQ7azs2Q4{A96zQJ;7}QM zcmY_?b6zs03Jt+j4;8T!?*=Bg{Hq%$DTQkLc_E$djS^vTAQ%Ynlx z^cb^LTX~o6p-HCD_wPA4PCZm>mlBA3E##LZQYE25%+#EG|OMFaUXGS z;d8wCedhgvXkH#f1S>+V0EXr-o(TxA{6}WyN8AhTz$c?k+?eP0i=D++8UYOne4W@UxMGaw&*L<>aK6ANWCx`&3`x5-(AV>ZLoCPZT4HF8D-u;)i;16l? zCmQE+IV1nol!59Y-!d69!NM+6fGD`&O%O|G;9>B6F{9kp=_;b6%q6CVt1eAG1mMO5~PIg>L?|DkbrA>J5c0JmcsEY&H5I68`xX#-G@iyyFC;-pS zb+AJayLNz3h(jnp)ji&MwGz7E>AxRbQes#v!6$DAB^=><>7jiHsq6?!WmT=0t;>0K zAP0f-VR{3>PveyBgXJxWXK}1%!bFd*JWZJjEThVu%WP=YA(o4FX%9oE0zt|CR z&ej8Z0XO;n-bsklPj!>vpvM-koxKx3>#3F6@9+2GnBFioj=&DBa&IO+7>1Ez7lP?u zrjHgPB~Xy`xouMPSiOK)F(0|7G6Rty%s7<`1vTPzFR-T6ulmzG zT<|)OJ)7JG>rNLruU=_8u7D`2o=$<_=IF5i*lJaY?VA7(WCebI@5(FJ*bHquCySL03Jyr5(3N4V$?_7`1B$DhGFFt}&a?b}3FGLGM5U>^#j=gr7> z{X_JbP=F+=D&F^FDm1G9tc|c@TWix`Nqmb>&y8n z-%q;TF|RB*(K+8r!qJ+izp^s_^ZR}&N`LVVu)o9-tmpn(ipTNvZe=$Qs#mgylH*RA zNsvDErY2t3Y}If-5GQ=#p)W$-xH2~y%)KbVx-$nhh6tW+34^gI21AxMbuv{>Bf%hNK%yl{O!pC@ICBa6@hqNG8eTo>Z4yPQr9TP#N?98qHu z>XG+&V(=ZLW=_goYD=|o%!b+sNNfbDkX>yRmZ57j<6N?9==$BB56(zw)gwmf*K*%m zkTpdKyDR&APkBv+G<|B3-2l02JMFwij4Q}+ah=ZZat$;4?qg5*!ZF#^2IB~BQ-Jcu2|8gya{HtQ`y@iKLA)7{k#YMxWLHW1zI{O&!fUX_RG`L=&}$b+StM#NeRdjRw&qymxq z8z@~F)wkE`tyrl+43{-wDEP1Ow%DF{1*+p4z_8^t-E>z>pVAglw5*z1s$iK#0=;^X_acBD;)zlYHi-2C`ffeBrPf_s^&H{M zJ{`psBwHobgE>rVV92OdT(@sslg#wRZ0kEGV%a%%E+EugS)AGIXg^p6-k`ACb zd$GwIrb}W%qPu;PQEY>X?$4bOR1m2Lli+ViYyE3a^o@Khia*vnm#^$vW9Cy&@-8;Y z*id@>`uF1R7f!Hmf>h!^`C?50N_;jb@QdYP3t9$jP(I@0@y;}V?a=>nU*wlN|AiI7 ze8(tPT(_~^>3-kX5Ywr}1;ztL9^NM}Dw`epDEgEy@=O8hMMoD!jRKt-k124cy~HSg zN5vtYPB%|^kVHEMr=z7S5G_*qFq_mK%@N~)ymurm(tgig-Ne>hD!~JpJ91XC{d*yL z{-GwX7#s&H(bnsHMxED$mCKIFJ%g`2TubKKdY>R|@@5u53oQ>y+5yUb|G0@fhuJjZ z&H!%MJEz(tAE$vv9TrCXb9)j)xRsh-byTcsKvXvo5;YiCq8-&&(wCcDV(Us@A-P!s zVxWzUc`YG_)2fIKh2m;s0d{Lh?iK%TU$2u(Qc9gJC0)Jnu21n@Id$;akr?>3Op8OK z3mJ$(t&xCXzAVIq&F>MMQ1#w0y>o=}3|vg~QNsy{#Fbj+M5%cB)c9>V0HMAFoYmaO z)*wgOOx~ORsISJuAevVJa#_$?J1;~g>QQykWDmMHKXjwXIvuyrM`vh9lbX6?#3_ra z7ewFM+M5-oi@Q9vLj%gx?ZDRPD!kmM?-v=ttqda7tVw9m<6_cRuL0rynCrtjP@J2s ztCO)#8C~a>-iu>+eQon%HOW+;}URjKvS3WR>2=E$VB(edQtqOnUnU@lRO zbxAIJ7@1>Ln(d#Q*Z7gE(DYuAo{$p1YWy=lhc!eY9+HJF74AgSZz;CC$pHwYZtKJx zTy}UlET|Kf8VvM=XEG>lfA{z8`=3z}P)Kn3kf-0K6y{%}b^qmr!v9Ptu%8nOnNd}) zo(@JSlI`!>E*5|TD)^f~93+1`D`9q4X~5r8X9O7O-=!iQyjqz3x*ufWGy8n;``4iV z?>?K+?g>%1N~2D{Y)zqD0DL-xV1K@jz#YE%a^bsuSG&M`7wlaY1KlUY8-3*+8o%E* zgIn!qh4V>ke4xXEz|!0N_H;w*T*?q>4}x!4@WNbl`QvL){gj{Es|J*Q5I9RNB7iY} zlmz_8-2ihHD z+l3D5oqa^6;|dA}8^Sg%?eGdm@lJbK+x5b2xOi#r5%A7fp;{!u32I1n<;QL0t^|`9 zfNd(3r_*pS6;52n+;F6(rW>RXit&|+?LwSr@&b!ji4c$V^nxHX?7Z}}i}i<_9ADB- zSV?2C{B4Jy1Ze^=d9~HcGfd*$p(&Abeq9v6g#cf219^eVOZZ{(w9@12MA`WR{Sj{!6EN7SUrX-zYv(!FQO9_eI zIza26u*P(qQ_wOks^4grYV)MlVL_T(R7J~WG`{-NjVPeEdSgim0fl&yQYR3X_>F42 z_J)pcz$Xd7TpSPx0}c++wV*aBkTwI3iXlE+amTmu1{@$Z%N_gr@XC39Eh)M3{( zARh;B9d2q%og*XIT7M(r_hZWQ9sfFjA>2fJRx^>sPQ54O_nmPe)`gTt}Gt}$N) zIQE3?faHX`BD{l;$D)N~$IiPRGZliP4w+j)u2|w8Row}!<-{V&vhpa|NaWa_qX|4| z_{L7`%1LZMRiK7#A+{PF@+f#aCqFVr-Ev#$CF`CRO4npvTk0MKnRAB?uZqABze}{s z(|X7vtq=e(k3b%m?K*I(hUtxS1maz89Sgv=SHiv8lfRa*tI8GFK6|(nprWUyjjnej8g^iQjl52mA@VVVu<49UFYqBz9!Xi>!2JKZ+WG9i zu6{V$kWp}g9LB5Em(FIugyl`l?-C?WVgoP(q+%AYxUu%D7>nTfl079Wubm=7o4Yg6 z8v(I#FdW&r+$jN^W^)q9SYMNu;1du~*w%Olz_XIfnA1jU$OD!})O0$StBCC(vvN6V zWmiM~N{FSr!gS6usCnrW9YPLg4@<@FxW05PrTbBVsT8`&h)?gbC2WZ`#yfPU~;C{Xajg|E*YqygeGsIr0Vfjsb5s0AVL_i?vW*Y?oqzQ6@fa z91Fw<^6(mAvc36xVh#Z;=Q0iK#!#N8z<>Ns)d5uW@27U}U0;)Q=N?c_?js9`KXm%F z8`=S7a>}#K=2(ck7i4*=TZwWPU-!`B4xq9CLe^$RD1Zk)5SImC>poJK4m6dASg5g4 zp%I2Q*=JZ90E7_0a?JR3IqxILX}uja`2-z`tE1%I^`WJL6b6`(weKSu1HeM$N5iFt zg@|q|COmc+bw@;Y;2oIvt)WGY%Pob4gn6YC2aeQZlO-l(p6;@eES1VrV;+wg^IBi2 zkOk4%(aUf?(;)2}{D$5AWh3bk#L338NyfCA9cLOve=|hN?h^o;T(PMl@3+L+#d*tU zcL&?ZX1Ys*zRii=E2;g)&9|-*9=|H4kHBQNSx*=)otS4dr2`x2P_$THH7;2OV8sJ( zTvQ;LPexW@S8CN#qMwSK;%-jROq2E;@#l8(Wh3!;q-@*n>R|mXgUl`$J%Dco;Jv4O&N)SkqZV!tD**Fg_-#;5ChEU#2Ji&E{K^W-!4JivvjJwo3 z4_uw^5)?K;_Uv<_>g{D;Ql|J+4xIc*ZsyP^>Pu-g+0*C8 zDOOV~eT`draJn<_J&Xzc{j~l?80LY^jccBkeo1Tk*{~r6Qznp=NO;VRoty7pdz1zw zE|7I=K}E*10Rt#(1S1R4DDL&pudz%XR58rEH$)C$n|BL52&#G&Vp|jVuF;BwUZ&Up zVXOB_#1M z>&l>dN7)46Z!pD@fnpTFo`adN93zprdsco9eA7MyvJ^Y^TdNi1dyc8E@=53cI0~Tkm?~Q zcaWj&)%gO>XZ%17`^ayNc>j6;8v$qXYG*v)-+|QxOwkah?(BlEnAl6iZ2*Z^MLEZ7 z(Tx>EF$<%A14+=LsJ0hnM^c=4{+YcWMh4T%6GRN|WX`1|CcM=fny=GwQOI@Rd*Th{ z2?W~3$&hLKGq-?P2stHrX@iF0IRZm^eC~-YU`Nb+>D4_;x=suK@w8^nXWL{h&tIDA ze|0`fD9E({RrzB&e{qK!(Usc1yMb;PLd1UK{mhUJd_F>`G>lyWK9o zh>aDFiHtj1u?DI+s)5euZxRK5zA?;kdt^E^w)gCD;=O+bOF%+It1{_Cm#)_$9| z`i~9rcVyPj4mo)F)82c$+lg1dB@ zDZD3$KS6+BeK!W`$TaJNB8Fl}j9H<7?74w?4{)Cb-36G7`ebL{qHOsi+(JsK|vWdu8Z@j3=9 zcTo1|^#ZI5RSwN#4G5s@mP?X;FLyk01ta8BlJaK=5!=rtqK%d+;iGHL+2cuHI_G z0VcK5-Ic7`p^2+GS#zAy0N-KP77Y44krapVG8!!kF>$c4m-QEC45G9fA7C#9{IT1W zKIDCRqN?G?gN%SIHYqRVD(th(po_cH-9!)Cv&iUQvGc@p{o^T(M>Ue4=Bt2u--h~fSKeHlC-TI^fp ze<6r%%uhci@`oW4+*O1JLPhlrx_@w>fl11#CItoC8;BXf*|{md@&Z22s`UhxxQYVF zc>$pC36$b8`dP#ORDEv@n`K)2L-Y-*`z<^lz_Fm=U=P~`#SwdY zu|T^A-zvF(e_s;*MfUc4KBfjP_?w<+Yi!xc)1g|a(uP$!T21^z>ZK@5Y%7|CFQnOzwXMB?x& z8PQ-a3|lhd!BxqKAZjq!;`8t04DrophIyoHhA=mjiBpgg!vj2x z&!02g5&qmNX+Qsd&TPeqB;(DW2jqYKhL6uTMBob(BOaN6Vc(1xGPD8D z48BwR^?)jT19-;p%zcBcKhFg256@hMe{M8YJ15@xjt2BGeaP#%d-8zbAD`H(UVypnq5k31pGxo5a2Jv}ECB(H>B3E*9O zg_t-S%&9o}Mci?32w<1|h8>^^BukVzkG(8o?}k6HU~7DAZDo(djgb-SzFUC&-$Vu@ zFMwFO8d=g*^)NQn*kHzdNp)5N%+>x~lIPCz2;=hT&$_~9bKFU|#zkaf#QBJ44uK43 zJ-Skbh3Ae$$C+*N_ysD09W0;7UJq|}S>CWht+3WKjCxM_41GaV*zwq$*-m29cj{pE zf#gjE999=<>$>}01t-D7d0q4A(cI@~GrJwS@b@(q{a_+(H=A$0&UqFLqT)Qcx-pE~ zfY-S(8MZL^u)^5XO%W}GEFXnJ-4LSy8@keMQiBU+0`0sAPVjnu_8mlYEPH9C+N5>;NgiivKLq}WVy;n|p^gj)xEO2dohm8Nw zx&DpH^1y~9nt-`L`?UmKH0wKhR^WeI zYnkwIxd5o`YpZny0dDnxde}7{*C)QM>87%m6ZhTE5yIi&SdbX{)dqfre0it&Xx zh@p&joRDP3)unmhgH`&y0kilBi9h)Iw*B|@_8hF~I`dLF-Zzv{l864Z!Bpzq)*UN( zkSzr8PV7;%ZMx5BVeq_3R2*}4%G|)G-ISUb)>wK3}Weg=ee?mvY3{>yYEFs&|R$Gi|xI4rHEAR2~WH zOSjd=H?g58F2j>yYH(oU)=Pu+(&>Z@D?S9zb6)w%Z94(DZVplL8FbTGd|h3tzA4o0 z`e?IfQzpalhMk=x#zsRj-|7q0y}5>SN*Z{2%j`R3mF+zku1yx)T)OEp!HJaN;O4Lm z79ae%0!dBqJUL!zO-&}{whZdqGqA-X1?&vmmQ3vZMrpgQ0GuRJ7HTvr$sI5nmv>t4 zm2)Wsv)nh+?)Y9`N9V{I1uD#;7q36Af~`Q4bfqT*P_tBK1i={~ zi{b*VNGkE|A%ztC9EG`FB1cLQa4@xi^iikeYvXnAUPA+0yiQAl9gj&&+&_}t{_%>` z9k))QDV)#z6|XB$-CwkK0Xu`sG|meNNpM$=-aW{Las&w+8QN{$Uv*MNj&>|sLuH@9 zM1x;#pv`x0EINWYTew{uXBj8nji0u_4u@pZ7BP3U*1X`>Ni^q{!=o$XayR!(dd-j` z``8L7BhMz8Je@<3F{~R|5>FPQZBx>QMU4S4)dRh2@+v+Z1=C~qF`iDV;yQ$Z=GI~V zJS?plr9zb=mA;VmfFoa5C&*_&KL6m&VBZms8_F{<6d~WYNM{ zP&11%9piU?!hPz7%l)b&%qhJdp(iwZ^Z>F3huTaSY{0>sh$Fq*hpCWVsK-Q7wKGu3 z%8Y?~F_U_jpZn(&!=mOw^T)@;@h_rAa>#yb2BlAzJn{P>kVR$-)op-E542JsqKJ3U zqS5l@sFpM=*aizXEfAKyo#!UA`l|z<=j>yrj8TsWFXf_0G{vIp;QD%`eGWODib^r! zb$=+llC)!LStuil>_k7<+4acNTkLGUC>dt%cNbgklz5ny-AEwY%cDj^-7F$757_cx zY(j~3O9sA@&bOqi+_kp4#r^(OuaFmKu+(yu*t{{q=a*XQU*)B)#vd2Qnu%}VA|j3P~f+Fd>4W92>9oePv(a2KzcY1 z#W?6B{s{1ZxXj9|0

-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 literal 0 HcmV?d00001 diff --git a/src/AppBundle/Controller/HelloController.php b/src/AppBundle/Controller/HelloController.php new file mode 100644 index 00000000..08e839f9 --- /dev/null +++ b/src/AppBundle/Controller/HelloController.php @@ -0,0 +1,35 @@ +

Hello " + .self::generateRandomName() + ."

"); + } + + + static function generateRandomName() + { + $nouns = ['Circle', 'Cone', 'Cylinder', 'Ellipse', 'Hexagon', + 'Irregular Shape', 'Octagon', 'Oval', 'Parallelogram', 'Pentagon', + 'Pyramid', 'Rectangle', 'Semicircle', 'Sphere', 'Square', 'Star', + 'Trapezoid', 'Triangle', 'Wedge', 'Whorl']; + $adjectives = ['Amusing', 'Athletic', 'Beautiful', 'Brave', 'Careless', + 'Clever', 'Crafty', 'Creative', 'Cute', 'Dependable', 'Energetic', + 'Famous', 'Friendly', 'Graceful', 'Helpful', 'Humble', 'Inconsiderate', + 'Likable', 'Middle Class', 'Outgoing', 'Poor', 'Practical', 'Rich', + 'Sad', 'Skinny', 'Successful', 'Thin', 'Ugly', 'Wealth']; + return $adjectives[array_rand($adjectives)].' '.$nouns[array_rand($nouns)]; + } +} + diff --git a/tests/AppBundle/Controller/HelloControllerTest.php b/tests/AppBundle/Controller/HelloControllerTest.php new file mode 100644 index 00000000..e0ccf95a --- /dev/null +++ b/tests/AppBundle/Controller/HelloControllerTest.php @@ -0,0 +1,25 @@ +request('GET', '/helloRandom'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertContains('Hello ', $crawler->filter('h1')->text()); + } + + function testRandomNameGenerator(){ + $rdName = HelloController::generateRandomName(); + $this->assertGreaterThan(1, strlen($rdName)); + } + +} + diff --git a/var/cache/dev/annotations.map b/var/cache/dev/annotations.map new file mode 100644 index 00000000..ebe5ef70 --- /dev/null +++ b/var/cache/dev/annotations.map @@ -0,0 +1,3 @@ + 'Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller', +); \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainer.php b/var/cache/dev/appDevDebugProjectContainer.php new file mode 100644 index 00000000..45469eb4 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainer.php @@ -0,0 +1,4328 @@ +targetDirs[$i] = $dir = dirname($dir); + } + $this->parameters = $this->getDefaultParameters(); + + $this->services = array(); + $this->methodMap = array( + 'annotation_reader' => 'getAnnotationReaderService', + 'annotations.reader' => 'getAnnotations_ReaderService', + 'assets.context' => 'getAssets_ContextService', + 'assets.packages' => 'getAssets_PackagesService', + 'cache.annotations' => 'getCache_AnnotationsService', + 'cache.app' => 'getCache_AppService', + 'cache.default_clearer' => 'getCache_DefaultClearerService', + 'cache.system' => 'getCache_SystemService', + 'cache_clearer' => 'getCacheClearerService', + 'cache_warmer' => 'getCacheWarmerService', + 'config_cache_factory' => 'getConfigCacheFactoryService', + 'controller_name_converter' => 'getControllerNameConverterService', + 'data_collector.dump' => 'getDataCollector_DumpService', + 'data_collector.form' => 'getDataCollector_FormService', + 'data_collector.form.extractor' => 'getDataCollector_Form_ExtractorService', + 'data_collector.request' => 'getDataCollector_RequestService', + 'data_collector.router' => 'getDataCollector_RouterService', + 'debug.argument_resolver' => 'getDebug_ArgumentResolverService', + 'debug.controller_resolver' => 'getDebug_ControllerResolverService', + 'debug.debug_handlers_listener' => 'getDebug_DebugHandlersListenerService', + 'debug.dump_listener' => 'getDebug_DumpListenerService', + 'debug.event_dispatcher' => 'getDebug_EventDispatcherService', + 'debug.file_link_formatter' => 'getDebug_FileLinkFormatterService', + 'debug.log_processor' => 'getDebug_LogProcessorService', + 'debug.security.access.decision_manager' => 'getDebug_Security_Access_DecisionManagerService', + 'debug.stopwatch' => 'getDebug_StopwatchService', + 'doctrine' => 'getDoctrineService', + 'doctrine.dbal.connection_factory' => 'getDoctrine_Dbal_ConnectionFactoryService', + 'doctrine.dbal.default_connection' => 'getDoctrine_Dbal_DefaultConnectionService', + 'doctrine.dbal.logger.profiling.default' => 'getDoctrine_Dbal_Logger_Profiling_DefaultService', + 'doctrine.orm.default_entity_listener_resolver' => 'getDoctrine_Orm_DefaultEntityListenerResolverService', + 'doctrine.orm.default_entity_manager' => 'getDoctrine_Orm_DefaultEntityManagerService', + 'doctrine.orm.default_entity_manager.property_info_extractor' => 'getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService', + 'doctrine.orm.default_listeners.attach_entity_listeners' => 'getDoctrine_Orm_DefaultListeners_AttachEntityListenersService', + 'doctrine.orm.default_manager_configurator' => 'getDoctrine_Orm_DefaultManagerConfiguratorService', + 'doctrine.orm.validator.unique' => 'getDoctrine_Orm_Validator_UniqueService', + 'doctrine.orm.validator_initializer' => 'getDoctrine_Orm_ValidatorInitializerService', + 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService', + 'doctrine_cache.providers.doctrine.orm.default_query_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService', + 'doctrine_cache.providers.doctrine.orm.default_result_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService', + 'file_locator' => 'getFileLocatorService', + 'filesystem' => 'getFilesystemService', + 'form.factory' => 'getForm_FactoryService', + 'form.registry' => 'getForm_RegistryService', + 'form.resolved_type_factory' => 'getForm_ResolvedTypeFactoryService', + 'form.server_params' => 'getForm_ServerParamsService', + 'form.type.birthday' => 'getForm_Type_BirthdayService', + 'form.type.button' => 'getForm_Type_ButtonService', + 'form.type.checkbox' => 'getForm_Type_CheckboxService', + 'form.type.choice' => 'getForm_Type_ChoiceService', + 'form.type.collection' => 'getForm_Type_CollectionService', + 'form.type.country' => 'getForm_Type_CountryService', + 'form.type.currency' => 'getForm_Type_CurrencyService', + 'form.type.date' => 'getForm_Type_DateService', + 'form.type.datetime' => 'getForm_Type_DatetimeService', + 'form.type.email' => 'getForm_Type_EmailService', + 'form.type.entity' => 'getForm_Type_EntityService', + 'form.type.file' => 'getForm_Type_FileService', + 'form.type.form' => 'getForm_Type_FormService', + 'form.type.hidden' => 'getForm_Type_HiddenService', + 'form.type.integer' => 'getForm_Type_IntegerService', + 'form.type.language' => 'getForm_Type_LanguageService', + 'form.type.locale' => 'getForm_Type_LocaleService', + 'form.type.money' => 'getForm_Type_MoneyService', + 'form.type.number' => 'getForm_Type_NumberService', + 'form.type.password' => 'getForm_Type_PasswordService', + 'form.type.percent' => 'getForm_Type_PercentService', + 'form.type.radio' => 'getForm_Type_RadioService', + 'form.type.range' => 'getForm_Type_RangeService', + 'form.type.repeated' => 'getForm_Type_RepeatedService', + 'form.type.reset' => 'getForm_Type_ResetService', + 'form.type.search' => 'getForm_Type_SearchService', + 'form.type.submit' => 'getForm_Type_SubmitService', + 'form.type.text' => 'getForm_Type_TextService', + 'form.type.textarea' => 'getForm_Type_TextareaService', + 'form.type.time' => 'getForm_Type_TimeService', + 'form.type.timezone' => 'getForm_Type_TimezoneService', + 'form.type.url' => 'getForm_Type_UrlService', + 'form.type_extension.csrf' => 'getForm_TypeExtension_CsrfService', + 'form.type_extension.form.data_collector' => 'getForm_TypeExtension_Form_DataCollectorService', + 'form.type_extension.form.http_foundation' => 'getForm_TypeExtension_Form_HttpFoundationService', + 'form.type_extension.form.validator' => 'getForm_TypeExtension_Form_ValidatorService', + 'form.type_extension.repeated.validator' => 'getForm_TypeExtension_Repeated_ValidatorService', + 'form.type_extension.submit.validator' => 'getForm_TypeExtension_Submit_ValidatorService', + 'form.type_extension.upload.validator' => 'getForm_TypeExtension_Upload_ValidatorService', + 'form.type_guesser.doctrine' => 'getForm_TypeGuesser_DoctrineService', + 'form.type_guesser.validator' => 'getForm_TypeGuesser_ValidatorService', + 'fragment.handler' => 'getFragment_HandlerService', + 'fragment.listener' => 'getFragment_ListenerService', + 'fragment.renderer.esi' => 'getFragment_Renderer_EsiService', + 'fragment.renderer.hinclude' => 'getFragment_Renderer_HincludeService', + 'fragment.renderer.inline' => 'getFragment_Renderer_InlineService', + 'fragment.renderer.ssi' => 'getFragment_Renderer_SsiService', + 'http_kernel' => 'getHttpKernelService', + 'kernel' => 'getKernelService', + 'kernel.class_cache.cache_warmer' => 'getKernel_ClassCache_CacheWarmerService', + 'locale_listener' => 'getLocaleListenerService', + 'logger' => 'getLoggerService', + 'monolog.activation_strategy.not_found' => 'getMonolog_ActivationStrategy_NotFoundService', + 'monolog.handler.console' => 'getMonolog_Handler_ConsoleService', + 'monolog.handler.fingers_crossed.error_level_activation_strategy' => 'getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService', + 'monolog.handler.main' => 'getMonolog_Handler_MainService', + 'monolog.handler.null_internal' => 'getMonolog_Handler_NullInternalService', + 'monolog.logger.cache' => 'getMonolog_Logger_CacheService', + 'monolog.logger.doctrine' => 'getMonolog_Logger_DoctrineService', + 'monolog.logger.event' => 'getMonolog_Logger_EventService', + 'monolog.logger.php' => 'getMonolog_Logger_PhpService', + 'monolog.logger.profiler' => 'getMonolog_Logger_ProfilerService', + 'monolog.logger.request' => 'getMonolog_Logger_RequestService', + 'monolog.logger.router' => 'getMonolog_Logger_RouterService', + 'monolog.logger.security' => 'getMonolog_Logger_SecurityService', + 'monolog.logger.templating' => 'getMonolog_Logger_TemplatingService', + 'monolog.logger.translation' => 'getMonolog_Logger_TranslationService', + 'monolog.processor.psr_log_message' => 'getMonolog_Processor_PsrLogMessageService', + 'profiler' => 'getProfilerService', + 'profiler_listener' => 'getProfilerListenerService', + 'property_accessor' => 'getPropertyAccessorService', + 'request_stack' => 'getRequestStackService', + 'response_listener' => 'getResponseListenerService', + 'router' => 'getRouterService', + 'router.request_context' => 'getRouter_RequestContextService', + 'router_listener' => 'getRouterListenerService', + 'routing.loader' => 'getRouting_LoaderService', + 'security.authentication.guard_handler' => 'getSecurity_Authentication_GuardHandlerService', + 'security.authentication.manager' => 'getSecurity_Authentication_ManagerService', + 'security.authentication.trust_resolver' => 'getSecurity_Authentication_TrustResolverService', + 'security.authentication_utils' => 'getSecurity_AuthenticationUtilsService', + 'security.authorization_checker' => 'getSecurity_AuthorizationCheckerService', + 'security.csrf.token_manager' => 'getSecurity_Csrf_TokenManagerService', + 'security.encoder_factory' => 'getSecurity_EncoderFactoryService', + 'security.firewall' => 'getSecurity_FirewallService', + 'security.firewall.map' => 'getSecurity_Firewall_MapService', + 'security.firewall.map.context.dev' => 'getSecurity_Firewall_Map_Context_DevService', + 'security.firewall.map.context.main' => 'getSecurity_Firewall_Map_Context_MainService', + 'security.logout_url_generator' => 'getSecurity_LogoutUrlGeneratorService', + 'security.password_encoder' => 'getSecurity_PasswordEncoderService', + 'security.rememberme.response_listener' => 'getSecurity_Rememberme_ResponseListenerService', + 'security.role_hierarchy' => 'getSecurity_RoleHierarchyService', + 'security.token_storage' => 'getSecurity_TokenStorageService', + 'security.validator.user_password' => 'getSecurity_Validator_UserPasswordService', + 'sensio_distribution.security_checker' => 'getSensioDistribution_SecurityCheckerService', + 'sensio_distribution.security_checker.command' => 'getSensioDistribution_SecurityChecker_CommandService', + 'sensio_framework_extra.cache.listener' => 'getSensioFrameworkExtra_Cache_ListenerService', + 'sensio_framework_extra.controller.listener' => 'getSensioFrameworkExtra_Controller_ListenerService', + 'sensio_framework_extra.converter.datetime' => 'getSensioFrameworkExtra_Converter_DatetimeService', + 'sensio_framework_extra.converter.doctrine.orm' => 'getSensioFrameworkExtra_Converter_Doctrine_OrmService', + 'sensio_framework_extra.converter.listener' => 'getSensioFrameworkExtra_Converter_ListenerService', + 'sensio_framework_extra.converter.manager' => 'getSensioFrameworkExtra_Converter_ManagerService', + 'sensio_framework_extra.security.listener' => 'getSensioFrameworkExtra_Security_ListenerService', + 'sensio_framework_extra.view.guesser' => 'getSensioFrameworkExtra_View_GuesserService', + 'sensio_framework_extra.view.listener' => 'getSensioFrameworkExtra_View_ListenerService', + 'service_container' => 'getServiceContainerService', + 'session' => 'getSessionService', + 'session.handler' => 'getSession_HandlerService', + 'session.save_listener' => 'getSession_SaveListenerService', + 'session.storage.filesystem' => 'getSession_Storage_FilesystemService', + 'session.storage.metadata_bag' => 'getSession_Storage_MetadataBagService', + 'session.storage.native' => 'getSession_Storage_NativeService', + 'session.storage.php_bridge' => 'getSession_Storage_PhpBridgeService', + 'session_listener' => 'getSessionListenerService', + 'streamed_response_listener' => 'getStreamedResponseListenerService', + 'swiftmailer.email_sender.listener' => 'getSwiftmailer_EmailSender_ListenerService', + 'swiftmailer.mailer.default' => 'getSwiftmailer_Mailer_DefaultService', + 'swiftmailer.mailer.default.plugin.messagelogger' => 'getSwiftmailer_Mailer_Default_Plugin_MessageloggerService', + 'swiftmailer.mailer.default.spool' => 'getSwiftmailer_Mailer_Default_SpoolService', + 'swiftmailer.mailer.default.transport' => 'getSwiftmailer_Mailer_Default_TransportService', + 'swiftmailer.mailer.default.transport.eventdispatcher' => 'getSwiftmailer_Mailer_Default_Transport_EventdispatcherService', + 'swiftmailer.mailer.default.transport.real' => 'getSwiftmailer_Mailer_Default_Transport_RealService', + 'templating' => 'getTemplatingService', + 'templating.filename_parser' => 'getTemplating_FilenameParserService', + 'templating.helper.logout_url' => 'getTemplating_Helper_LogoutUrlService', + 'templating.helper.security' => 'getTemplating_Helper_SecurityService', + 'templating.loader' => 'getTemplating_LoaderService', + 'templating.locator' => 'getTemplating_LocatorService', + 'templating.name_parser' => 'getTemplating_NameParserService', + 'translation.dumper.csv' => 'getTranslation_Dumper_CsvService', + 'translation.dumper.ini' => 'getTranslation_Dumper_IniService', + 'translation.dumper.json' => 'getTranslation_Dumper_JsonService', + 'translation.dumper.mo' => 'getTranslation_Dumper_MoService', + 'translation.dumper.php' => 'getTranslation_Dumper_PhpService', + 'translation.dumper.po' => 'getTranslation_Dumper_PoService', + 'translation.dumper.qt' => 'getTranslation_Dumper_QtService', + 'translation.dumper.res' => 'getTranslation_Dumper_ResService', + 'translation.dumper.xliff' => 'getTranslation_Dumper_XliffService', + 'translation.dumper.yml' => 'getTranslation_Dumper_YmlService', + 'translation.extractor' => 'getTranslation_ExtractorService', + 'translation.extractor.php' => 'getTranslation_Extractor_PhpService', + 'translation.loader' => 'getTranslation_LoaderService', + 'translation.loader.csv' => 'getTranslation_Loader_CsvService', + 'translation.loader.dat' => 'getTranslation_Loader_DatService', + 'translation.loader.ini' => 'getTranslation_Loader_IniService', + 'translation.loader.json' => 'getTranslation_Loader_JsonService', + 'translation.loader.mo' => 'getTranslation_Loader_MoService', + 'translation.loader.php' => 'getTranslation_Loader_PhpService', + 'translation.loader.po' => 'getTranslation_Loader_PoService', + 'translation.loader.qt' => 'getTranslation_Loader_QtService', + 'translation.loader.res' => 'getTranslation_Loader_ResService', + 'translation.loader.xliff' => 'getTranslation_Loader_XliffService', + 'translation.loader.yml' => 'getTranslation_Loader_YmlService', + 'translation.writer' => 'getTranslation_WriterService', + 'translator' => 'getTranslatorService', + 'translator.default' => 'getTranslator_DefaultService', + 'translator.selector' => 'getTranslator_SelectorService', + 'translator_listener' => 'getTranslatorListenerService', + 'twig' => 'getTwigService', + 'twig.controller.exception' => 'getTwig_Controller_ExceptionService', + 'twig.controller.preview_error' => 'getTwig_Controller_PreviewErrorService', + 'twig.exception_listener' => 'getTwig_ExceptionListenerService', + 'twig.form.renderer' => 'getTwig_Form_RendererService', + 'twig.loader' => 'getTwig_LoaderService', + 'twig.profile' => 'getTwig_ProfileService', + 'twig.runtime.httpkernel' => 'getTwig_Runtime_HttpkernelService', + 'twig.translation.extractor' => 'getTwig_Translation_ExtractorService', + 'uri_signer' => 'getUriSignerService', + 'validate_request_listener' => 'getValidateRequestListenerService', + 'validator' => 'getValidatorService', + 'validator.builder' => 'getValidator_BuilderService', + 'validator.email' => 'getValidator_EmailService', + 'validator.expression' => 'getValidator_ExpressionService', + 'var_dumper.cli_dumper' => 'getVarDumper_CliDumperService', + 'var_dumper.cloner' => 'getVarDumper_ClonerService', + 'web_profiler.controller.exception' => 'getWebProfiler_Controller_ExceptionService', + 'web_profiler.controller.profiler' => 'getWebProfiler_Controller_ProfilerService', + 'web_profiler.controller.router' => 'getWebProfiler_Controller_RouterService', + 'web_profiler.csp.handler' => 'getWebProfiler_Csp_HandlerService', + 'web_profiler.debug_toolbar' => 'getWebProfiler_DebugToolbarService', + ); + $this->privates = array( + 'annotations.reader' => true, + 'cache.annotations' => true, + 'controller_name_converter' => true, + 'debug.file_link_formatter' => true, + 'debug.log_processor' => true, + 'debug.security.access.decision_manager' => true, + 'doctrine.dbal.logger.profiling.default' => true, + 'form.server_params' => true, + 'monolog.processor.psr_log_message' => true, + 'router.request_context' => true, + 'security.authentication.manager' => true, + 'security.authentication.trust_resolver' => true, + 'security.firewall.map' => true, + 'security.logout_url_generator' => true, + 'security.role_hierarchy' => true, + 'session.storage.metadata_bag' => true, + 'swiftmailer.mailer.default.transport.eventdispatcher' => true, + 'templating.locator' => true, + 'translator.selector' => true, + 'web_profiler.csp.handler' => true, + ); + $this->aliases = array( + 'cache.app_clearer' => 'cache.default_clearer', + 'console.command.sensiolabs_security_command_securitycheckercommand' => 'sensio_distribution.security_checker.command', + 'database_connection' => 'doctrine.dbal.default_connection', + 'doctrine.orm.default_metadata_cache' => 'doctrine_cache.providers.doctrine.orm.default_metadata_cache', + 'doctrine.orm.default_query_cache' => 'doctrine_cache.providers.doctrine.orm.default_query_cache', + 'doctrine.orm.default_result_cache' => 'doctrine_cache.providers.doctrine.orm.default_result_cache', + 'doctrine.orm.entity_manager' => 'doctrine.orm.default_entity_manager', + 'event_dispatcher' => 'debug.event_dispatcher', + 'mailer' => 'swiftmailer.mailer.default', + 'session.storage' => 'session.storage.native', + 'swiftmailer.mailer' => 'swiftmailer.mailer.default', + 'swiftmailer.plugin.messagelogger' => 'swiftmailer.mailer.default.plugin.messagelogger', + 'swiftmailer.spool' => 'swiftmailer.mailer.default.spool', + 'swiftmailer.transport' => 'swiftmailer.mailer.default.transport', + 'swiftmailer.transport.real' => 'swiftmailer.mailer.default.transport.real', + ); + } + + /** + * {@inheritdoc} + */ + public function compile() + { + throw new LogicException('You cannot compile a dumped frozen container.'); + } + + /** + * {@inheritdoc} + */ + public function isFrozen() + { + return true; + } + + /** + * Gets the 'annotation_reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Annotations\CachedReader A Doctrine\Common\Annotations\CachedReader instance + */ + protected function getAnnotationReaderService() + { + return $this->services['annotation_reader'] = new \Doctrine\Common\Annotations\CachedReader(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, new \Symfony\Component\Cache\DoctrineProvider(\Symfony\Component\Cache\Adapter\PhpArrayAdapter::create((__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'})), true); + } + + /** + * Gets the 'assets.context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Context\RequestStackContext A Symfony\Component\Asset\Context\RequestStackContext instance + */ + protected function getAssets_ContextService() + { + return $this->services['assets.context'] = new \Symfony\Component\Asset\Context\RequestStackContext($this->get('request_stack')); + } + + /** + * Gets the 'assets.packages' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Packages A Symfony\Component\Asset\Packages instance + */ + protected function getAssets_PackagesService() + { + return $this->services['assets.packages'] = new \Symfony\Component\Asset\Packages(new \Symfony\Component\Asset\PathPackage('', new \Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy(), $this->get('assets.context')), array()); + } + + /** + * Gets the 'cache.app' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\FilesystemAdapter A Symfony\Component\Cache\Adapter\FilesystemAdapter instance + */ + protected function getCache_AppService() + { + $this->services['cache.app'] = $instance = new \Symfony\Component\Cache\Adapter\FilesystemAdapter('2P0pTS1Lqn', 0, (__DIR__.'/pools')); + + if ($this->has('monolog.logger.cache')) { + $instance->setLogger($this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + return $instance; + } + + /** + * Gets the 'cache.default_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer A Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer instance + */ + protected function getCache_DefaultClearerService() + { + $this->services['cache.default_clearer'] = $instance = new \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer(); + + $instance->addPool($this->get('cache.app')); + $instance->addPool($this->get('cache.system')); + $instance->addPool(${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'cache.system' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_SystemService() + { + return $this->services['cache.system'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('bF8tWu38tg', 0, 'Tt1rUGwa3fvpkxQTGpnXNB', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'cache_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer A Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer instance + */ + protected function getCacheClearerService() + { + return $this->services['cache_clearer'] = new \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer(array(0 => $this->get('cache.default_clearer'))); + } + + /** + * Gets the 'cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate A Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate instance + */ + protected function getCacheWarmerService() + { + $a = $this->get('kernel'); + $b = $this->get('templating.filename_parser'); + + $c = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder($a, $b, ($this->targetDirs[3].'/app/Resources')); + + return $this->services['cache_warmer'] = new \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate(array(0 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplatePathsCacheWarmer($c, ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}), 1 => $this->get('kernel.class_cache.cache_warmer'), 2 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer($this->get('translator')), 3 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer($this->get('validator.builder'), (__DIR__.'/validation.php'), \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('iTCx+5mhKU', 0, 'Tt1rUGwa3fvpkxQTGpnXNB', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE))), 4 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer($this->get('router')), 5 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\AnnotationsCacheWarmer(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, (__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}), 6 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheCacheWarmer($this, $c, array()), 7 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer($this->get('twig'), new \Symfony\Bundle\TwigBundle\TemplateIterator($a, ($this->targetDirs[3].'/app'), array())), 8 => new \Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer($this->get('doctrine')))); + } + + /** + * Gets the 'config_cache_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Config\ResourceCheckerConfigCacheFactory A Symfony\Component\Config\ResourceCheckerConfigCacheFactory instance + */ + protected function getConfigCacheFactoryService() + { + return $this->services['config_cache_factory'] = new \Symfony\Component\Config\ResourceCheckerConfigCacheFactory(array(0 => new \Symfony\Component\Config\Resource\SelfCheckingResourceChecker())); + } + + /** + * Gets the 'data_collector.dump' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector A Symfony\Component\HttpKernel\DataCollector\DumpDataCollector instance + */ + protected function getDataCollector_DumpService() + { + return $this->services['data_collector.dump'] = new \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector($this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, 'UTF-8', $this->get('request_stack'), NULL); + } + + /** + * Gets the 'data_collector.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataCollector A Symfony\Component\Form\Extension\DataCollector\FormDataCollector instance + */ + protected function getDataCollector_FormService() + { + return $this->services['data_collector.form'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataCollector($this->get('data_collector.form.extractor'), false); + } + + /** + * Gets the 'data_collector.form.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor A Symfony\Component\Form\Extension\DataCollector\FormDataExtractor instance + */ + protected function getDataCollector_Form_ExtractorService() + { + return $this->services['data_collector.form.extractor'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor(); + } + + /** + * Gets the 'data_collector.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector instance + */ + protected function getDataCollector_RequestService() + { + return $this->services['data_collector.request'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector(); + } + + /** + * Gets the 'data_collector.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector instance + */ + protected function getDataCollector_RouterService() + { + return $this->services['data_collector.router'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector(); + } + + /** + * Gets the 'debug.argument_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver A Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver instance + */ + protected function getDebug_ArgumentResolverService() + { + return $this->services['debug.argument_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver(new \Symfony\Component\HttpKernel\Controller\ArgumentResolver(new \Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory(), array(0 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver(), 1 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver(), 2 => new \Symfony\Bundle\SecurityBundle\SecurityUserValueResolver($this->get('security.token_storage')), 3 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver(), 4 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver())), $this->get('debug.stopwatch')); + } + + /** + * Gets the 'debug.controller_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver A Symfony\Component\HttpKernel\Controller\TraceableControllerResolver instance + */ + protected function getDebug_ControllerResolverService() + { + return $this->services['debug.controller_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver(new \Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver($this, ${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)), $this->get('debug.stopwatch'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'debug.debug_handlers_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener A Symfony\Component\HttpKernel\EventListener\DebugHandlersListener instance + */ + protected function getDebug_DebugHandlersListenerService() + { + return $this->services['debug.debug_handlers_listener'] = new \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener(NULL, $this->get('monolog.logger.php', ContainerInterface::NULL_ON_INVALID_REFERENCE), -1, -1, true, ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, true); + } + + /** + * Gets the 'debug.dump_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DumpListener A Symfony\Component\HttpKernel\EventListener\DumpListener instance + */ + protected function getDebug_DumpListenerService() + { + return $this->services['debug.dump_listener'] = new \Symfony\Component\HttpKernel\EventListener\DumpListener($this->get('var_dumper.cloner'), $this->get('var_dumper.cli_dumper')); + } + + /** + * Gets the 'debug.event_dispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher A Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher instance + */ + protected function getDebug_EventDispatcherService() + { + $this->services['debug.event_dispatcher'] = $instance = new \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher(new \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher($this), $this->get('debug.stopwatch'), $this->get('monolog.logger.event', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->addListenerService('kernel.controller', array(0 => 'data_collector.router', 1 => 'onKernelController'), 0); + $instance->addSubscriberService('response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener'); + $instance->addSubscriberService('streamed_response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener'); + $instance->addSubscriberService('locale_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener'); + $instance->addSubscriberService('validate_request_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener'); + $instance->addSubscriberService('translator_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\TranslatorListener'); + $instance->addSubscriberService('session_listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener'); + $instance->addSubscriberService('session.save_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\SaveSessionListener'); + $instance->addSubscriberService('fragment.listener', 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener'); + $instance->addSubscriberService('profiler_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener'); + $instance->addSubscriberService('data_collector.request', 'Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RequestDataCollector'); + $instance->addSubscriberService('debug.debug_handlers_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener'); + $instance->addSubscriberService('router_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener'); + $instance->addSubscriberService('security.firewall', 'Symfony\\Component\\Security\\Http\\Firewall'); + $instance->addSubscriberService('security.rememberme.response_listener', 'Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener'); + $instance->addSubscriberService('twig.exception_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ExceptionListener'); + $instance->addSubscriberService('monolog.handler.console', 'Symfony\\Bridge\\Monolog\\Handler\\ConsoleHandler'); + $instance->addSubscriberService('swiftmailer.email_sender.listener', 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener'); + $instance->addSubscriberService('sensio_framework_extra.controller.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener'); + $instance->addSubscriberService('sensio_framework_extra.converter.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener'); + $instance->addSubscriberService('sensio_framework_extra.view.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener'); + $instance->addSubscriberService('sensio_framework_extra.cache.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener'); + $instance->addSubscriberService('sensio_framework_extra.security.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener'); + $instance->addSubscriberService('debug.dump_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener'); + $instance->addSubscriberService('web_profiler.debug_toolbar', 'Symfony\\Bundle\\WebProfilerBundle\\EventListener\\WebDebugToolbarListener'); + + return $instance; + } + + /** + * Gets the 'debug.stopwatch' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Stopwatch\Stopwatch A Symfony\Component\Stopwatch\Stopwatch instance + */ + protected function getDebug_StopwatchService() + { + return $this->services['debug.stopwatch'] = new \Symfony\Component\Stopwatch\Stopwatch(); + } + + /** + * Gets the 'doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Registry A Doctrine\Bundle\DoctrineBundle\Registry instance + */ + protected function getDoctrineService() + { + return $this->services['doctrine'] = new \Doctrine\Bundle\DoctrineBundle\Registry($this, array('default' => 'doctrine.dbal.default_connection'), array('default' => 'doctrine.orm.default_entity_manager'), 'default', 'default'); + } + + /** + * Gets the 'doctrine.dbal.connection_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ConnectionFactory A Doctrine\Bundle\DoctrineBundle\ConnectionFactory instance + */ + protected function getDoctrine_Dbal_ConnectionFactoryService() + { + return $this->services['doctrine.dbal.connection_factory'] = new \Doctrine\Bundle\DoctrineBundle\ConnectionFactory(array()); + } + + /** + * Gets the 'doctrine.dbal.default_connection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\DBAL\Connection A Doctrine\DBAL\Connection instance + */ + protected function getDoctrine_Dbal_DefaultConnectionService() + { + $a = new \Doctrine\DBAL\Logging\LoggerChain(); + $a->addLogger(new \Symfony\Bridge\Doctrine\Logger\DbalLogger($this->get('monolog.logger.doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $a->addLogger(${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $b = new \Doctrine\DBAL\Configuration(); + $b->setSQLLogger($a); + + $c = new \Symfony\Bridge\Doctrine\ContainerAwareEventManager($this); + $c->addEventListener(array(0 => 'loadClassMetadata'), $this->get('doctrine.orm.default_listeners.attach_entity_listeners')); + + return $this->services['doctrine.dbal.default_connection'] = $this->get('doctrine.dbal.connection_factory')->createConnection(array('driver' => 'pdo_mysql', 'host' => '127.0.0.1', 'port' => NULL, 'dbname' => 'symfony', 'user' => 'root', 'password' => NULL, 'charset' => 'UTF8', 'driverOptions' => array(), 'defaultTableOptions' => array()), $b, $c, array()); + } + + /** + * Gets the 'doctrine.orm.default_entity_listener_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver A Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver instance + */ + protected function getDoctrine_Orm_DefaultEntityListenerResolverService() + { + return $this->services['doctrine.orm.default_entity_listener_resolver'] = new \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver($this); + } + + /** + * Gets the 'doctrine.orm.default_entity_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @param bool $lazyLoad whether to try lazy-loading the service with a proxy + * + * @return \Doctrine\ORM\EntityManager A Doctrine\ORM\EntityManager instance + */ + protected function getDoctrine_Orm_DefaultEntityManagerService($lazyLoad = true) + { + $a = new \Doctrine\ORM\Configuration(); + $a->setEntityNamespaces(array()); + $a->setMetadataCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_metadata_cache')); + $a->setQueryCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_query_cache')); + $a->setResultCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_result_cache')); + $a->setMetadataDriverImpl(new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()); + $a->setProxyDir((__DIR__.'/doctrine/orm/Proxies')); + $a->setProxyNamespace('Proxies'); + $a->setAutoGenerateProxyClasses(true); + $a->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory'); + $a->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository'); + $a->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy()); + $a->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy()); + $a->setEntityListenerResolver($this->get('doctrine.orm.default_entity_listener_resolver')); + + $this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create($this->get('doctrine.dbal.default_connection'), $a); + + $this->get('doctrine.orm.default_manager_configurator')->configure($instance); + + return $instance; + } + + /** + * Gets the 'doctrine.orm.default_entity_manager.property_info_extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor A Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor instance + */ + protected function getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService() + { + return $this->services['doctrine.orm.default_entity_manager.property_info_extractor'] = new \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor($this->get('doctrine.orm.default_entity_manager')->getMetadataFactory()); + } + + /** + * Gets the 'doctrine.orm.default_listeners.attach_entity_listeners' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\ORM\Tools\AttachEntityListenersListener A Doctrine\ORM\Tools\AttachEntityListenersListener instance + */ + protected function getDoctrine_Orm_DefaultListeners_AttachEntityListenersService() + { + return $this->services['doctrine.orm.default_listeners.attach_entity_listeners'] = new \Doctrine\ORM\Tools\AttachEntityListenersListener(); + } + + /** + * Gets the 'doctrine.orm.default_manager_configurator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator A Doctrine\Bundle\DoctrineBundle\ManagerConfigurator instance + */ + protected function getDoctrine_Orm_DefaultManagerConfiguratorService() + { + return $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array()); + } + + /** + * Gets the 'doctrine.orm.validator.unique' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator A Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator instance + */ + protected function getDoctrine_Orm_Validator_UniqueService() + { + return $this->services['doctrine.orm.validator.unique'] = new \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator($this->get('doctrine')); + } + + /** + * Gets the 'doctrine.orm.validator_initializer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer A Symfony\Bridge\Doctrine\Validator\DoctrineInitializer instance + */ + protected function getDoctrine_Orm_ValidatorInitializerService() + { + return $this->services['doctrine.orm.validator_initializer'] = new \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer($this->get('doctrine')); + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_query_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_result_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb'); + + return $instance; + } + + /** + * Gets the 'file_locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Config\FileLocator A Symfony\Component\HttpKernel\Config\FileLocator instance + */ + protected function getFileLocatorService() + { + return $this->services['file_locator'] = new \Symfony\Component\HttpKernel\Config\FileLocator($this->get('kernel'), ($this->targetDirs[3].'/app/Resources')); + } + + /** + * Gets the 'filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Filesystem\Filesystem A Symfony\Component\Filesystem\Filesystem instance + */ + protected function getFilesystemService() + { + return $this->services['filesystem'] = new \Symfony\Component\Filesystem\Filesystem(); + } + + /** + * Gets the 'form.factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormFactory A Symfony\Component\Form\FormFactory instance + */ + protected function getForm_FactoryService() + { + return $this->services['form.factory'] = new \Symfony\Component\Form\FormFactory($this->get('form.registry'), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.registry' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormRegistry A Symfony\Component\Form\FormRegistry instance + */ + protected function getForm_RegistryService() + { + return $this->services['form.registry'] = new \Symfony\Component\Form\FormRegistry(array(0 => new \Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension($this, array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => 'form.type.form', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => 'form.type.choice', 'Symfony\\Bridge\\Doctrine\\Form\\Type\\EntityType' => 'form.type.entity'), array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => array(0 => 'form.type_extension.form.http_foundation', 1 => 'form.type_extension.form.validator', 2 => 'form.type_extension.upload.validator', 3 => 'form.type_extension.csrf', 4 => 'form.type_extension.form.data_collector'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => array(0 => 'form.type_extension.repeated.validator'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => array(0 => 'form.type_extension.submit.validator')), array(0 => 'form.type_guesser.validator', 1 => 'form.type_guesser.doctrine'))), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.resolved_type_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy A Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy instance + */ + protected function getForm_ResolvedTypeFactoryService() + { + return $this->services['form.resolved_type_factory'] = new \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy(new \Symfony\Component\Form\ResolvedFormTypeFactory(), $this->get('data_collector.form')); + } + + /** + * Gets the 'form.type.birthday' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\BirthdayType A Symfony\Component\Form\Extension\Core\Type\BirthdayType instance + * + * @deprecated The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_BirthdayService() + { + @trigger_error('The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.birthday'] = new \Symfony\Component\Form\Extension\Core\Type\BirthdayType(); + } + + /** + * Gets the 'form.type.button' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ButtonType A Symfony\Component\Form\Extension\Core\Type\ButtonType instance + * + * @deprecated The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ButtonService() + { + @trigger_error('The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.button'] = new \Symfony\Component\Form\Extension\Core\Type\ButtonType(); + } + + /** + * Gets the 'form.type.checkbox' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CheckboxType A Symfony\Component\Form\Extension\Core\Type\CheckboxType instance + * + * @deprecated The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CheckboxService() + { + @trigger_error('The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.checkbox'] = new \Symfony\Component\Form\Extension\Core\Type\CheckboxType(); + } + + /** + * Gets the 'form.type.choice' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ChoiceType A Symfony\Component\Form\Extension\Core\Type\ChoiceType instance + */ + protected function getForm_Type_ChoiceService() + { + return $this->services['form.type.choice'] = new \Symfony\Component\Form\Extension\Core\Type\ChoiceType(new \Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator(new \Symfony\Component\Form\ChoiceList\Factory\PropertyAccessDecorator(new \Symfony\Component\Form\ChoiceList\Factory\DefaultChoiceListFactory(), $this->get('property_accessor')))); + } + + /** + * Gets the 'form.type.collection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CollectionType A Symfony\Component\Form\Extension\Core\Type\CollectionType instance + * + * @deprecated The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CollectionService() + { + @trigger_error('The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.collection'] = new \Symfony\Component\Form\Extension\Core\Type\CollectionType(); + } + + /** + * Gets the 'form.type.country' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CountryType A Symfony\Component\Form\Extension\Core\Type\CountryType instance + * + * @deprecated The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CountryService() + { + @trigger_error('The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.country'] = new \Symfony\Component\Form\Extension\Core\Type\CountryType(); + } + + /** + * Gets the 'form.type.currency' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CurrencyType A Symfony\Component\Form\Extension\Core\Type\CurrencyType instance + * + * @deprecated The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CurrencyService() + { + @trigger_error('The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.currency'] = new \Symfony\Component\Form\Extension\Core\Type\CurrencyType(); + } + + /** + * Gets the 'form.type.date' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateType A Symfony\Component\Form\Extension\Core\Type\DateType instance + * + * @deprecated The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DateService() + { + @trigger_error('The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.date'] = new \Symfony\Component\Form\Extension\Core\Type\DateType(); + } + + /** + * Gets the 'form.type.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateTimeType A Symfony\Component\Form\Extension\Core\Type\DateTimeType instance + * + * @deprecated The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DatetimeService() + { + @trigger_error('The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.datetime'] = new \Symfony\Component\Form\Extension\Core\Type\DateTimeType(); + } + + /** + * Gets the 'form.type.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\EmailType A Symfony\Component\Form\Extension\Core\Type\EmailType instance + * + * @deprecated The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_EmailService() + { + @trigger_error('The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.email'] = new \Symfony\Component\Form\Extension\Core\Type\EmailType(); + } + + /** + * Gets the 'form.type.entity' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\Type\EntityType A Symfony\Bridge\Doctrine\Form\Type\EntityType instance + */ + protected function getForm_Type_EntityService() + { + return $this->services['form.type.entity'] = new \Symfony\Bridge\Doctrine\Form\Type\EntityType($this->get('doctrine')); + } + + /** + * Gets the 'form.type.file' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FileType A Symfony\Component\Form\Extension\Core\Type\FileType instance + * + * @deprecated The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_FileService() + { + @trigger_error('The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.file'] = new \Symfony\Component\Form\Extension\Core\Type\FileType(); + } + + /** + * Gets the 'form.type.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FormType A Symfony\Component\Form\Extension\Core\Type\FormType instance + */ + protected function getForm_Type_FormService() + { + return $this->services['form.type.form'] = new \Symfony\Component\Form\Extension\Core\Type\FormType($this->get('property_accessor')); + } + + /** + * Gets the 'form.type.hidden' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\HiddenType A Symfony\Component\Form\Extension\Core\Type\HiddenType instance + * + * @deprecated The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_HiddenService() + { + @trigger_error('The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.hidden'] = new \Symfony\Component\Form\Extension\Core\Type\HiddenType(); + } + + /** + * Gets the 'form.type.integer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\IntegerType A Symfony\Component\Form\Extension\Core\Type\IntegerType instance + * + * @deprecated The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_IntegerService() + { + @trigger_error('The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.integer'] = new \Symfony\Component\Form\Extension\Core\Type\IntegerType(); + } + + /** + * Gets the 'form.type.language' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LanguageType A Symfony\Component\Form\Extension\Core\Type\LanguageType instance + * + * @deprecated The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LanguageService() + { + @trigger_error('The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.language'] = new \Symfony\Component\Form\Extension\Core\Type\LanguageType(); + } + + /** + * Gets the 'form.type.locale' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LocaleType A Symfony\Component\Form\Extension\Core\Type\LocaleType instance + * + * @deprecated The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LocaleService() + { + @trigger_error('The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.locale'] = new \Symfony\Component\Form\Extension\Core\Type\LocaleType(); + } + + /** + * Gets the 'form.type.money' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\MoneyType A Symfony\Component\Form\Extension\Core\Type\MoneyType instance + * + * @deprecated The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_MoneyService() + { + @trigger_error('The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.money'] = new \Symfony\Component\Form\Extension\Core\Type\MoneyType(); + } + + /** + * Gets the 'form.type.number' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\NumberType A Symfony\Component\Form\Extension\Core\Type\NumberType instance + * + * @deprecated The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_NumberService() + { + @trigger_error('The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.number'] = new \Symfony\Component\Form\Extension\Core\Type\NumberType(); + } + + /** + * Gets the 'form.type.password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PasswordType A Symfony\Component\Form\Extension\Core\Type\PasswordType instance + * + * @deprecated The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PasswordService() + { + @trigger_error('The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.password'] = new \Symfony\Component\Form\Extension\Core\Type\PasswordType(); + } + + /** + * Gets the 'form.type.percent' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PercentType A Symfony\Component\Form\Extension\Core\Type\PercentType instance + * + * @deprecated The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PercentService() + { + @trigger_error('The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.percent'] = new \Symfony\Component\Form\Extension\Core\Type\PercentType(); + } + + /** + * Gets the 'form.type.radio' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RadioType A Symfony\Component\Form\Extension\Core\Type\RadioType instance + * + * @deprecated The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RadioService() + { + @trigger_error('The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.radio'] = new \Symfony\Component\Form\Extension\Core\Type\RadioType(); + } + + /** + * Gets the 'form.type.range' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RangeType A Symfony\Component\Form\Extension\Core\Type\RangeType instance + * + * @deprecated The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RangeService() + { + @trigger_error('The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.range'] = new \Symfony\Component\Form\Extension\Core\Type\RangeType(); + } + + /** + * Gets the 'form.type.repeated' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RepeatedType A Symfony\Component\Form\Extension\Core\Type\RepeatedType instance + * + * @deprecated The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RepeatedService() + { + @trigger_error('The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.repeated'] = new \Symfony\Component\Form\Extension\Core\Type\RepeatedType(); + } + + /** + * Gets the 'form.type.reset' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ResetType A Symfony\Component\Form\Extension\Core\Type\ResetType instance + * + * @deprecated The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ResetService() + { + @trigger_error('The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.reset'] = new \Symfony\Component\Form\Extension\Core\Type\ResetType(); + } + + /** + * Gets the 'form.type.search' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SearchType A Symfony\Component\Form\Extension\Core\Type\SearchType instance + * + * @deprecated The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SearchService() + { + @trigger_error('The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.search'] = new \Symfony\Component\Form\Extension\Core\Type\SearchType(); + } + + /** + * Gets the 'form.type.submit' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SubmitType A Symfony\Component\Form\Extension\Core\Type\SubmitType instance + * + * @deprecated The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SubmitService() + { + @trigger_error('The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.submit'] = new \Symfony\Component\Form\Extension\Core\Type\SubmitType(); + } + + /** + * Gets the 'form.type.text' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextType A Symfony\Component\Form\Extension\Core\Type\TextType instance + * + * @deprecated The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextService() + { + @trigger_error('The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.text'] = new \Symfony\Component\Form\Extension\Core\Type\TextType(); + } + + /** + * Gets the 'form.type.textarea' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextareaType A Symfony\Component\Form\Extension\Core\Type\TextareaType instance + * + * @deprecated The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextareaService() + { + @trigger_error('The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.textarea'] = new \Symfony\Component\Form\Extension\Core\Type\TextareaType(); + } + + /** + * Gets the 'form.type.time' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimeType A Symfony\Component\Form\Extension\Core\Type\TimeType instance + * + * @deprecated The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimeService() + { + @trigger_error('The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.time'] = new \Symfony\Component\Form\Extension\Core\Type\TimeType(); + } + + /** + * Gets the 'form.type.timezone' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimezoneType A Symfony\Component\Form\Extension\Core\Type\TimezoneType instance + * + * @deprecated The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimezoneService() + { + @trigger_error('The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.timezone'] = new \Symfony\Component\Form\Extension\Core\Type\TimezoneType(); + } + + /** + * Gets the 'form.type.url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\UrlType A Symfony\Component\Form\Extension\Core\Type\UrlType instance + * + * @deprecated The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_UrlService() + { + @trigger_error('The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.url'] = new \Symfony\Component\Form\Extension\Core\Type\UrlType(); + } + + /** + * Gets the 'form.type_extension.csrf' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension A Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension instance + */ + protected function getForm_TypeExtension_CsrfService() + { + return $this->services['form.type_extension.csrf'] = new \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension($this->get('security.csrf.token_manager'), true, '_token', $this->get('translator.default'), 'validators', ${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'}); + } + + /** + * Gets the 'form.type_extension.form.data_collector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension A Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension instance + */ + protected function getForm_TypeExtension_Form_DataCollectorService() + { + return $this->services['form.type_extension.form.data_collector'] = new \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension($this->get('data_collector.form')); + } + + /** + * Gets the 'form.type_extension.form.http_foundation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension A Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension instance + */ + protected function getForm_TypeExtension_Form_HttpFoundationService() + { + return $this->services['form.type_extension.form.http_foundation'] = new \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension(new \Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler(${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'})); + } + + /** + * Gets the 'form.type_extension.form.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Form_ValidatorService() + { + return $this->services['form.type_extension.form.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension($this->get('validator')); + } + + /** + * Gets the 'form.type_extension.repeated.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Repeated_ValidatorService() + { + return $this->services['form.type_extension.repeated.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.submit.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Submit_ValidatorService() + { + return $this->services['form.type_extension.submit.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.upload.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension instance + */ + protected function getForm_TypeExtension_Upload_ValidatorService() + { + return $this->services['form.type_extension.upload.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension($this->get('translator'), 'validators'); + } + + /** + * Gets the 'form.type_guesser.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser A Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser instance + */ + protected function getForm_TypeGuesser_DoctrineService() + { + return $this->services['form.type_guesser.doctrine'] = new \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser($this->get('doctrine')); + } + + /** + * Gets the 'form.type_guesser.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser A Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser instance + */ + protected function getForm_TypeGuesser_ValidatorService() + { + return $this->services['form.type_guesser.validator'] = new \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser($this->get('validator')); + } + + /** + * Gets the 'fragment.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler A Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler instance + */ + protected function getFragment_HandlerService() + { + $this->services['fragment.handler'] = $instance = new \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler($this, $this->get('request_stack'), true); + + $instance->addRendererService('inline', 'fragment.renderer.inline'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('esi', 'fragment.renderer.esi'); + $instance->addRendererService('ssi', 'fragment.renderer.ssi'); + + return $instance; + } + + /** + * Gets the 'fragment.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\FragmentListener A Symfony\Component\HttpKernel\EventListener\FragmentListener instance + */ + protected function getFragment_ListenerService() + { + return $this->services['fragment.listener'] = new \Symfony\Component\HttpKernel\EventListener\FragmentListener($this->get('uri_signer'), '/_fragment'); + } + + /** + * Gets the 'fragment.renderer.esi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer instance + */ + protected function getFragment_Renderer_EsiService() + { + $this->services['fragment.renderer.esi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.hinclude' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer A Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer instance + */ + protected function getFragment_Renderer_HincludeService() + { + $this->services['fragment.renderer.hinclude'] = $instance = new \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer($this->get('twig'), $this->get('uri_signer'), NULL); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.inline' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer A Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer instance + */ + protected function getFragment_Renderer_InlineService() + { + $this->services['fragment.renderer.inline'] = $instance = new \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer($this->get('http_kernel'), $this->get('debug.event_dispatcher')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.ssi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer instance + */ + protected function getFragment_Renderer_SsiService() + { + $this->services['fragment.renderer.ssi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'http_kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\HttpKernel A Symfony\Component\HttpKernel\HttpKernel instance + */ + protected function getHttpKernelService() + { + return $this->services['http_kernel'] = new \Symfony\Component\HttpKernel\HttpKernel($this->get('debug.event_dispatcher'), $this->get('debug.controller_resolver'), $this->get('request_stack'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getKernelService() + { + throw new RuntimeException('You have requested a synthetic service ("kernel"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'kernel.class_cache.cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer A Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer instance + */ + protected function getKernel_ClassCache_CacheWarmerService() + { + return $this->services['kernel.class_cache.cache_warmer'] = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer(array(0 => 'Symfony\\Component\\HttpFoundation\\ParameterBag', 1 => 'Symfony\\Component\\HttpFoundation\\HeaderBag', 2 => 'Symfony\\Component\\HttpFoundation\\FileBag', 3 => 'Symfony\\Component\\HttpFoundation\\ServerBag', 4 => 'Symfony\\Component\\HttpFoundation\\Request', 5 => 'Symfony\\Component\\HttpKernel\\Kernel', 6 => 'Symfony\\Component\\ClassLoader\\ClassCollectionLoader', 7 => 'Symfony\\Component\\ClassLoader\\ApcClassLoader')); + } + + /** + * Gets the 'locale_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\LocaleListener A Symfony\Component\HttpKernel\EventListener\LocaleListener instance + */ + protected function getLocaleListenerService() + { + return $this->services['locale_listener'] = new \Symfony\Component\HttpKernel\EventListener\LocaleListener($this->get('request_stack'), 'en', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'logger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getLoggerService() + { + $this->services['logger'] = $instance = new \Symfony\Bridge\Monolog\Logger('app'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->useMicrosecondTimestamps(true); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.activation_strategy.not_found' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy A Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy instance + */ + protected function getMonolog_ActivationStrategy_NotFoundService() + { + return $this->services['monolog.activation_strategy.not_found'] = new \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.console' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\ConsoleHandler A Symfony\Bridge\Monolog\Handler\ConsoleHandler instance + */ + protected function getMonolog_Handler_ConsoleService() + { + $this->services['monolog.handler.console'] = $instance = new \Symfony\Bridge\Monolog\Handler\ConsoleHandler(NULL, true, array()); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.fingers_crossed.error_level_activation_strategy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy A Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy instance + */ + protected function getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService() + { + return $this->services['monolog.handler.fingers_crossed.error_level_activation_strategy'] = new \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\StreamHandler A Monolog\Handler\StreamHandler instance + */ + protected function getMonolog_Handler_MainService() + { + $this->services['monolog.handler.main'] = $instance = new \Monolog\Handler\StreamHandler(($this->targetDirs[2].'/logs/dev.log'), 100, true, NULL); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.null_internal' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\NullHandler A Monolog\Handler\NullHandler instance + */ + protected function getMonolog_Handler_NullInternalService() + { + return $this->services['monolog.handler.null_internal'] = new \Monolog\Handler\NullHandler(); + } + + /** + * Gets the 'monolog.logger.cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_CacheService() + { + $this->services['monolog.logger.cache'] = $instance = new \Symfony\Bridge\Monolog\Logger('cache'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_DoctrineService() + { + $this->services['monolog.logger.doctrine'] = $instance = new \Symfony\Bridge\Monolog\Logger('doctrine'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.event' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_EventService() + { + $this->services['monolog.logger.event'] = $instance = new \Symfony\Bridge\Monolog\Logger('event'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.null_internal')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_PhpService() + { + $this->services['monolog.logger.php'] = $instance = new \Symfony\Bridge\Monolog\Logger('php'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_ProfilerService() + { + $this->services['monolog.logger.profiler'] = $instance = new \Symfony\Bridge\Monolog\Logger('profiler'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RequestService() + { + $this->services['monolog.logger.request'] = $instance = new \Symfony\Bridge\Monolog\Logger('request'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RouterService() + { + $this->services['monolog.logger.router'] = $instance = new \Symfony\Bridge\Monolog\Logger('router'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_SecurityService() + { + $this->services['monolog.logger.security'] = $instance = new \Symfony\Bridge\Monolog\Logger('security'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TemplatingService() + { + $this->services['monolog.logger.templating'] = $instance = new \Symfony\Bridge\Monolog\Logger('templating'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.translation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TranslationService() + { + $this->services['monolog.logger.translation'] = $instance = new \Symfony\Bridge\Monolog\Logger('translation'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Profiler\Profiler A Symfony\Component\HttpKernel\Profiler\Profiler instance + */ + protected function getProfilerService() + { + $a = $this->get('monolog.logger.profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $c = new \Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector($this->get('doctrine')); + $c->addLogger('default', ${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $d = new \Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector(); + if ($this->has('kernel')) { + $d->setKernel($b); + } + + $this->services['profiler'] = $instance = new \Symfony\Component\HttpKernel\Profiler\Profiler(new \Symfony\Component\HttpKernel\Profiler\FileProfilerStorage(('file:'.__DIR__.'/profiler')), $a); + + $instance->add($this->get('data_collector.request')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\TimeDataCollector($b, $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\AjaxDataCollector()); + $instance->add($this->get('data_collector.form')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector($a)); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\EventDataCollector($this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add($this->get('data_collector.router')); + $instance->add(new \Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, ${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, ${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'})); + $instance->add(new \Symfony\Bridge\Twig\DataCollector\TwigDataCollector($this->get('twig.profile'))); + $instance->add($c); + $instance->add(new \Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector($this)); + $instance->add($this->get('data_collector.dump')); + $instance->add($d); + + return $instance; + } + + /** + * Gets the 'profiler_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ProfilerListener A Symfony\Component\HttpKernel\EventListener\ProfilerListener instance + */ + protected function getProfilerListenerService() + { + return $this->services['profiler_listener'] = new \Symfony\Component\HttpKernel\EventListener\ProfilerListener($this->get('profiler'), $this->get('request_stack'), NULL, false, false); + } + + /** + * Gets the 'property_accessor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\PropertyAccess\PropertyAccessor A Symfony\Component\PropertyAccess\PropertyAccessor instance + */ + protected function getPropertyAccessorService() + { + return $this->services['property_accessor'] = new \Symfony\Component\PropertyAccess\PropertyAccessor(false, false, new \Symfony\Component\Cache\Adapter\ArrayAdapter(0, false)); + } + + /** + * Gets the 'request_stack' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\RequestStack A Symfony\Component\HttpFoundation\RequestStack instance + */ + protected function getRequestStackService() + { + return $this->services['request_stack'] = new \Symfony\Component\HttpFoundation\RequestStack(); + } + + /** + * Gets the 'response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ResponseListener A Symfony\Component\HttpKernel\EventListener\ResponseListener instance + */ + protected function getResponseListenerService() + { + return $this->services['response_listener'] = new \Symfony\Component\HttpKernel\EventListener\ResponseListener('UTF-8'); + } + + /** + * Gets the 'router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\Router A Symfony\Bundle\FrameworkBundle\Routing\Router instance + */ + protected function getRouterService() + { + $this->services['router'] = $instance = new \Symfony\Bundle\FrameworkBundle\Routing\Router($this, ($this->targetDirs[3].'/app/config/routing_dev.yml'), array('cache_dir' => __DIR__, 'debug' => true, 'generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', 'generator_cache_class' => 'appDevDebugProjectContainerUrlGenerator', 'matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', 'matcher_cache_class' => 'appDevDebugProjectContainerUrlMatcher', 'strict_requirements' => true), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'router_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\RouterListener A Symfony\Component\HttpKernel\EventListener\RouterListener instance + */ + protected function getRouterListenerService() + { + return $this->services['router_listener'] = new \Symfony\Component\HttpKernel\EventListener\RouterListener($this->get('router'), $this->get('request_stack'), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'routing.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader A Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader instance + */ + protected function getRouting_LoaderService() + { + $a = $this->get('file_locator'); + $b = $this->get('annotation_reader'); + + $c = new \Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader($b); + + $d = new \Symfony\Component\Config\Loader\LoaderResolver(); + $d->addLoader(new \Symfony\Component\Routing\Loader\XmlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\YamlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\PhpFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DirectoryLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader($this)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationDirectoryLoader($a, $c)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationFileLoader($a, $c)); + $d->addLoader($c); + + return $this->services['routing.loader'] = new \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader(${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $d); + } + + /** + * Gets the 'security.authentication.guard_handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Guard\GuardAuthenticatorHandler A Symfony\Component\Security\Guard\GuardAuthenticatorHandler instance + */ + protected function getSecurity_Authentication_GuardHandlerService() + { + return $this->services['security.authentication.guard_handler'] = new \Symfony\Component\Security\Guard\GuardAuthenticatorHandler($this->get('security.token_storage'), $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.authentication_utils' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Authentication\AuthenticationUtils A Symfony\Component\Security\Http\Authentication\AuthenticationUtils instance + */ + protected function getSecurity_AuthenticationUtilsService() + { + return $this->services['security.authentication_utils'] = new \Symfony\Component\Security\Http\Authentication\AuthenticationUtils($this->get('request_stack')); + } + + /** + * Gets the 'security.authorization_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authorization\AuthorizationChecker A Symfony\Component\Security\Core\Authorization\AuthorizationChecker instance + */ + protected function getSecurity_AuthorizationCheckerService() + { + return $this->services['security.authorization_checker'] = new \Symfony\Component\Security\Core\Authorization\AuthorizationChecker($this->get('security.token_storage'), ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, false); + } + + /** + * Gets the 'security.csrf.token_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Csrf\CsrfTokenManager A Symfony\Component\Security\Csrf\CsrfTokenManager instance + */ + protected function getSecurity_Csrf_TokenManagerService() + { + return $this->services['security.csrf.token_manager'] = new \Symfony\Component\Security\Csrf\CsrfTokenManager(new \Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator(), new \Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage($this->get('session'))); + } + + /** + * Gets the 'security.encoder_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\EncoderFactory A Symfony\Component\Security\Core\Encoder\EncoderFactory instance + */ + protected function getSecurity_EncoderFactoryService() + { + return $this->services['security.encoder_factory'] = new \Symfony\Component\Security\Core\Encoder\EncoderFactory(array()); + } + + /** + * Gets the 'security.firewall' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Firewall A Symfony\Component\Security\Http\Firewall instance + */ + protected function getSecurity_FirewallService() + { + return $this->services['security.firewall'] = new \Symfony\Component\Security\Http\Firewall(${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'}, $this->get('debug.event_dispatcher')); + } + + /** + * Gets the 'security.firewall.map.context.dev' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_DevService() + { + return $this->services['security.firewall.map.context.dev'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(), NULL, new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('dev', 'security.user_checker', 'security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d', false, '', '', '', '', '', '', array())); + } + + /** + * Gets the 'security.firewall.map.context.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_MainService() + { + $a = $this->get('monolog.logger.security', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('security.token_storage'); + $c = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + $d = ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}; + $e = $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $f = new \Symfony\Component\Security\Http\AccessMap(); + + return $this->services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($f, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE), $c), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '58c46f45a05e13.86720536', $a, $d), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, $f, $d)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $c, new \Symfony\Component\Security\Http\HttpUtils($e, $e), 'main', NULL, NULL, NULL, $a, false), new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('main', 'security.user_checker', NULL, true, false, 'security.user.provider.concrete.in_memory', 'main', NULL, NULL, NULL, array(0 => 'anonymous'))); + } + + /** + * Gets the 'security.password_encoder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder A Symfony\Component\Security\Core\Encoder\UserPasswordEncoder instance + */ + protected function getSecurity_PasswordEncoderService() + { + return $this->services['security.password_encoder'] = new \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder($this->get('security.encoder_factory')); + } + + /** + * Gets the 'security.rememberme.response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\RememberMe\ResponseListener A Symfony\Component\Security\Http\RememberMe\ResponseListener instance + */ + protected function getSecurity_Rememberme_ResponseListenerService() + { + return $this->services['security.rememberme.response_listener'] = new \Symfony\Component\Security\Http\RememberMe\ResponseListener(); + } + + /** + * Gets the 'security.token_storage' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage A Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage instance + */ + protected function getSecurity_TokenStorageService() + { + return $this->services['security.token_storage'] = new \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage(); + } + + /** + * Gets the 'security.validator.user_password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator A Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator instance + */ + protected function getSecurity_Validator_UserPasswordService() + { + return $this->services['security.validator.user_password'] = new \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator($this->get('security.token_storage'), $this->get('security.encoder_factory')); + } + + /** + * Gets the 'sensio_distribution.security_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\SecurityChecker A SensioLabs\Security\SecurityChecker instance + */ + protected function getSensioDistribution_SecurityCheckerService() + { + return $this->services['sensio_distribution.security_checker'] = new \SensioLabs\Security\SecurityChecker(); + } + + /** + * Gets the 'sensio_distribution.security_checker.command' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\Command\SecurityCheckerCommand A SensioLabs\Security\Command\SecurityCheckerCommand instance + */ + protected function getSensioDistribution_SecurityChecker_CommandService() + { + return $this->services['sensio_distribution.security_checker.command'] = new \SensioLabs\Security\Command\SecurityCheckerCommand($this->get('sensio_distribution.security_checker')); + } + + /** + * Gets the 'sensio_framework_extra.cache.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener instance + */ + protected function getSensioFrameworkExtra_Cache_ListenerService() + { + return $this->services['sensio_framework_extra.cache.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener(); + } + + /** + * Gets the 'sensio_framework_extra.controller.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener instance + */ + protected function getSensioFrameworkExtra_Controller_ListenerService() + { + return $this->services['sensio_framework_extra.controller.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener($this->get('annotation_reader')); + } + + /** + * Gets the 'sensio_framework_extra.converter.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_DatetimeService() + { + return $this->services['sensio_framework_extra.converter.datetime'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter(); + } + + /** + * Gets the 'sensio_framework_extra.converter.doctrine.orm' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_Doctrine_OrmService() + { + return $this->services['sensio_framework_extra.converter.doctrine.orm'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter($this->get('doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.converter.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener instance + */ + protected function getSensioFrameworkExtra_Converter_ListenerService() + { + return $this->services['sensio_framework_extra.converter.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener($this->get('sensio_framework_extra.converter.manager'), true); + } + + /** + * Gets the 'sensio_framework_extra.converter.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager instance + */ + protected function getSensioFrameworkExtra_Converter_ManagerService() + { + $this->services['sensio_framework_extra.converter.manager'] = $instance = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager(); + + $instance->add($this->get('sensio_framework_extra.converter.doctrine.orm'), 0, 'doctrine.orm'); + $instance->add($this->get('sensio_framework_extra.converter.datetime'), 0, 'datetime'); + + return $instance; + } + + /** + * Gets the 'sensio_framework_extra.security.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener instance + */ + protected function getSensioFrameworkExtra_Security_ListenerService() + { + return $this->services['sensio_framework_extra.security.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener(NULL, new \Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage(), ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.view.guesser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser A Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser instance + */ + protected function getSensioFrameworkExtra_View_GuesserService() + { + return $this->services['sensio_framework_extra.view.guesser'] = new \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser($this->get('kernel')); + } + + /** + * Gets the 'sensio_framework_extra.view.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener instance + */ + protected function getSensioFrameworkExtra_View_ListenerService() + { + return $this->services['sensio_framework_extra.view.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener($this); + } + + /** + * Gets the 'service_container' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getServiceContainerService() + { + throw new RuntimeException('You have requested a synthetic service ("service_container"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'session' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Session A Symfony\Component\HttpFoundation\Session\Session instance + */ + protected function getSessionService() + { + return $this->services['session'] = new \Symfony\Component\HttpFoundation\Session\Session($this->get('session.storage.native'), new \Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag(), new \Symfony\Component\HttpFoundation\Session\Flash\FlashBag()); + } + + /** + * Gets the 'session.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler A Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler instance + */ + protected function getSession_HandlerService() + { + return $this->services['session.handler'] = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler(($this->targetDirs[3].'/app/../var/sessions/dev')); + } + + /** + * Gets the 'session.save_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\SaveSessionListener A Symfony\Component\HttpKernel\EventListener\SaveSessionListener instance + */ + protected function getSession_SaveListenerService() + { + return $this->services['session.save_listener'] = new \Symfony\Component\HttpKernel\EventListener\SaveSessionListener(); + } + + /** + * Gets the 'session.storage.filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage instance + */ + protected function getSession_Storage_FilesystemService() + { + return $this->services['session.storage.filesystem'] = new \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage((__DIR__.'/sessions'), 'MOCKSESSID', ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.native' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage instance + */ + protected function getSession_Storage_NativeService() + { + return $this->services['session.storage.native'] = new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage(array('cookie_httponly' => true, 'gc_probability' => 1), $this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.php_bridge' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage instance + */ + protected function getSession_Storage_PhpBridgeService() + { + return $this->services['session.storage.php_bridge'] = new \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage($this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener A Symfony\Bundle\FrameworkBundle\EventListener\SessionListener instance + */ + protected function getSessionListenerService() + { + return $this->services['session_listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener($this); + } + + /** + * Gets the 'streamed_response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener A Symfony\Component\HttpKernel\EventListener\StreamedResponseListener instance + */ + protected function getStreamedResponseListenerService() + { + return $this->services['streamed_response_listener'] = new \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener(); + } + + /** + * Gets the 'swiftmailer.email_sender.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener A Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener instance + */ + protected function getSwiftmailer_EmailSender_ListenerService() + { + return $this->services['swiftmailer.email_sender.listener'] = new \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener($this, $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'swiftmailer.mailer.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Mailer A Swift_Mailer instance + */ + protected function getSwiftmailer_Mailer_DefaultService() + { + return $this->services['swiftmailer.mailer.default'] = new \Swift_Mailer($this->get('swiftmailer.mailer.default.transport')); + } + + /** + * Gets the 'swiftmailer.mailer.default.plugin.messagelogger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Plugins_MessageLogger A Swift_Plugins_MessageLogger instance + */ + protected function getSwiftmailer_Mailer_Default_Plugin_MessageloggerService() + { + return $this->services['swiftmailer.mailer.default.plugin.messagelogger'] = new \Swift_Plugins_MessageLogger(); + } + + /** + * Gets the 'swiftmailer.mailer.default.spool' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_MemorySpool A Swift_MemorySpool instance + */ + protected function getSwiftmailer_Mailer_Default_SpoolService() + { + return $this->services['swiftmailer.mailer.default.spool'] = new \Swift_MemorySpool(); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_SpoolTransport A Swift_Transport_SpoolTransport instance + */ + protected function getSwiftmailer_Mailer_Default_TransportService() + { + $this->services['swiftmailer.mailer.default.transport'] = $instance = new \Swift_Transport_SpoolTransport(${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}, $this->get('swiftmailer.mailer.default.spool')); + + $instance->registerPlugin($this->get('swiftmailer.mailer.default.plugin.messagelogger')); + + return $instance; + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.real' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_EsmtpTransport A Swift_Transport_EsmtpTransport instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_RealService() + { + $a = new \Swift_Transport_Esmtp_AuthHandler(array(0 => new \Swift_Transport_Esmtp_Auth_CramMd5Authenticator(), 1 => new \Swift_Transport_Esmtp_Auth_LoginAuthenticator(), 2 => new \Swift_Transport_Esmtp_Auth_PlainAuthenticator())); + $a->setUsername(NULL); + $a->setPassword(NULL); + $a->setAuthMode(NULL); + + $this->services['swiftmailer.mailer.default.transport.real'] = $instance = new \Swift_Transport_EsmtpTransport(new \Swift_Transport_StreamBuffer(new \Swift_StreamFilters_StringReplacementFilterFactory()), array(0 => $a), ${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}); + + $instance->setHost('127.0.0.1'); + $instance->setPort(25); + $instance->setEncryption(NULL); + $instance->setTimeout(30); + $instance->setSourceIp(NULL); + (new \Symfony\Bundle\SwiftmailerBundle\DependencyInjection\SmtpTransportConfigurator(NULL, ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}))->configure($instance); + + return $instance; + } + + /** + * Gets the 'templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\TwigEngine A Symfony\Bundle\TwigBundle\TwigEngine instance + */ + protected function getTemplatingService() + { + return $this->services['templating'] = new \Symfony\Bundle\TwigBundle\TwigEngine($this->get('twig'), $this->get('templating.name_parser'), ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.filename_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser instance + */ + protected function getTemplating_FilenameParserService() + { + return $this->services['templating.filename_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser(); + } + + /** + * Gets the 'templating.helper.logout_url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper instance + */ + protected function getTemplating_Helper_LogoutUrlService() + { + return $this->services['templating.helper.logout_url'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.helper.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper instance + */ + protected function getTemplating_Helper_SecurityService() + { + return $this->services['templating.helper.security'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'templating.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader A Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader instance + */ + protected function getTemplating_LoaderService() + { + return $this->services['templating.loader'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.name_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser instance + */ + protected function getTemplating_NameParserService() + { + return $this->services['templating.name_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser($this->get('kernel')); + } + + /** + * Gets the 'translation.dumper.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\CsvFileDumper A Symfony\Component\Translation\Dumper\CsvFileDumper instance + */ + protected function getTranslation_Dumper_CsvService() + { + return $this->services['translation.dumper.csv'] = new \Symfony\Component\Translation\Dumper\CsvFileDumper(); + } + + /** + * Gets the 'translation.dumper.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IniFileDumper A Symfony\Component\Translation\Dumper\IniFileDumper instance + */ + protected function getTranslation_Dumper_IniService() + { + return $this->services['translation.dumper.ini'] = new \Symfony\Component\Translation\Dumper\IniFileDumper(); + } + + /** + * Gets the 'translation.dumper.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\JsonFileDumper A Symfony\Component\Translation\Dumper\JsonFileDumper instance + */ + protected function getTranslation_Dumper_JsonService() + { + return $this->services['translation.dumper.json'] = new \Symfony\Component\Translation\Dumper\JsonFileDumper(); + } + + /** + * Gets the 'translation.dumper.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\MoFileDumper A Symfony\Component\Translation\Dumper\MoFileDumper instance + */ + protected function getTranslation_Dumper_MoService() + { + return $this->services['translation.dumper.mo'] = new \Symfony\Component\Translation\Dumper\MoFileDumper(); + } + + /** + * Gets the 'translation.dumper.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PhpFileDumper A Symfony\Component\Translation\Dumper\PhpFileDumper instance + */ + protected function getTranslation_Dumper_PhpService() + { + return $this->services['translation.dumper.php'] = new \Symfony\Component\Translation\Dumper\PhpFileDumper(); + } + + /** + * Gets the 'translation.dumper.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PoFileDumper A Symfony\Component\Translation\Dumper\PoFileDumper instance + */ + protected function getTranslation_Dumper_PoService() + { + return $this->services['translation.dumper.po'] = new \Symfony\Component\Translation\Dumper\PoFileDumper(); + } + + /** + * Gets the 'translation.dumper.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\QtFileDumper A Symfony\Component\Translation\Dumper\QtFileDumper instance + */ + protected function getTranslation_Dumper_QtService() + { + return $this->services['translation.dumper.qt'] = new \Symfony\Component\Translation\Dumper\QtFileDumper(); + } + + /** + * Gets the 'translation.dumper.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IcuResFileDumper A Symfony\Component\Translation\Dumper\IcuResFileDumper instance + */ + protected function getTranslation_Dumper_ResService() + { + return $this->services['translation.dumper.res'] = new \Symfony\Component\Translation\Dumper\IcuResFileDumper(); + } + + /** + * Gets the 'translation.dumper.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\XliffFileDumper A Symfony\Component\Translation\Dumper\XliffFileDumper instance + */ + protected function getTranslation_Dumper_XliffService() + { + return $this->services['translation.dumper.xliff'] = new \Symfony\Component\Translation\Dumper\XliffFileDumper(); + } + + /** + * Gets the 'translation.dumper.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\YamlFileDumper A Symfony\Component\Translation\Dumper\YamlFileDumper instance + */ + protected function getTranslation_Dumper_YmlService() + { + return $this->services['translation.dumper.yml'] = new \Symfony\Component\Translation\Dumper\YamlFileDumper(); + } + + /** + * Gets the 'translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Extractor\ChainExtractor A Symfony\Component\Translation\Extractor\ChainExtractor instance + */ + protected function getTranslation_ExtractorService() + { + $this->services['translation.extractor'] = $instance = new \Symfony\Component\Translation\Extractor\ChainExtractor(); + + $instance->addExtractor('php', $this->get('translation.extractor.php')); + $instance->addExtractor('twig', $this->get('twig.translation.extractor')); + + return $instance; + } + + /** + * Gets the 'translation.extractor.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor A Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor instance + */ + protected function getTranslation_Extractor_PhpService() + { + return $this->services['translation.extractor.php'] = new \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor(); + } + + /** + * Gets the 'translation.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader A Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader instance + */ + protected function getTranslation_LoaderService() + { + $a = $this->get('translation.loader.xliff'); + + $this->services['translation.loader'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader(); + + $instance->addLoader('php', $this->get('translation.loader.php')); + $instance->addLoader('yml', $this->get('translation.loader.yml')); + $instance->addLoader('xlf', $a); + $instance->addLoader('xliff', $a); + $instance->addLoader('po', $this->get('translation.loader.po')); + $instance->addLoader('mo', $this->get('translation.loader.mo')); + $instance->addLoader('ts', $this->get('translation.loader.qt')); + $instance->addLoader('csv', $this->get('translation.loader.csv')); + $instance->addLoader('res', $this->get('translation.loader.res')); + $instance->addLoader('dat', $this->get('translation.loader.dat')); + $instance->addLoader('ini', $this->get('translation.loader.ini')); + $instance->addLoader('json', $this->get('translation.loader.json')); + + return $instance; + } + + /** + * Gets the 'translation.loader.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\CsvFileLoader A Symfony\Component\Translation\Loader\CsvFileLoader instance + */ + protected function getTranslation_Loader_CsvService() + { + return $this->services['translation.loader.csv'] = new \Symfony\Component\Translation\Loader\CsvFileLoader(); + } + + /** + * Gets the 'translation.loader.dat' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuDatFileLoader A Symfony\Component\Translation\Loader\IcuDatFileLoader instance + */ + protected function getTranslation_Loader_DatService() + { + return $this->services['translation.loader.dat'] = new \Symfony\Component\Translation\Loader\IcuDatFileLoader(); + } + + /** + * Gets the 'translation.loader.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IniFileLoader A Symfony\Component\Translation\Loader\IniFileLoader instance + */ + protected function getTranslation_Loader_IniService() + { + return $this->services['translation.loader.ini'] = new \Symfony\Component\Translation\Loader\IniFileLoader(); + } + + /** + * Gets the 'translation.loader.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\JsonFileLoader A Symfony\Component\Translation\Loader\JsonFileLoader instance + */ + protected function getTranslation_Loader_JsonService() + { + return $this->services['translation.loader.json'] = new \Symfony\Component\Translation\Loader\JsonFileLoader(); + } + + /** + * Gets the 'translation.loader.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\MoFileLoader A Symfony\Component\Translation\Loader\MoFileLoader instance + */ + protected function getTranslation_Loader_MoService() + { + return $this->services['translation.loader.mo'] = new \Symfony\Component\Translation\Loader\MoFileLoader(); + } + + /** + * Gets the 'translation.loader.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PhpFileLoader A Symfony\Component\Translation\Loader\PhpFileLoader instance + */ + protected function getTranslation_Loader_PhpService() + { + return $this->services['translation.loader.php'] = new \Symfony\Component\Translation\Loader\PhpFileLoader(); + } + + /** + * Gets the 'translation.loader.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PoFileLoader A Symfony\Component\Translation\Loader\PoFileLoader instance + */ + protected function getTranslation_Loader_PoService() + { + return $this->services['translation.loader.po'] = new \Symfony\Component\Translation\Loader\PoFileLoader(); + } + + /** + * Gets the 'translation.loader.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\QtFileLoader A Symfony\Component\Translation\Loader\QtFileLoader instance + */ + protected function getTranslation_Loader_QtService() + { + return $this->services['translation.loader.qt'] = new \Symfony\Component\Translation\Loader\QtFileLoader(); + } + + /** + * Gets the 'translation.loader.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuResFileLoader A Symfony\Component\Translation\Loader\IcuResFileLoader instance + */ + protected function getTranslation_Loader_ResService() + { + return $this->services['translation.loader.res'] = new \Symfony\Component\Translation\Loader\IcuResFileLoader(); + } + + /** + * Gets the 'translation.loader.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\XliffFileLoader A Symfony\Component\Translation\Loader\XliffFileLoader instance + */ + protected function getTranslation_Loader_XliffService() + { + return $this->services['translation.loader.xliff'] = new \Symfony\Component\Translation\Loader\XliffFileLoader(); + } + + /** + * Gets the 'translation.loader.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\YamlFileLoader A Symfony\Component\Translation\Loader\YamlFileLoader instance + */ + protected function getTranslation_Loader_YmlService() + { + return $this->services['translation.loader.yml'] = new \Symfony\Component\Translation\Loader\YamlFileLoader(); + } + + /** + * Gets the 'translation.writer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Writer\TranslationWriter A Symfony\Component\Translation\Writer\TranslationWriter instance + */ + protected function getTranslation_WriterService() + { + $this->services['translation.writer'] = $instance = new \Symfony\Component\Translation\Writer\TranslationWriter(); + + $instance->addDumper('php', $this->get('translation.dumper.php')); + $instance->addDumper('xlf', $this->get('translation.dumper.xliff')); + $instance->addDumper('po', $this->get('translation.dumper.po')); + $instance->addDumper('mo', $this->get('translation.dumper.mo')); + $instance->addDumper('yml', $this->get('translation.dumper.yml')); + $instance->addDumper('ts', $this->get('translation.dumper.qt')); + $instance->addDumper('csv', $this->get('translation.dumper.csv')); + $instance->addDumper('ini', $this->get('translation.dumper.ini')); + $instance->addDumper('json', $this->get('translation.dumper.json')); + $instance->addDumper('res', $this->get('translation.dumper.res')); + + return $instance; + } + + /** + * Gets the 'translator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\IdentityTranslator A Symfony\Component\Translation\IdentityTranslator instance + */ + protected function getTranslatorService() + { + return $this->services['translator'] = new \Symfony\Component\Translation\IdentityTranslator(${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}); + } + + /** + * Gets the 'translator.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\Translator A Symfony\Bundle\FrameworkBundle\Translation\Translator instance + */ + protected function getTranslator_DefaultService() + { + $this->services['translator.default'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\Translator($this, ${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}, array('translation.loader.php' => array(0 => 'php'), 'translation.loader.yml' => array(0 => 'yml'), 'translation.loader.xliff' => array(0 => 'xlf', 1 => 'xliff'), 'translation.loader.po' => array(0 => 'po'), 'translation.loader.mo' => array(0 => 'mo'), 'translation.loader.qt' => array(0 => 'ts'), 'translation.loader.csv' => array(0 => 'csv'), 'translation.loader.res' => array(0 => 'res'), 'translation.loader.dat' => array(0 => 'dat'), 'translation.loader.ini' => array(0 => 'ini'), 'translation.loader.json' => array(0 => 'json')), array('cache_dir' => (__DIR__.'/translations'), 'debug' => true), array()); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'translator_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\TranslatorListener A Symfony\Component\HttpKernel\EventListener\TranslatorListener instance + */ + protected function getTranslatorListenerService() + { + return $this->services['translator_listener'] = new \Symfony\Component\HttpKernel\EventListener\TranslatorListener($this->get('translator'), $this->get('request_stack')); + } + + /** + * Gets the 'twig' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Environment A Twig_Environment instance + */ + protected function getTwigService() + { + $a = $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}; + $c = $this->get('request_stack'); + + $d = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 0); + if ($this->has('debug.file_link_formatter')) { + $d->setDisplayOptions(array('fileLinkFormat' => $b)); + } + + $e = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 1); + $e->setDisplayOptions(array('maxStringLength' => 4096, 'fileLinkFormat' => $b)); + + $f = new \Symfony\Bridge\Twig\AppVariable(); + $f->setEnvironment('dev'); + $f->setDebug(true); + if ($this->has('security.token_storage')) { + $f->setTokenStorage($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + if ($this->has('request_stack')) { + $f->setRequestStack($c); + } + + $this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), array('debug' => true, 'strict_variables' => true, 'exception_controller' => 'twig.controller.exception:showAction', 'form_themes' => array(0 => 'form_div_layout.html.twig'), 'autoescape' => 'name', 'cache' => (__DIR__.'/twig'), 'charset' => 'UTF-8', 'paths' => array(), 'date' => array('format' => 'F j, Y H:i', 'interval_format' => '%d days', 'timezone' => NULL), 'number_format' => array('decimals' => 0, 'decimal_point' => '.', 'thousands_separator' => ','))); + + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\LogoutUrlExtension(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'})); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\SecurityExtension($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ProfilerExtension($this->get('twig.profile'), $a)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\TranslationExtension($this->get('translator'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\AssetExtension($this->get('assets.packages'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\CodeExtension($b, ($this->targetDirs[3].'/app'), 'UTF-8')); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\RoutingExtension($this->get('router'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\StopwatchExtension($a, true)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ExpressionExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpKernelExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpFoundationExtension($c, ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'})); + $instance->addExtension(new \Twig_Extension_Debug()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\FormExtension(array(0 => $this, 1 => 'twig.form.renderer'))); + $instance->addExtension(new \Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\DumpExtension($this->get('var_dumper.cloner'), $d)); + $instance->addExtension(new \Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension($e)); + $instance->addGlobal('app', $f); + $instance->addRuntimeLoader(new \Symfony\Bundle\TwigBundle\ContainerAwareRuntimeLoader($this, array('Symfony\\Bridge\\Twig\\Extension\\HttpKernelRuntime' => 'twig.runtime.httpkernel', 'Symfony\\Bridge\\Twig\\Form\\TwigRenderer' => 'twig.form.renderer'), $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + (new \Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator('F j, Y H:i', '%d days', NULL, 0, '.', ','))->configure($instance); + + return $instance; + } + + /** + * Gets the 'twig.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\ExceptionController A Symfony\Bundle\TwigBundle\Controller\ExceptionController instance + */ + protected function getTwig_Controller_ExceptionService() + { + return $this->services['twig.controller.exception'] = new \Symfony\Bundle\TwigBundle\Controller\ExceptionController($this->get('twig'), true); + } + + /** + * Gets the 'twig.controller.preview_error' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController A Symfony\Bundle\TwigBundle\Controller\PreviewErrorController instance + */ + protected function getTwig_Controller_PreviewErrorService() + { + return $this->services['twig.controller.preview_error'] = new \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController($this->get('http_kernel'), 'twig.controller.exception:showAction'); + } + + /** + * Gets the 'twig.exception_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ExceptionListener A Symfony\Component\HttpKernel\EventListener\ExceptionListener instance + */ + protected function getTwig_ExceptionListenerService() + { + return $this->services['twig.exception_listener'] = new \Symfony\Component\HttpKernel\EventListener\ExceptionListener('twig.controller.exception:showAction', $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.form.renderer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Form\TwigRenderer A Symfony\Bridge\Twig\Form\TwigRenderer instance + */ + protected function getTwig_Form_RendererService() + { + return $this->services['twig.form.renderer'] = new \Symfony\Bridge\Twig\Form\TwigRenderer(new \Symfony\Bridge\Twig\Form\TwigRendererEngine(array(0 => 'form_div_layout.html.twig'), $this->get('twig')), $this->get('security.csrf.token_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader A Symfony\Bundle\TwigBundle\Loader\FilesystemLoader instance + */ + protected function getTwig_LoaderService() + { + $this->services['twig.loader'] = $instance = new \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}, $this->get('templating.name_parser'), $this->targetDirs[3]); + + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views'), 'Framework'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views'), 'Security'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views'), 'Twig'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle/Resources/views'), 'Swiftmailer'); + $instance->addPath(($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle/Resources/views'), 'Doctrine'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views'), 'Debug'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views'), 'WebProfiler'); + $instance->addPath(($this->targetDirs[3].'/app/Resources/views')); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form')); + + return $instance; + } + + /** + * Gets the 'twig.profile' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Profiler_Profile A Twig_Profiler_Profile instance + */ + protected function getTwig_ProfileService() + { + return $this->services['twig.profile'] = new \Twig_Profiler_Profile(); + } + + /** + * Gets the 'twig.runtime.httpkernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Extension\HttpKernelRuntime A Symfony\Bridge\Twig\Extension\HttpKernelRuntime instance + */ + protected function getTwig_Runtime_HttpkernelService() + { + return $this->services['twig.runtime.httpkernel'] = new \Symfony\Bridge\Twig\Extension\HttpKernelRuntime($this->get('fragment.handler')); + } + + /** + * Gets the 'twig.translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Translation\TwigExtractor A Symfony\Bridge\Twig\Translation\TwigExtractor instance + */ + protected function getTwig_Translation_ExtractorService() + { + return $this->services['twig.translation.extractor'] = new \Symfony\Bridge\Twig\Translation\TwigExtractor($this->get('twig')); + } + + /** + * Gets the 'uri_signer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\UriSigner A Symfony\Component\HttpKernel\UriSigner instance + */ + protected function getUriSignerService() + { + return $this->services['uri_signer'] = new \Symfony\Component\HttpKernel\UriSigner('d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb'); + } + + /** + * Gets the 'validate_request_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener A Symfony\Component\HttpKernel\EventListener\ValidateRequestListener instance + */ + protected function getValidateRequestListenerService() + { + return $this->services['validate_request_listener'] = new \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener(); + } + + /** + * Gets the 'validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Validator\ValidatorInterface A Symfony\Component\Validator\Validator\ValidatorInterface instance + */ + protected function getValidatorService() + { + return $this->services['validator'] = $this->get('validator.builder')->getValidator(); + } + + /** + * Gets the 'validator.builder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\ValidatorBuilderInterface A Symfony\Component\Validator\ValidatorBuilderInterface instance + */ + protected function getValidator_BuilderService() + { + $this->services['validator.builder'] = $instance = \Symfony\Component\Validator\Validation::createValidatorBuilder(); + + $instance->setConstraintValidatorFactory(new \Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory($this, array('validator.expression' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\ExpressionValidator' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\EmailValidator' => 'validator.email', 'security.validator.user_password' => 'security.validator.user_password', 'Symfony\\Component\\Security\\Core\\Validator\\Constraints\\UserPasswordValidator' => 'security.validator.user_password', 'doctrine.orm.validator.unique' => 'doctrine.orm.validator.unique', 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator' => 'doctrine.orm.validator.unique'))); + $instance->setTranslator($this->get('translator')); + $instance->setTranslationDomain('validators'); + $instance->addXmlMappings(array(0 => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml'))); + $instance->enableAnnotationMapping($this->get('annotation_reader')); + $instance->addMethodMapping('loadValidatorMetadata'); + $instance->addObjectInitializers(array(0 => $this->get('doctrine.orm.validator_initializer'))); + + return $instance; + } + + /** + * Gets the 'validator.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\EmailValidator A Symfony\Component\Validator\Constraints\EmailValidator instance + */ + protected function getValidator_EmailService() + { + return $this->services['validator.email'] = new \Symfony\Component\Validator\Constraints\EmailValidator(false); + } + + /** + * Gets the 'validator.expression' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\ExpressionValidator A Symfony\Component\Validator\Constraints\ExpressionValidator instance + */ + protected function getValidator_ExpressionService() + { + return $this->services['validator.expression'] = new \Symfony\Component\Validator\Constraints\ExpressionValidator(); + } + + /** + * Gets the 'var_dumper.cli_dumper' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Dumper\CliDumper A Symfony\Component\VarDumper\Dumper\CliDumper instance + */ + protected function getVarDumper_CliDumperService() + { + return $this->services['var_dumper.cli_dumper'] = new \Symfony\Component\VarDumper\Dumper\CliDumper(NULL, 'UTF-8', 0); + } + + /** + * Gets the 'var_dumper.cloner' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Cloner\VarCloner A Symfony\Component\VarDumper\Cloner\VarCloner instance + */ + protected function getVarDumper_ClonerService() + { + $this->services['var_dumper.cloner'] = $instance = new \Symfony\Component\VarDumper\Cloner\VarCloner(); + + $instance->setMaxItems(2500); + $instance->setMaxString(-1); + + return $instance; + } + + /** + * Gets the 'web_profiler.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController A Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController instance + */ + protected function getWebProfiler_Controller_ExceptionService() + { + return $this->services['web_profiler.controller.exception'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), true); + } + + /** + * Gets the 'web_profiler.controller.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController A Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController instance + */ + protected function getWebProfiler_Controller_ProfilerService() + { + return $this->services['web_profiler.controller.profiler'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController($this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), array('data_collector.request' => array(0 => 'request', 1 => '@WebProfiler/Collector/request.html.twig'), 'data_collector.time' => array(0 => 'time', 1 => '@WebProfiler/Collector/time.html.twig'), 'data_collector.memory' => array(0 => 'memory', 1 => '@WebProfiler/Collector/memory.html.twig'), 'data_collector.ajax' => array(0 => 'ajax', 1 => '@WebProfiler/Collector/ajax.html.twig'), 'data_collector.form' => array(0 => 'form', 1 => '@WebProfiler/Collector/form.html.twig'), 'data_collector.exception' => array(0 => 'exception', 1 => '@WebProfiler/Collector/exception.html.twig'), 'data_collector.logger' => array(0 => 'logger', 1 => '@WebProfiler/Collector/logger.html.twig'), 'data_collector.events' => array(0 => 'events', 1 => '@WebProfiler/Collector/events.html.twig'), 'data_collector.router' => array(0 => 'router', 1 => '@WebProfiler/Collector/router.html.twig'), 'data_collector.security' => array(0 => 'security', 1 => '@Security/Collector/security.html.twig'), 'data_collector.twig' => array(0 => 'twig', 1 => '@WebProfiler/Collector/twig.html.twig'), 'data_collector.doctrine' => array(0 => 'db', 1 => '@Doctrine/Collector/db.html.twig'), 'swiftmailer.data_collector' => array(0 => 'swiftmailer', 1 => '@Swiftmailer/Collector/swiftmailer.html.twig'), 'data_collector.dump' => array(0 => 'dump', 1 => '@Debug/Profiler/dump.html.twig'), 'data_collector.config' => array(0 => 'config', 1 => '@WebProfiler/Collector/config.html.twig')), 'bottom', ${($_ = isset($this->services['web_profiler.csp.handler']) ? $this->services['web_profiler.csp.handler'] : $this->getWebProfiler_Csp_HandlerService()) && false ?: '_'}, $this->targetDirs[3]); + } + + /** + * Gets the 'web_profiler.controller.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\RouterController A Symfony\Bundle\WebProfilerBundle\Controller\RouterController instance + */ + protected function getWebProfiler_Controller_RouterService() + { + return $this->services['web_profiler.controller.router'] = new \Symfony\Bundle\WebProfilerBundle\Controller\RouterController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'web_profiler.debug_toolbar' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener A Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener instance + */ + protected function getWebProfiler_DebugToolbarService() + { + return $this->services['web_profiler.debug_toolbar'] = new \Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener($this->get('twig'), false, 2, 'bottom', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), '^/(app(_[\\w]+)?\\.php/)?_wdt', ${($_ = isset($this->services['web_profiler.csp.handler']) ? $this->services['web_profiler.csp.handler'] : $this->getWebProfiler_Csp_HandlerService()) && false ?: '_'}); + } + + /** + * Gets the 'annotations.reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\Common\Annotations\AnnotationReader A Doctrine\Common\Annotations\AnnotationReader instance + */ + protected function getAnnotations_ReaderService() + { + return $this->services['annotations.reader'] = new \Doctrine\Common\Annotations\AnnotationReader(); + } + + /** + * Gets the 'cache.annotations' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_AnnotationsService() + { + return $this->services['cache.annotations'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('natDFMbNIC', 0, 'Tt1rUGwa3fvpkxQTGpnXNB', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'controller_name_converter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser A Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser instance + */ + protected function getControllerNameConverterService() + { + return $this->services['controller_name_converter'] = new \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser($this->get('kernel')); + } + + /** + * Gets the 'debug.file_link_formatter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpKernel\Debug\FileLinkFormatter A Symfony\Component\HttpKernel\Debug\FileLinkFormatter instance + */ + protected function getDebug_FileLinkFormatterService() + { + return $this->services['debug.file_link_formatter'] = new \Symfony\Component\HttpKernel\Debug\FileLinkFormatter(NULL, $this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->targetDirs[3], '/_profiler/open?file=%f&line=%l#line%l'); + } + + /** + * Gets the 'debug.log_processor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bridge\Monolog\Processor\DebugProcessor A Symfony\Bridge\Monolog\Processor\DebugProcessor instance + */ + protected function getDebug_LogProcessorService() + { + return $this->services['debug.log_processor'] = new \Symfony\Bridge\Monolog\Processor\DebugProcessor(); + } + + /** + * Gets the 'debug.security.access.decision_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager A Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager instance + */ + protected function getDebug_Security_Access_DecisionManagerService() + { + $a = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + + $this->services['debug.security.access.decision_manager'] = $instance = new \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager(new \Symfony\Component\Security\Core\Authorization\AccessDecisionManager(array(), 'affirmative', false, true)); + + $instance->setVoters(array(0 => new \Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter($a), 1 => new \Symfony\Component\Security\Core\Authorization\Voter\RoleVoter(), 2 => new \Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter(new \Symfony\Component\Security\Core\Authorization\ExpressionLanguage(), $a, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}))); + + return $instance; + } + + /** + * Gets the 'doctrine.dbal.logger.profiling.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\DBAL\Logging\DebugStack A Doctrine\DBAL\Logging\DebugStack instance + */ + protected function getDoctrine_Dbal_Logger_Profiling_DefaultService() + { + return $this->services['doctrine.dbal.logger.profiling.default'] = new \Doctrine\DBAL\Logging\DebugStack(); + } + + /** + * Gets the 'form.server_params' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Form\Util\ServerParams A Symfony\Component\Form\Util\ServerParams instance + */ + protected function getForm_ServerParamsService() + { + return $this->services['form.server_params'] = new \Symfony\Component\Form\Util\ServerParams($this->get('request_stack')); + } + + /** + * Gets the 'monolog.processor.psr_log_message' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Monolog\Processor\PsrLogMessageProcessor A Monolog\Processor\PsrLogMessageProcessor instance + */ + protected function getMonolog_Processor_PsrLogMessageService() + { + return $this->services['monolog.processor.psr_log_message'] = new \Monolog\Processor\PsrLogMessageProcessor(); + } + + /** + * Gets the 'router.request_context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Routing\RequestContext A Symfony\Component\Routing\RequestContext instance + */ + protected function getRouter_RequestContextService() + { + return $this->services['router.request_context'] = new \Symfony\Component\Routing\RequestContext('', 'GET', 'localhost', 'http', 80, 443); + } + + /** + * Gets the 'security.authentication.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager A Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager instance + */ + protected function getSecurity_Authentication_ManagerService() + { + $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('58c46f45a05e13.86720536')), true); + + $instance->setEventDispatcher($this->get('debug.event_dispatcher')); + + return $instance; + } + + /** + * Gets the 'security.authentication.trust_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver A Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver instance + */ + protected function getSecurity_Authentication_TrustResolverService() + { + return $this->services['security.authentication.trust_resolver'] = new \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver('Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken'); + } + + /** + * Gets the 'security.firewall.map' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallMap A Symfony\Bundle\SecurityBundle\Security\FirewallMap instance + */ + protected function getSecurity_Firewall_MapService() + { + return $this->services['security.firewall.map'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallMap($this, array('security.firewall.map.context.dev' => new \Symfony\Component\HttpFoundation\RequestMatcher('^/(_(profiler|wdt)|css|images|js)/'), 'security.firewall.map.context.main' => NULL)); + } + + /** + * Gets the 'security.logout_url_generator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator A Symfony\Component\Security\Http\Logout\LogoutUrlGenerator instance + */ + protected function getSecurity_LogoutUrlGeneratorService() + { + return $this->services['security.logout_url_generator'] = new \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator($this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.role_hierarchy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Role\RoleHierarchy A Symfony\Component\Security\Core\Role\RoleHierarchy instance + */ + protected function getSecurity_RoleHierarchyService() + { + return $this->services['security.role_hierarchy'] = new \Symfony\Component\Security\Core\Role\RoleHierarchy(array()); + } + + /** + * Gets the 'session.storage.metadata_bag' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag A Symfony\Component\HttpFoundation\Session\Storage\MetadataBag instance + */ + protected function getSession_Storage_MetadataBagService() + { + return $this->services['session.storage.metadata_bag'] = new \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag('_sf2_meta', '0'); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.eventdispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Swift_Events_SimpleEventDispatcher A Swift_Events_SimpleEventDispatcher instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_EventdispatcherService() + { + return $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] = new \Swift_Events_SimpleEventDispatcher(); + } + + /** + * Gets the 'templating.locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator A Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator instance + */ + protected function getTemplating_LocatorService() + { + return $this->services['templating.locator'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator($this->get('file_locator'), __DIR__); + } + + /** + * Gets the 'translator.selector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Translation\MessageSelector A Symfony\Component\Translation\MessageSelector instance + */ + protected function getTranslator_SelectorService() + { + return $this->services['translator.selector'] = new \Symfony\Component\Translation\MessageSelector(); + } + + /** + * Gets the 'web_profiler.csp.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler A Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler instance + */ + protected function getWebProfiler_Csp_HandlerService() + { + return $this->services['web_profiler.csp.handler'] = new \Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler(new \Symfony\Bundle\WebProfilerBundle\Csp\NonceGenerator()); + } + + /** + * {@inheritdoc} + */ + public function getParameter($name) + { + $name = strtolower($name); + + if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) { + throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name)); + } + if (isset($this->loadedDynamicParameters[$name])) { + return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + + return $this->parameters[$name]; + } + + /** + * {@inheritdoc} + */ + public function hasParameter($name) + { + $name = strtolower($name); + + return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]); + } + + /** + * {@inheritdoc} + */ + public function setParameter($name, $value) + { + throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); + } + + /** + * {@inheritdoc} + */ + public function getParameterBag() + { + if (null === $this->parameterBag) { + $parameters = $this->parameters; + foreach ($this->loadedDynamicParameters as $name => $loaded) { + $parameters[$name] = $loaded ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + $this->parameterBag = new FrozenParameterBag($parameters); + } + + return $this->parameterBag; + } + + private $loadedDynamicParameters = array( + 'kernel.root_dir' => false, + 'kernel.logs_dir' => false, + 'kernel.bundles_metadata' => false, + 'session.save_path' => false, + 'router.resource' => false, + ); + private $dynamicParameters = array(); + + /** + * Computes a dynamic parameter. + * + * @param string The name of the dynamic parameter to load + * + * @return mixed The value of the dynamic parameter + * + * @throws InvalidArgumentException When the dynamic parameter does not exist + */ + private function getDynamicParameter($name) + { + switch ($name) { + case 'kernel.root_dir': $value = ($this->targetDirs[3].'/app'); break; + case 'kernel.logs_dir': $value = ($this->targetDirs[2].'/logs'); break; + case 'kernel.bundles_metadata': $value = array( + 'FrameworkBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle'), + 'namespace' => 'Symfony\\Bundle\\FrameworkBundle', + ), + 'SecurityBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle'), + 'namespace' => 'Symfony\\Bundle\\SecurityBundle', + ), + 'TwigBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle'), + 'namespace' => 'Symfony\\Bundle\\TwigBundle', + ), + 'MonologBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/monolog-bundle'), + 'namespace' => 'Symfony\\Bundle\\MonologBundle', + ), + 'SwiftmailerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle'), + 'namespace' => 'Symfony\\Bundle\\SwiftmailerBundle', + ), + 'DoctrineBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle'), + 'namespace' => 'Doctrine\\Bundle\\DoctrineBundle', + ), + 'SensioFrameworkExtraBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/framework-extra-bundle'), + 'namespace' => 'Sensio\\Bundle\\FrameworkExtraBundle', + ), + 'AppBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/src/AppBundle'), + 'namespace' => 'AppBundle', + ), + 'DebugBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle'), + 'namespace' => 'Symfony\\Bundle\\DebugBundle', + ), + 'WebProfilerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle'), + 'namespace' => 'Symfony\\Bundle\\WebProfilerBundle', + ), + 'SensioDistributionBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/distribution-bundle'), + 'namespace' => 'Sensio\\Bundle\\DistributionBundle', + ), + 'SensioGeneratorBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/generator-bundle'), + 'namespace' => 'Sensio\\Bundle\\GeneratorBundle', + ), + ); break; + case 'session.save_path': $value = ($this->targetDirs[3].'/app/../var/sessions/dev'); break; + case 'router.resource': $value = ($this->targetDirs[3].'/app/config/routing_dev.yml'); break; + default: throw new InvalidArgumentException(sprintf('The dynamic parameter "%s" must be defined.', $name)); + } + $this->loadedDynamicParameters[$name] = true; + + return $this->dynamicParameters[$name] = $value; + } + + /** + * Gets the default parameters. + * + * @return array An array of the default parameters + */ + protected function getDefaultParameters() + { + return array( + 'kernel.environment' => 'dev', + 'kernel.debug' => true, + 'kernel.name' => 'app', + 'kernel.cache_dir' => __DIR__, + 'kernel.bundles' => array( + 'FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle', + 'SecurityBundle' => 'Symfony\\Bundle\\SecurityBundle\\SecurityBundle', + 'TwigBundle' => 'Symfony\\Bundle\\TwigBundle\\TwigBundle', + 'MonologBundle' => 'Symfony\\Bundle\\MonologBundle\\MonologBundle', + 'SwiftmailerBundle' => 'Symfony\\Bundle\\SwiftmailerBundle\\SwiftmailerBundle', + 'DoctrineBundle' => 'Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle', + 'SensioFrameworkExtraBundle' => 'Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle', + 'AppBundle' => 'AppBundle\\AppBundle', + 'DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle', + 'WebProfilerBundle' => 'Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle', + 'SensioDistributionBundle' => 'Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle', + 'SensioGeneratorBundle' => 'Sensio\\Bundle\\GeneratorBundle\\SensioGeneratorBundle', + ), + 'kernel.charset' => 'UTF-8', + 'kernel.container_class' => 'appDevDebugProjectContainer', + 'database_host' => '127.0.0.1', + 'database_port' => NULL, + 'database_name' => 'symfony', + 'database_user' => 'root', + 'database_password' => NULL, + 'mailer_transport' => 'smtp', + 'mailer_host' => '127.0.0.1', + 'mailer_user' => NULL, + 'mailer_password' => NULL, + 'secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'locale' => 'en', + 'fragment.renderer.hinclude.global_template' => NULL, + 'fragment.path' => '/_fragment', + 'kernel.secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'kernel.http_method_override' => true, + 'kernel.trusted_hosts' => array( + + ), + 'kernel.trusted_proxies' => array( + + ), + 'kernel.default_locale' => 'en', + 'templating.helper.code.file_link_format' => NULL, + 'debug.file_link_format' => NULL, + 'session.metadata.storage_key' => '_sf2_meta', + 'session.storage.options' => array( + 'cookie_httponly' => true, + 'gc_probability' => 1, + ), + 'session.metadata.update_threshold' => '0', + 'form.type_extension.csrf.enabled' => true, + 'form.type_extension.csrf.field_name' => '_token', + 'templating.loader.cache.path' => NULL, + 'templating.engines' => array( + 0 => 'twig', + ), + 'validator.mapping.cache.prefix' => '', + 'validator.mapping.cache.file' => (__DIR__.'/validation.php'), + 'validator.translation_domain' => 'validators', + 'profiler_listener.only_exceptions' => false, + 'profiler_listener.only_master_requests' => false, + 'profiler.storage.dsn' => ('file:'.__DIR__.'/profiler'), + 'debug.error_handler.throw_at' => -1, + 'debug.container.dump' => (__DIR__.'/appDevDebugProjectContainer.xml'), + 'router.options.generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', + 'router.options.matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', + 'router.options.matcher.cache_class' => 'appDevDebugProjectContainerUrlMatcher', + 'router.options.generator.cache_class' => 'appDevDebugProjectContainerUrlGenerator', + 'router.request_context.host' => 'localhost', + 'router.request_context.scheme' => 'http', + 'router.request_context.base_url' => '', + 'router.cache_class_prefix' => 'appDevDebugProjectContainer', + 'request_listener.http_port' => 80, + 'request_listener.https_port' => 443, + 'security.authentication.trust_resolver.anonymous_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', + 'security.authentication.trust_resolver.rememberme_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken', + 'security.role_hierarchy.roles' => array( + + ), + 'security.access.denied_url' => NULL, + 'security.authentication.manager.erase_credentials' => true, + 'security.authentication.session_strategy.strategy' => 'migrate', + 'security.access.always_authenticate_before_granting' => false, + 'security.authentication.hide_user_not_found' => true, + 'twig.exception_listener.controller' => 'twig.controller.exception:showAction', + 'twig.form.resources' => array( + 0 => 'form_div_layout.html.twig', + ), + 'monolog.use_microseconds' => true, + 'monolog.swift_mailer.handlers' => array( + + ), + 'monolog.handlers_to_channels' => array( + 'monolog.handler.console' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + 1 => 'doctrine', + ), + ), + 'monolog.handler.main' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + ), + ), + ), + 'swiftmailer.class' => 'Swift_Mailer', + 'swiftmailer.transport.sendmail.class' => 'Swift_Transport_SendmailTransport', + 'swiftmailer.transport.mail.class' => 'Swift_Transport_MailTransport', + 'swiftmailer.transport.failover.class' => 'Swift_Transport_FailoverTransport', + 'swiftmailer.plugin.redirecting.class' => 'Swift_Plugins_RedirectingPlugin', + 'swiftmailer.plugin.impersonate.class' => 'Swift_Plugins_ImpersonatePlugin', + 'swiftmailer.plugin.messagelogger.class' => 'Swift_Plugins_MessageLogger', + 'swiftmailer.plugin.antiflood.class' => 'Swift_Plugins_AntiFloodPlugin', + 'swiftmailer.transport.smtp.class' => 'Swift_Transport_EsmtpTransport', + 'swiftmailer.plugin.blackhole.class' => 'Swift_Plugins_BlackholePlugin', + 'swiftmailer.spool.file.class' => 'Swift_FileSpool', + 'swiftmailer.spool.memory.class' => 'Swift_MemorySpool', + 'swiftmailer.email_sender.listener.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener', + 'swiftmailer.data_collector.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\DataCollector\\MessageDataCollector', + 'swiftmailer.mailer.default.transport.name' => 'smtp', + 'swiftmailer.mailer.default.transport.smtp.encryption' => NULL, + 'swiftmailer.mailer.default.transport.smtp.port' => 25, + 'swiftmailer.mailer.default.transport.smtp.host' => '127.0.0.1', + 'swiftmailer.mailer.default.transport.smtp.username' => NULL, + 'swiftmailer.mailer.default.transport.smtp.password' => NULL, + 'swiftmailer.mailer.default.transport.smtp.auth_mode' => NULL, + 'swiftmailer.mailer.default.transport.smtp.timeout' => 30, + 'swiftmailer.mailer.default.transport.smtp.source_ip' => NULL, + 'swiftmailer.mailer.default.transport.smtp.local_domain' => NULL, + 'swiftmailer.spool.default.memory.path' => (__DIR__.'/swiftmailer/spool/default'), + 'swiftmailer.mailer.default.spool.enabled' => true, + 'swiftmailer.mailer.default.plugin.impersonate' => NULL, + 'swiftmailer.mailer.default.single_address' => NULL, + 'swiftmailer.mailer.default.delivery.enabled' => true, + 'swiftmailer.spool.enabled' => true, + 'swiftmailer.delivery.enabled' => true, + 'swiftmailer.single_address' => NULL, + 'swiftmailer.mailers' => array( + 'default' => 'swiftmailer.mailer.default', + ), + 'swiftmailer.default_mailer' => 'default', + 'doctrine_cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine_cache.apcu.class' => 'Doctrine\\Common\\Cache\\ApcuCache', + 'doctrine_cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine_cache.chain.class' => 'Doctrine\\Common\\Cache\\ChainCache', + 'doctrine_cache.couchbase.class' => 'Doctrine\\Common\\Cache\\CouchbaseCache', + 'doctrine_cache.couchbase.connection.class' => 'Couchbase', + 'doctrine_cache.couchbase.hostnames' => 'localhost:8091', + 'doctrine_cache.file_system.class' => 'Doctrine\\Common\\Cache\\FilesystemCache', + 'doctrine_cache.php_file.class' => 'Doctrine\\Common\\Cache\\PhpFileCache', + 'doctrine_cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine_cache.memcache.connection.class' => 'Memcache', + 'doctrine_cache.memcache.host' => 'localhost', + 'doctrine_cache.memcache.port' => 11211, + 'doctrine_cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine_cache.memcached.connection.class' => 'Memcached', + 'doctrine_cache.memcached.host' => 'localhost', + 'doctrine_cache.memcached.port' => 11211, + 'doctrine_cache.mongodb.class' => 'Doctrine\\Common\\Cache\\MongoDBCache', + 'doctrine_cache.mongodb.collection.class' => 'MongoCollection', + 'doctrine_cache.mongodb.connection.class' => 'MongoClient', + 'doctrine_cache.mongodb.server' => 'localhost:27017', + 'doctrine_cache.predis.client.class' => 'Predis\\Client', + 'doctrine_cache.predis.scheme' => 'tcp', + 'doctrine_cache.predis.host' => 'localhost', + 'doctrine_cache.predis.port' => 6379, + 'doctrine_cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine_cache.redis.connection.class' => 'Redis', + 'doctrine_cache.redis.host' => 'localhost', + 'doctrine_cache.redis.port' => 6379, + 'doctrine_cache.riak.class' => 'Doctrine\\Common\\Cache\\RiakCache', + 'doctrine_cache.riak.bucket.class' => 'Riak\\Bucket', + 'doctrine_cache.riak.connection.class' => 'Riak\\Connection', + 'doctrine_cache.riak.bucket_property_list.class' => 'Riak\\BucketPropertyList', + 'doctrine_cache.riak.host' => 'localhost', + 'doctrine_cache.riak.port' => 8087, + 'doctrine_cache.sqlite3.class' => 'Doctrine\\Common\\Cache\\SQLite3Cache', + 'doctrine_cache.sqlite3.connection.class' => 'SQLite3', + 'doctrine_cache.void.class' => 'Doctrine\\Common\\Cache\\VoidCache', + 'doctrine_cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine_cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine_cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine_cache.security.acl.cache.class' => 'Doctrine\\Bundle\\DoctrineCacheBundle\\Acl\\Model\\AclCache', + 'doctrine.dbal.logger.chain.class' => 'Doctrine\\DBAL\\Logging\\LoggerChain', + 'doctrine.dbal.logger.profiling.class' => 'Doctrine\\DBAL\\Logging\\DebugStack', + 'doctrine.dbal.logger.class' => 'Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger', + 'doctrine.dbal.configuration.class' => 'Doctrine\\DBAL\\Configuration', + 'doctrine.data_collector.class' => 'Doctrine\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector', + 'doctrine.dbal.connection.event_manager.class' => 'Symfony\\Bridge\\Doctrine\\ContainerAwareEventManager', + 'doctrine.dbal.connection_factory.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ConnectionFactory', + 'doctrine.dbal.events.mysql_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit', + 'doctrine.dbal.events.oracle_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit', + 'doctrine.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 'doctrine.entity_managers' => array( + 'default' => 'doctrine.orm.default_entity_manager', + ), + 'doctrine.default_entity_manager' => 'default', + 'doctrine.dbal.connection_factory.types' => array( + + ), + 'doctrine.connections' => array( + 'default' => 'doctrine.dbal.default_connection', + ), + 'doctrine.default_connection' => 'default', + 'doctrine.orm.configuration.class' => 'Doctrine\\ORM\\Configuration', + 'doctrine.orm.entity_manager.class' => 'Doctrine\\ORM\\EntityManager', + 'doctrine.orm.manager_configurator.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ManagerConfigurator', + 'doctrine.orm.cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine.orm.cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine.orm.cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine.orm.cache.memcache_host' => 'localhost', + 'doctrine.orm.cache.memcache_port' => 11211, + 'doctrine.orm.cache.memcache_instance.class' => 'Memcache', + 'doctrine.orm.cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine.orm.cache.memcached_host' => 'localhost', + 'doctrine.orm.cache.memcached_port' => 11211, + 'doctrine.orm.cache.memcached_instance.class' => 'Memcached', + 'doctrine.orm.cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine.orm.cache.redis_host' => 'localhost', + 'doctrine.orm.cache.redis_port' => 6379, + 'doctrine.orm.cache.redis_instance.class' => 'Redis', + 'doctrine.orm.cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine.orm.cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine.orm.cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine.orm.metadata.driver_chain.class' => 'Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriverChain', + 'doctrine.orm.metadata.annotation.class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', + 'doctrine.orm.metadata.xml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedXmlDriver', + 'doctrine.orm.metadata.yml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedYamlDriver', + 'doctrine.orm.metadata.php.class' => 'Doctrine\\ORM\\Mapping\\Driver\\PHPDriver', + 'doctrine.orm.metadata.staticphp.class' => 'Doctrine\\ORM\\Mapping\\Driver\\StaticPHPDriver', + 'doctrine.orm.proxy_cache_warmer.class' => 'Symfony\\Bridge\\Doctrine\\CacheWarmer\\ProxyCacheWarmer', + 'form.type_guesser.doctrine.class' => 'Symfony\\Bridge\\Doctrine\\Form\\DoctrineOrmTypeGuesser', + 'doctrine.orm.validator.unique.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator', + 'doctrine.orm.validator_initializer.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\DoctrineInitializer', + 'doctrine.orm.security.user.provider.class' => 'Symfony\\Bridge\\Doctrine\\Security\\User\\EntityUserProvider', + 'doctrine.orm.listeners.resolve_target_entity.class' => 'Doctrine\\ORM\\Tools\\ResolveTargetEntityListener', + 'doctrine.orm.listeners.attach_entity_listeners.class' => 'Doctrine\\ORM\\Tools\\AttachEntityListenersListener', + 'doctrine.orm.naming_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultNamingStrategy', + 'doctrine.orm.naming_strategy.underscore.class' => 'Doctrine\\ORM\\Mapping\\UnderscoreNamingStrategy', + 'doctrine.orm.quote_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultQuoteStrategy', + 'doctrine.orm.quote_strategy.ansi.class' => 'Doctrine\\ORM\\Mapping\\AnsiQuoteStrategy', + 'doctrine.orm.entity_listener_resolver.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Mapping\\ContainerAwareEntityListenerResolver', + 'doctrine.orm.second_level_cache.default_cache_factory.class' => 'Doctrine\\ORM\\Cache\\DefaultCacheFactory', + 'doctrine.orm.second_level_cache.default_region.class' => 'Doctrine\\ORM\\Cache\\Region\\DefaultRegion', + 'doctrine.orm.second_level_cache.filelock_region.class' => 'Doctrine\\ORM\\Cache\\Region\\FileLockRegion', + 'doctrine.orm.second_level_cache.logger_chain.class' => 'Doctrine\\ORM\\Cache\\Logging\\CacheLoggerChain', + 'doctrine.orm.second_level_cache.logger_statistics.class' => 'Doctrine\\ORM\\Cache\\Logging\\StatisticsCacheLogger', + 'doctrine.orm.second_level_cache.cache_configuration.class' => 'Doctrine\\ORM\\Cache\\CacheConfiguration', + 'doctrine.orm.second_level_cache.regions_configuration.class' => 'Doctrine\\ORM\\Cache\\RegionsConfiguration', + 'doctrine.orm.auto_generate_proxy_classes' => true, + 'doctrine.orm.proxy_dir' => (__DIR__.'/doctrine/orm/Proxies'), + 'doctrine.orm.proxy_namespace' => 'Proxies', + 'sensio_framework_extra.view.guesser.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Templating\\TemplateGuesser', + 'sensio_framework_extra.controller.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 'sensio_framework_extra.routing.loader.annot_dir.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader', + 'sensio_framework_extra.routing.loader.annot_file.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader', + 'sensio_framework_extra.routing.loader.annot_class.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Routing\\AnnotatedRouteControllerLoader', + 'sensio_framework_extra.converter.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 'sensio_framework_extra.converter.manager.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 'sensio_framework_extra.converter.doctrine.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 'sensio_framework_extra.converter.datetime.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 'sensio_framework_extra.view.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 'web_profiler.debug_toolbar.position' => 'bottom', + 'web_profiler.debug_toolbar.intercept_redirects' => false, + 'web_profiler.debug_toolbar.mode' => 2, + 'data_collector.templates' => array( + 'data_collector.request' => array( + 0 => 'request', + 1 => '@WebProfiler/Collector/request.html.twig', + ), + 'data_collector.time' => array( + 0 => 'time', + 1 => '@WebProfiler/Collector/time.html.twig', + ), + 'data_collector.memory' => array( + 0 => 'memory', + 1 => '@WebProfiler/Collector/memory.html.twig', + ), + 'data_collector.ajax' => array( + 0 => 'ajax', + 1 => '@WebProfiler/Collector/ajax.html.twig', + ), + 'data_collector.form' => array( + 0 => 'form', + 1 => '@WebProfiler/Collector/form.html.twig', + ), + 'data_collector.exception' => array( + 0 => 'exception', + 1 => '@WebProfiler/Collector/exception.html.twig', + ), + 'data_collector.logger' => array( + 0 => 'logger', + 1 => '@WebProfiler/Collector/logger.html.twig', + ), + 'data_collector.events' => array( + 0 => 'events', + 1 => '@WebProfiler/Collector/events.html.twig', + ), + 'data_collector.router' => array( + 0 => 'router', + 1 => '@WebProfiler/Collector/router.html.twig', + ), + 'data_collector.security' => array( + 0 => 'security', + 1 => '@Security/Collector/security.html.twig', + ), + 'data_collector.twig' => array( + 0 => 'twig', + 1 => '@WebProfiler/Collector/twig.html.twig', + ), + 'data_collector.doctrine' => array( + 0 => 'db', + 1 => '@Doctrine/Collector/db.html.twig', + ), + 'swiftmailer.data_collector' => array( + 0 => 'swiftmailer', + 1 => '@Swiftmailer/Collector/swiftmailer.html.twig', + ), + 'data_collector.dump' => array( + 0 => 'dump', + 1 => '@Debug/Profiler/dump.html.twig', + ), + 'data_collector.config' => array( + 0 => 'config', + 1 => '@WebProfiler/Collector/config.html.twig', + ), + ), + 'console.command.ids' => array( + 0 => 'sensio_distribution.security_checker.command', + ), + ); + } +} diff --git a/var/cache/dev/appDevDebugProjectContainer.php.meta b/var/cache/dev/appDevDebugProjectContainer.php.meta new file mode 100644 index 00000000..42a9b115 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainer.php.meta @@ -0,0 +1 @@ +a:210:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":52:{s:44:"/home/c2i/git/Symphony_S_A/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":111:{s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":82:{s:74:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/MonologBundle.php";}i:10;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:12;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:16;C:46:"Symfony\Component\Config\Resource\FileResource":62:{s:54:"/home/c2i/git/Symphony_S_A/src/AppBundle/AppBundle.php";}i:18;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:22;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/SensioDistributionBundle.php";}i:24;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/SensioGeneratorBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:27;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:28;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:30;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:31;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddAnnotationsCachedReaderPass.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":155:{s:146:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:33;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:34;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:36;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:37;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:39;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:40;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:42;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:43;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/PropertyInfoPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/DataCollectorTranslatorPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ControllerArgumentValueResolverPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ValidateWorkflowsPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddDebugLogProcessorPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":156:{s:147:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ConfigCachePass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/RuntimeLoaderPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/FixEmptyLoggerPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:70;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/config_dev.yml";}i:73;C:46:"Symfony\Component\Config\Resource\FileResource":56:{s:48:"/home/c2i/git/Symphony_S_A/app/config/config.yml";}i:74;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/parameters.yml";}i:75;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/security.yml";}i:76;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/services.yml";}i:77;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:78;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:79;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:80;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:119;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:120;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:121;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:122;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:123;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/FactoryReturnTypePass.php";}i:124;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:125;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:126;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:127;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php";}i:128;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:129;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:130;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:135;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:136;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:137;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:138;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:139;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:145;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php";}i:149;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:152;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:153;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml";}i:154;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:155;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:156;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:157;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:158;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:159;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:160;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:163;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:164;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:167;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:168;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:169;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:170;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:171;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:174;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php";}i:175;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:176;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:177;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:178;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:179;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:180;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:181;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml";}i:182;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_debug.xml";}i:183;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:186;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:187;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:188;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml";}i:189;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/templating.xml";}i:190;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":88:{a:2:{i:0;s:62:"/home/c2i/git/Symphony_S_A/app/Resources/FrameworkBundle/views";i:1;b:0;}}i:191;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":127:{a:2:{i:0;s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views";i:1;b:1;}}i:192;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/SecurityBundle/views";i:1;b:0;}}i:193;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":125:{a:2:{i:0;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views";i:1;b:1;}}i:194;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":83:{a:2:{i:0;s:57:"/home/c2i/git/Symphony_S_A/app/Resources/TwigBundle/views";i:1;b:0;}}i:195;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":121:{a:2:{i:0;s:95:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views";i:1;b:1;}}i:196;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":86:{a:2:{i:0;s:60:"/home/c2i/git/Symphony_S_A/app/Resources/MonologBundle/views";i:1;b:0;}}i:197;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":98:{a:2:{i:0;s:72:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/views";i:1;b:0;}}i:198;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/SwiftmailerBundle/views";i:1;b:0;}}i:199;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views";i:1;b:1;}}i:200;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/DoctrineBundle/views";i:1;b:0;}}i:201;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":100:{a:2:{i:0;s:74:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views";i:1;b:1;}}i:202;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/app/Resources/SensioFrameworkExtraBundle/views";i:1;b:0;}}i:203;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":105:{a:2:{i:0;s:79:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/views";i:1;b:0;}}i:204;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/app/Resources/AppBundle/views";i:1;b:0;}}i:205;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/src/AppBundle/Resources/views";i:1;b:0;}}i:206;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":84:{a:2:{i:0;s:58:"/home/c2i/git/Symphony_S_A/app/Resources/DebugBundle/views";i:1;b:0;}}i:207;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":122:{a:2:{i:0;s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views";i:1;b:1;}}i:208;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/WebProfilerBundle/views";i:1;b:0;}}i:209;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":129:{a:2:{i:0;s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views";i:1;b:1;}}i:210;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":97:{a:2:{i:0;s:71:"/home/c2i/git/Symphony_S_A/app/Resources/SensioDistributionBundle/views";i:1;b:0;}}i:211;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/views";i:1;b:0;}}i:212;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":94:{a:2:{i:0;s:68:"/home/c2i/git/Symphony_S_A/app/Resources/SensioGeneratorBundle/views";i:1;b:0;}}i:213;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources/views";i:1;b:0;}}i:214;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":72:{a:2:{i:0;s:46:"/home/c2i/git/Symphony_S_A/app/Resources/views";i:1;b:1;}}i:215;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:218;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:219;C:46:"Symfony\Component\Config\Resource\FileResource":93:{s:85:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:220;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:223;C:46:"Symfony\Component\Config\Resource\FileResource":106:{s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Configuration.php";}i:224;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:229;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Configuration.php";}i:230;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-cache-bundle/Resources/config/services.xml";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:232;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:233;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":87:{s:79:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":64:{s:56:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle";}i:243;C:46:"Symfony\Component\Config\Resource\FileResource":83:{s:75:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config";}i:244;C:46:"Symfony\Component\Config\Resource\FileResource":66:{s:58:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":71:{s:63:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle";}i:247;C:46:"Symfony\Component\Config\Resource\FileResource":48:{s:40:"/home/c2i/git/Symphony_S_A/src/AppBundle";}i:248;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:249;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:252;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config";}i:253;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle";}i:254;C:46:"Symfony\Component\Config\Resource\FileResource":75:{s:67:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":65:{s:57:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle";}i:256;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:259;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:260;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:261;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:262;C:46:"Symfony\Component\Config\Resource\FileResource":100:{s:92:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:263;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:264;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:265;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:266;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:267;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:269;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Configuration.php";}i:270;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:271;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:273;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:274;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:275;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/toolbar.xml";}i:276;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/DependencyInjection/SensioDistributionExtension.php";}i:279;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config/security.xml";}i:280;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":55:{a:2:{i:0;s:29:"Symfony\Component\Yaml\Parser";i:1;b:1;}}i:281;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":63:{a:2:{i:0;s:37:"Symfony\Component\Stopwatch\Stopwatch";i:1;b:1;}}i:282;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":81:{a:2:{i:0;s:55:"Symfony\Component\ExpressionLanguage\ExpressionLanguage";i:1;b:1;}}i:283;C:46:"Symfony\Component\Config\Resource\FileResource":89:{s:81:"/home/c2i/git/Symphony_S_A/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php";}} \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainer.xml b/var/cache/dev/appDevDebugProjectContainer.xml new file mode 100644 index 00000000..0a0c2a3d --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainer.xml @@ -0,0 +1,2800 @@ + + + + /home/c2i/git/Symphony_S_A/app + dev + true + app + /home/c2i/git/Symphony_S_A/var/cache/dev + /home/c2i/git/Symphony_S_A/var/logs + + Symfony\Bundle\FrameworkBundle\FrameworkBundle + Symfony\Bundle\SecurityBundle\SecurityBundle + Symfony\Bundle\TwigBundle\TwigBundle + Symfony\Bundle\MonologBundle\MonologBundle + Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle + Doctrine\Bundle\DoctrineBundle\DoctrineBundle + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle + AppBundle\AppBundle + Symfony\Bundle\DebugBundle\DebugBundle + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle + Sensio\Bundle\DistributionBundle\SensioDistributionBundle + Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle + + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle + Symfony\Bundle\FrameworkBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle + Symfony\Bundle\SecurityBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle + Symfony\Bundle\TwigBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle + Symfony\Bundle\MonologBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle + Symfony\Bundle\SwiftmailerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle + Doctrine\Bundle\DoctrineBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle + Sensio\Bundle\FrameworkExtraBundle + + + null + /home/c2i/git/Symphony_S_A/src/AppBundle + AppBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle + Symfony\Bundle\DebugBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle + Symfony\Bundle\WebProfilerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle + Sensio\Bundle\DistributionBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle + Sensio\Bundle\GeneratorBundle + + + UTF-8 + appDevDebugProjectContainer + 127.0.0.1 + null + symfony + root + null + smtp + 127.0.0.1 + null + null + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + en + null + /_fragment + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + true + + + en + null + null + _sf2_meta + + true + 1 + + /home/c2i/git/Symphony_S_A/app/../var/sessions/dev + 0 + true + _token + null + + twig + + + /home/c2i/git/Symphony_S_A/var/cache/dev/validation.php + validators + false + false + file:/home/c2i/git/Symphony_S_A/var/cache/dev/profiler + -1 + /home/c2i/git/Symphony_S_A/var/cache/dev/appDevDebugProjectContainer.xml + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appDevDebugProjectContainerUrlMatcher + appDevDebugProjectContainerUrlGenerator + localhost + http + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + appDevDebugProjectContainer + 80 + 443 + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + null + true + migrate + false + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + true + + + + exclusive + + event + doctrine + + + + exclusive + + event + + + + Swift_Mailer + Swift_Transport_SendmailTransport + Swift_Transport_MailTransport + Swift_Transport_FailoverTransport + Swift_Plugins_RedirectingPlugin + Swift_Plugins_ImpersonatePlugin + Swift_Plugins_MessageLogger + Swift_Plugins_AntiFloodPlugin + Swift_Transport_EsmtpTransport + Swift_Plugins_BlackholePlugin + Swift_FileSpool + Swift_MemorySpool + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector + smtp + null + 25 + 127.0.0.1 + null + null + null + 30 + null + null + /home/c2i/git/Symphony_S_A/var/cache/dev/swiftmailer/spool/default + true + null + null + true + true + true + null + + swiftmailer.mailer.default + + default + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\ApcuCache + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ChainCache + Doctrine\Common\Cache\CouchbaseCache + Couchbase + localhost:8091 + Doctrine\Common\Cache\FilesystemCache + Doctrine\Common\Cache\PhpFileCache + Doctrine\Common\Cache\MemcacheCache + Memcache + localhost + 11211 + Doctrine\Common\Cache\MemcachedCache + Memcached + localhost + 11211 + Doctrine\Common\Cache\MongoDBCache + MongoCollection + MongoClient + localhost:27017 + Predis\Client + tcp + localhost + 6379 + Doctrine\Common\Cache\RedisCache + Redis + localhost + 6379 + Doctrine\Common\Cache\RiakCache + Riak\Bucket + Riak\Connection + Riak\BucketPropertyList + localhost + 8087 + Doctrine\Common\Cache\SQLite3Cache + SQLite3 + Doctrine\Common\Cache\VoidCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Bundle\DoctrineCacheBundle\Acl\Model\AclCache + Doctrine\DBAL\Logging\LoggerChain + Doctrine\DBAL\Logging\DebugStack + Symfony\Bridge\Doctrine\Logger\DbalLogger + Doctrine\DBAL\Configuration + Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector + Symfony\Bridge\Doctrine\ContainerAwareEventManager + Doctrine\Bundle\DoctrineBundle\ConnectionFactory + Doctrine\DBAL\Event\Listeners\MysqlSessionInit + Doctrine\DBAL\Event\Listeners\OracleSessionInit + Doctrine\Bundle\DoctrineBundle\Registry + + doctrine.orm.default_entity_manager + + default + + + doctrine.dbal.default_connection + + default + Doctrine\ORM\Configuration + Doctrine\ORM\EntityManager + Doctrine\Bundle\DoctrineBundle\ManagerConfigurator + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\MemcacheCache + localhost + 11211 + Memcache + Doctrine\Common\Cache\MemcachedCache + localhost + 11211 + Memcached + Doctrine\Common\Cache\RedisCache + localhost + 6379 + Redis + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain + Doctrine\ORM\Mapping\Driver\AnnotationDriver + Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver + Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver + Doctrine\ORM\Mapping\Driver\PHPDriver + Doctrine\ORM\Mapping\Driver\StaticPHPDriver + Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer + Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser + Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator + Symfony\Bridge\Doctrine\Validator\DoctrineInitializer + Symfony\Bridge\Doctrine\Security\User\EntityUserProvider + Doctrine\ORM\Tools\ResolveTargetEntityListener + Doctrine\ORM\Tools\AttachEntityListenersListener + Doctrine\ORM\Mapping\DefaultNamingStrategy + Doctrine\ORM\Mapping\UnderscoreNamingStrategy + Doctrine\ORM\Mapping\DefaultQuoteStrategy + Doctrine\ORM\Mapping\AnsiQuoteStrategy + Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver + Doctrine\ORM\Cache\DefaultCacheFactory + Doctrine\ORM\Cache\Region\DefaultRegion + Doctrine\ORM\Cache\Region\FileLockRegion + Doctrine\ORM\Cache\Logging\CacheLoggerChain + Doctrine\ORM\Cache\Logging\StatisticsCacheLogger + Doctrine\ORM\Cache\CacheConfiguration + Doctrine\ORM\Cache\RegionsConfiguration + true + /home/c2i/git/Symphony_S_A/var/cache/dev/doctrine/orm/Proxies + Proxies + Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + Symfony\Component\Routing\Loader\AnnotationDirectoryLoader + Symfony\Component\Routing\Loader\AnnotationFileLoader + Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + bottom + false + 2 + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + + sensio_distribution.security_checker.command + + + + + + + + + + UTF-8 + + + + + + + + en + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/validation.php + + + + + iTCx+5mhKU + 0 + Tt1rUGwa3fvpkxQTGpnXNB + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/annotations.php + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + + + + + + + + + + + + + + + + + Symfony\Component\HttpFoundation\ParameterBag + Symfony\Component\HttpFoundation\HeaderBag + Symfony\Component\HttpFoundation\FileBag + Symfony\Component\HttpFoundation\ServerBag + Symfony\Component\HttpFoundation\Request + Symfony\Component\HttpKernel\Kernel + Symfony\Component\ClassLoader\ClassCollectionLoader + Symfony\Component\ClassLoader\ApcClassLoader + + + + + + + + + Symfony\Component\DependencyInjection\ContainerInterface + Symfony\Component\DependencyInjection\Container + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + + + + + + + + + + + + + + true + + inline + fragment.renderer.inline + + + hinclude + fragment.renderer.hinclude + + + hinclude + fragment.renderer.hinclude + + + esi + fragment.renderer.esi + + + ssi + fragment.renderer.ssi + + + + + + + + /_fragment + + + + + + + + null + + /_fragment + + + + + null + + + + /_fragment + + + + + null + + + + /_fragment + + + + false + false + + + 0 + false + + + + + + + 2P0pTS1Lqn + 0 + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + + bF8tWu38tg + 0 + Tt1rUGwa3fvpkxQTGpnXNB + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + natDFMbNIC + 0 + Tt1rUGwa3fvpkxQTGpnXNB + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + + + + + + + + + + + + + + + php + + + yml + + + xlf + xliff + + + po + + + mo + + + ts + + + csv + + + res + + + dat + + + ini + + + json + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/translations + true + + + + + + Symfony\Component\Translation\TranslatorInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + php + + + + yml + + + + xlf + + + + xliff + + + + po + + + + mo + + + + ts + + + + csv + + + + res + + + + dat + + + + ini + + + + json + + + + + + php + + + + twig + + + + + + php + + + + xlf + + + + po + + + + mo + + + + yml + + + + ts + + + + csv + + + + ini + + + + json + + + + res + + + + + + + + + + + + + + + + + + + _sf2_meta + 0 + + + + true + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + form.type.form + form.type.choice + form.type.entity + + + + form.type_extension.form.http_foundation + form.type_extension.form.validator + form.type_extension.upload.validator + form.type_extension.csrf + form.type_extension.form.data_collector + + + form.type_extension.repeated.validator + + + form.type_extension.submit.validator + + + + form.type_guesser.validator + form.type_guesser.doctrine + + + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + + + + + + + + + validators + + + + + true + _token + + validators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev + + + + + + + + + + + validator.expression + validator.expression + validator.email + security.validator.user_password + security.validator.user_password + doctrine.orm.validator.unique + doctrine.orm.validator.unique + + + + + + + + + validators + + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml + + + + + + + loadValidatorMetadata + + + + + + + + + + + + + + false + + + + + /_fragment + + + + + + file:/home/c2i/git/Symphony_S_A/var/cache/dev/profiler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + false + false + + + + + + + + + + + + + + + + + + false + + + + + null + + -1 + -1 + true + + true + + + + null + + /home/c2i/git/Symphony_S_A + /_profiler/open?file=%%f&line=%%l#line%%l + + + + + + + + + + + + kernel.controller + + data_collector.router + onKernelController + + 0 + + + response_listener + Symfony\Component\HttpKernel\EventListener\ResponseListener + + + streamed_response_listener + Symfony\Component\HttpKernel\EventListener\StreamedResponseListener + + + locale_listener + Symfony\Component\HttpKernel\EventListener\LocaleListener + + + validate_request_listener + Symfony\Component\HttpKernel\EventListener\ValidateRequestListener + + + translator_listener + Symfony\Component\HttpKernel\EventListener\TranslatorListener + + + session_listener + Symfony\Bundle\FrameworkBundle\EventListener\SessionListener + + + session.save_listener + Symfony\Component\HttpKernel\EventListener\SaveSessionListener + + + fragment.listener + Symfony\Component\HttpKernel\EventListener\FragmentListener + + + profiler_listener + Symfony\Component\HttpKernel\EventListener\ProfilerListener + + + data_collector.request + Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector + + + debug.debug_handlers_listener + Symfony\Component\HttpKernel\EventListener\DebugHandlersListener + + + router_listener + Symfony\Component\HttpKernel\EventListener\RouterListener + + + security.firewall + Symfony\Component\Security\Http\Firewall + + + security.rememberme.response_listener + Symfony\Component\Security\Http\RememberMe\ResponseListener + + + twig.exception_listener + Symfony\Component\HttpKernel\EventListener\ExceptionListener + + + monolog.handler.console + Symfony\Bridge\Monolog\Handler\ConsoleHandler + + + swiftmailer.email_sender.listener + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + + + sensio_framework_extra.controller.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + + + sensio_framework_extra.converter.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + + + sensio_framework_extra.view.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + + + sensio_framework_extra.cache.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener + + + sensio_framework_extra.security.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener + + + debug.dump_listener + Symfony\Component\HttpKernel\EventListener\DumpListener + + + web_profiler.debug_toolbar + Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GET + localhost + http + 80 + 443 + + + + + + + + + + + Doctrine\Common\Annotations\Reader + + + + + + false + + + + + + + 58c46f45a05e13.86720536 + + + + true + + + + + + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + + + + + + + + + + + + + + + + + ^/(_(profiler|wdt)|css|images|js)/ + + + null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + affirmative + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + + + dev + security.user_checker + security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d + false + + + + + + + + + + + + + + + + + + + + + 80 + 443 + + + + + + + + + + + + + + main + + + + + + + + + 58c46f45a05e13.86720536 + + + + + + + + + + + + + + + + + + + + + + + + + + + main + null + null + null + + false + + + + + main + security.user_checker + null + true + false + security.user.provider.concrete.in_memory + main + null + null + null + + anonymous + + + + + + + + true + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + name + /home/c2i/git/Symphony_S_A/var/cache/dev/twig + UTF-8 + + + F j, Y H:i + %d days + null + + + 0 + . + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + twig.form.renderer + + + + + + + + + + + + + + + + + + + null + UTF-8 + 0 + + + + + + + + + + + + + + + + + null + UTF-8 + 1 + + + 4096 + + + + + + + + + + app + + + + dev + + + true + + + + + + + + + + + + + + + + twig.runtime.httpkernel + twig.form.renderer + + + + + + + + F j, Y H:i + %d days + null + 0 + . + , + + + + + + + + + + + + + + + + twig.controller.exception:showAction + + + + + true + + + + twig.controller.exception:showAction + + + + + + + form_div_layout.html.twig + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/logs/dev.log + 100 + true + null + + + + + + + null + true + + + + + + + + + + + + + + + + + + + + + + + + doctrine.dbal.default_connection + + + doctrine.orm.default_entity_manager + + default + default + + + + + pdo_mysql + 127.0.0.1 + null + symfony + root + null + UTF8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + loadClassMetadata + + + + + + + + + + + + + + + + + + + + + + + + + + + sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb + + + + + sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb + + + + + sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/doctrine/orm/Proxies + + + Proxies + + + true + + + Doctrine\ORM\Mapping\ClassMetadataFactory + + + Doctrine\ORM\EntityRepository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + 0 + doctrine.orm + + + + 0 + datetime + + + + + + + + + + + + + + + + + + + null + + + + + + + + + + + + + UTF-8 + + null + + + + + + + + + 2500 + + + -1 + + + + null + UTF-8 + 0 + + + + + + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + bottom + + /home/c2i/git/Symphony_S_A + + + + + + + + + + true + + + + + + + + + + false + 2 + bottom + + ^/(app(_[\w]+)?\.php/)?_wdt + + + + + + + + + request + + + + + + + + + + + + cache + + + + + + + + + + + + translation + + + + + + + + + + + + templating + + + + + + + + + + + + profiler + + + + + + + + + + + + php + + + + + + + + + + + + event + + + + + + + + + router + + + + + + + + + + + + security + + + + + + + + + + + + doctrine + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/sessions + MOCKSESSID + + + + /home/c2i/git/Symphony_S_A/app/../var/sessions/dev + + + + + + + + + Symfony\Component\Templating\EngineInterface + Symfony\Bundle\FrameworkBundle\Templating\EngineInterface + + + + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + + /home/c2i/git/Symphony_S_A/var/cache/dev + true + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + appDevDebugProjectContainerUrlGenerator + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appDevDebugProjectContainerUrlMatcher + true + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/annotations.php + + + + + + + true + Doctrine\Common\Annotations\Reader + + + + + + + + + app + + + + + true + + + + + + + + Psr\Log\LoggerInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + + + null + + + null + + + + + + + 127.0.0.1 + + + 25 + + + null + + + 30 + + + null + + + + null + + + + + + + + + /home/c2i/git/Symphony_S_A + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views + Framework + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views + Security + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views + Twig + + + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views + Swiftmailer + + + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views + Doctrine + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views + Debug + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views + WebProfiler + + + /home/c2i/git/Symphony_S_A/app/Resources/views + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form + + + + + + + + + + + + + + + + + + + diff --git a/var/cache/dev/appDevDebugProjectContainerCompiler.log b/var/cache/dev/appDevDebugProjectContainerCompiler.log new file mode 100644 index 00000000..ec731d77 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerCompiler.log @@ -0,0 +1,456 @@ +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.app" (parent: cache.adapter.filesystem). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.system" (parent: cache.adapter.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.validator" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.serializer" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.annotations" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "assets._default_package" (parent: assets.path_package). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.simple_form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.persistent" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.simplehash" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory" (parent: security.user.provider.in_memory). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.dev" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.dev" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.main" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.context_listener.0" (parent: security.context_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.anonymous.main" (parent: security.authentication.listener.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.anonymous.main" (parent: security.authentication.provider.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.exception_listener.main" (parent: security.exception_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.main" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.eventdispatcher" (parent: swiftmailer.transport.eventdispatcher.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.authhandler" (parent: swiftmailer.transport.authhandler.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.buffer" (parent: swiftmailer.transport.buffer.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.transport.configurator.default" (parent: swiftmailer.transport.smtp.configurator.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.smtp" (parent: swiftmailer.transport.smtp.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default" (parent: swiftmailer.mailer.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.spool.memory" (parent: swiftmailer.spool.memory.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.spool" (parent: swiftmailer.transport.spool.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.plugin.messagelogger" (parent: swiftmailer.plugin.messagelogger.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.configuration" (parent: doctrine.dbal.connection.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.profiling.default" (parent: doctrine.dbal.logger.profiling). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.chain.default" (parent: doctrine.dbal.logger.chain). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.event_manager" (parent: doctrine.dbal.connection.event_manager). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection" (parent: doctrine.dbal.connection). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_configuration" (parent: doctrine.orm.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_metadata_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_result_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_query_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_manager_configurator" (parent: doctrine.orm.manager_configurator.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_entity_manager" (parent: doctrine.orm.entity_manager.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.request" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.cache" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.translation" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.templating" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.profiler" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.php" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.event" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.router" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.security" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.doctrine" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.property_accessor"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.choice_list_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "validator.mapping.class_metadata_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "cache.default_redis_provider"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.user_checker.main"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.dbal.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.metadata.annotation_reader"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.default_entity_manager.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "sensio_framework_extra.security.expression_language"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "controller_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "argument_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.access.decision_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "locale_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.native" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.php_bridge" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "validator.builder" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router.cache_warmer" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.logout_url_generator" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.validator.user_password" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig" previously pointing to "twig.loader.filesystem" to "twig.loader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.routing" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.runtime_loader" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.email_sender.listener" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default" previously pointing to "swiftmailer.mailer.default.transport.spool" to "swiftmailer.mailer.default.transport". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.controller.listener" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.routing.loader.annot_class" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.profiler" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.router" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.debug_toolbar" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.password_encoder" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default.transport" previously pointing to "swiftmailer.mailer.default.spool.memory" to "swiftmailer.mailer.default.spool". +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.doctrine"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.filesystem"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.psr6"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.path_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.url_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.static_version_strategy"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.context"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.config"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory.user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.ldap"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.handler.cookie_clearing"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.form_entry_point"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.simple_success_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_preauth"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.x509"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.remote_user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.basic"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.digest"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.dao"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.ldap_bind"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.simple"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.pre_authenticated"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.exception_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.switchuser_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.persistent"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.simplehash"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "monolog.logger_prototype"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.mailer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.sendmail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.mail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.null.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.buffer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.authhandler.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.eventdispatcher.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.redirecting.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.antiflood.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.impersonate.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.messagelogger.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.spool.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.file.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.memory.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apc"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.array"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.couchbase"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.file_system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.php_file"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcached"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.mongodb"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.predis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.riak"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.sqlite3"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.void"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.wincache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.xcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.zenddata"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.profiling"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.event_manager"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.entity_manager.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.manager_configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.security.user.provider"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.cache_warmer.template_paths" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translation.warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.mapping.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "router.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.proxy_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1" to "config_cache_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.property_access" to "property_accessor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.attribute_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.flash_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1" to "form.resolved_type_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.extension" to "form.registry". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.default" to "form.choice_list_factory.property_access". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.property_access" to "form.choice_list_factory.cached". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.cached" to "form.type.choice". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.type_extension.form.request_handler" to "form.type_extension.form.http_foundation". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_generator" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_storage" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets._default_package" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.validator_factory" to "validator.builder". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1" to "validator.mapping.cache.symfony". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2" to "validator.mapping.cache.doctrine.apc". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "profiler.storage" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.time" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.memory" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.ajax" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.exception" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.logger" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.events" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.security" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.twig" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.doctrine" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.data_collector" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.config" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.event_dispatcher.parent" to "debug.event_dispatcher". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.controller_resolver.inner" to "debug.controller_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.argument_resolver.inner" to "debug.argument_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.xml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.yml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.php" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.directory" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.service" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_dir" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_file" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.resolver" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2" to "annotations.cache". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.anonymous.main" to "security.authentication.manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.expression_language" to "security.access.expression_voter". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d" to "security.firewall.map". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.retry_entry_point" to "security.channel_listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.security.access.decision_manager.inner" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.authenticated_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.simple_role_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.expression_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.dev" to "security.firewall.map.context.dev". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.exception_listener.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.channel_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.context_listener.0" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.anonymous.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.exception_listener.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.logout_url" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.security" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.profiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.trans" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.assets" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.code" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.routing" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.yaml" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug.stopwatch" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.expression" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpkernel" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.form" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.twig.doctrine_extension" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.dump" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.webprofiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.app_variable" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.runtime_loader" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.configurator.environment" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_iterator" to "twig.template_cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.engine" to "twig.form.renderer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_1" to "swiftmailer.mailer.default.transport.authhandler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_2" to "swiftmailer.mailer.default.transport.authhandler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_3" to "swiftmailer.mailer.default.transport.authhandler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.transport.replacementfactory" to "swiftmailer.mailer.default.transport.buffer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger.chain.default" to "doctrine.dbal.default_connection.configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger" to "doctrine.dbal.logger.chain.default". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.configuration" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.event_manager" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_metadata_driver" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.naming_strategy.underscore" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.quote_strategy.default" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_configuration" to "doctrine.orm.default_entity_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_entity_manager.metadata_factory" to "doctrine.orm.default_entity_manager.property_info_extractor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.security.expression_language.default" to "sensio_framework_extra.security.listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "var_dumper.html_dumper" to "twig.extension.dump". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1" to "web_profiler.csp.handler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2" to "twig.extension.webprofiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_metadata_factory" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request_attribute" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user_value_resolver" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.default" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.variadic" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.buffer" to "swiftmailer.mailer.default.transport.real". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.authhandler" to "swiftmailer.mailer.default.transport.real". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.transport.configurator.default" to "swiftmailer.mailer.default.transport.real". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request_attribute"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.variadic"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.serializer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.logging"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translation.warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.flash_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.attribute_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.write_check"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.cached"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.type_extension.form.request_handler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_generator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets._default_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.engine.delegating"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.cache_warmer.template_paths"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.symfony"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.doctrine.apc"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.validator_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "profiler.storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.config"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.ajax"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.exception"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.events"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.time"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "c66c8daa4fa4dead6a562ed2c4bdb322"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.event_dispatcher.parent"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.xml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.yml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.directory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.service"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "router.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.filesystem_cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_value_resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.session_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_checker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.expression_language"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.simple_role_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.authenticated_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.expression_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.http_utils"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.retry_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.basic_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.digest_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.channel_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.handler.session"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.rememberme.token.provider.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.logout_url"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.dev"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener.0"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.exception_listener.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.app_variable"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_iterator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.native_filesystem"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.profiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.twig"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.trans"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.assets"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.code"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.routing"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.yaml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug.stopwatch"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.expression"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpkernel"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpfoundation"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.configurator.environment"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.runtime_loader"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.form"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.engine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.chrome_php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.gelf_message"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.html"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.json"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.line"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.loggly"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.normalizer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.scalar"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.wildfire"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.logstash"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_3"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.failover"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.mailinvoker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.replacementfactory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.data_collector"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.authhandler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.buffer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.configurator.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.doctrine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.twig.doctrine_extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger.chain.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.event_manager"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.proxy_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.listeners.resolve_target_entity"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.underscore"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.ansi"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_metadata_driver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_entity_manager.metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_dir"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_file"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.security.expression_language.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.dump"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "var_dumper.html_dumper"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.webprofiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.controller_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.argument_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.security.access.decision_manager.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.validator" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets.empty_version_strategy" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user.provider.concrete.in_memory" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.validator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_version_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.finder"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_map"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user.provider.concrete.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_class"; reason: unused. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "annotations.cached_reader" was defined on service(s) "annotation_reader", but was never used. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.list_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.type_extractor"? +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.type_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.list_extractor"? \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php new file mode 100644 index 00000000..bce03a5c --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php @@ -0,0 +1,54 @@ +context = $context; + $this->logger = $logger; + if (null === self::$declaredRoutes) { + self::$declaredRoutes = array( + '_wdt' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 1 => array ( 0 => 'text', 1 => '/_wdt', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_home' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:homeAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_search' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/search', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_search_bar' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/search_bar', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_info' => array ( 0 => array ( 0 => 'about', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:infoAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'about', ), 1 => array ( 0 => 'text', 1 => '/_profiler/info', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_phpinfo' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/phpinfo', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_search_results' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/search/results', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_open_file' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:openAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/open', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:panelAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 1 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_router' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.router:panelAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/router', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_exception' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.exception:showAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/exception', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_exception_css' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.exception:cssAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/exception.css', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_twig_error_test' => array ( 0 => array ( 0 => 'code', 1 => '_format', ), 1 => array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html', ), 2 => array ( 'code' => '\\d+', ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '.', 2 => '[^/]++', 3 => '_format', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '\\d+', 3 => 'code', ), 2 => array ( 0 => 'text', 1 => '/_error', ), ), 4 => array ( ), 5 => array ( ),), + 'homepage' => array ( 0 => array ( ), 1 => array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/', ), ), 4 => array ( ), 5 => array ( ),), + ); + } + } + + public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) + { + if (!isset(self::$declaredRoutes[$name])) { + throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); + } + + list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name]; + + return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes); + } +} diff --git a/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta new file mode 100644 index 00000000..56408835 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta @@ -0,0 +1 @@ +a:7:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/routing_dev.yml";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/profiler.xml";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/routing/errors.xml";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":57:{s:49:"/home/c2i/git/Symphony_S_A/app/config/routing.yml";}i:5;C:51:"Symfony\Component\Config\Resource\DirectoryResource":88:{a:2:{i:0;s:51:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller";i:1;s:8:"/\.php$/";}}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/DefaultController.php";}} \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php new file mode 100644 index 00000000..4eaeb804 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php @@ -0,0 +1,119 @@ +context = $context; + } + + public function match($pathinfo) + { + $allow = array(); + $pathinfo = rawurldecode($pathinfo); + $context = $this->context; + $request = $this->request; + + if (0 === strpos($pathinfo, '/_')) { + // _wdt + if (0 === strpos($pathinfo, '/_wdt') && preg_match('#^/_wdt/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_wdt')), array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction',)); + } + + if (0 === strpos($pathinfo, '/_profiler')) { + // _profiler_home + if (rtrim($pathinfo, '/') === '/_profiler') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', '_profiler_home'); + } + + return array ( '_controller' => 'web_profiler.controller.profiler:homeAction', '_route' => '_profiler_home',); + } + + if (0 === strpos($pathinfo, '/_profiler/search')) { + // _profiler_search + if ($pathinfo === '/_profiler/search') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchAction', '_route' => '_profiler_search',); + } + + // _profiler_search_bar + if ($pathinfo === '/_profiler/search_bar') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', '_route' => '_profiler_search_bar',); + } + + } + + // _profiler_info + if (0 === strpos($pathinfo, '/_profiler/info') && preg_match('#^/_profiler/info/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_info')), array ( '_controller' => 'web_profiler.controller.profiler:infoAction',)); + } + + // _profiler_phpinfo + if ($pathinfo === '/_profiler/phpinfo') { + return array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', '_route' => '_profiler_phpinfo',); + } + + // _profiler_search_results + if (preg_match('#^/_profiler/(?P[^/]++)/search/results$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_search_results')), array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction',)); + } + + // _profiler_open_file + if ($pathinfo === '/_profiler/open') { + return array ( '_controller' => 'web_profiler.controller.profiler:openAction', '_route' => '_profiler_open_file',); + } + + // _profiler + if (preg_match('#^/_profiler/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler')), array ( '_controller' => 'web_profiler.controller.profiler:panelAction',)); + } + + // _profiler_router + if (preg_match('#^/_profiler/(?P[^/]++)/router$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_router')), array ( '_controller' => 'web_profiler.controller.router:panelAction',)); + } + + // _profiler_exception + if (preg_match('#^/_profiler/(?P[^/]++)/exception$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception')), array ( '_controller' => 'web_profiler.controller.exception:showAction',)); + } + + // _profiler_exception_css + if (preg_match('#^/_profiler/(?P[^/]++)/exception\\.css$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception_css')), array ( '_controller' => 'web_profiler.controller.exception:cssAction',)); + } + + } + + // _twig_error_test + if (0 === strpos($pathinfo, '/_error') && preg_match('#^/_error/(?P\\d+)(?:\\.(?P<_format>[^/]++))?$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_twig_error_test')), array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html',)); + } + + } + + // homepage + if (rtrim($pathinfo, '/') === '') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', 'homepage'); + } + + return array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', '_route' => 'homepage',); + } + + throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException(); + } +} diff --git a/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta new file mode 100644 index 00000000..56408835 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta @@ -0,0 +1 @@ +a:7:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/routing_dev.yml";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/profiler.xml";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/routing/errors.xml";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":57:{s:49:"/home/c2i/git/Symphony_S_A/app/config/routing.yml";}i:5;C:51:"Symfony\Component\Config\Resource\DirectoryResource":88:{a:2:{i:0;s:51:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller";i:1;s:8:"/\.php$/";}}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/DefaultController.php";}} \ No newline at end of file diff --git a/var/cache/dev/classes.map b/var/cache/dev/classes.map new file mode 100644 index 00000000..98e32d3e --- /dev/null +++ b/var/cache/dev/classes.map @@ -0,0 +1,99 @@ + 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener', + 1 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage', + 2 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage', + 3 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', + 4 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy', + 5 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy', + 6 => 'Symfony\\Component\\HttpFoundation\\Session\\Session', + 8 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\GlobalVariables', + 9 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateReference', + 10 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateNameParser', + 11 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\TemplateLocator', + 12 => 'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', + 13 => 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', + 14 => 'Symfony\\Component\\Cache\\CacheItem', + 15 => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 16 => 'Symfony\\Component\\Routing\\RequestContext', + 17 => 'Symfony\\Component\\Routing\\Router', + 18 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 19 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\Router', + 20 => 'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter', + 21 => 'Symfony\\Component\\Cache\\DoctrineProvider', + 22 => 'Symfony\\Component\\Config\\ConfigCache', + 23 => 'Symfony\\Component\\Config\\FileLocator', + 24 => 'Symfony\\Component\\Debug\\ErrorHandler', + 25 => 'Symfony\\Component\\DependencyInjection\\ContainerAwareInterface', + 26 => 'Symfony\\Component\\DependencyInjection\\Container', + 27 => 'Symfony\\Component\\EventDispatcher\\Event', + 28 => 'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher', + 29 => 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener', + 30 => 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener', + 31 => 'Symfony\\Component\\HttpKernel\\Bundle\\Bundle', + 32 => 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver', + 33 => 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver', + 34 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadata', + 35 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactory', + 36 => 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent', + 37 => 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent', + 38 => 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent', + 39 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent', + 40 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent', + 41 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent', + 42 => 'Symfony\\Component\\HttpKernel\\HttpKernel', + 43 => 'Symfony\\Component\\HttpKernel\\KernelEvents', + 44 => 'Symfony\\Component\\HttpKernel\\Config\\FileLocator', + 45 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerNameParser', + 46 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerResolver', + 47 => 'Symfony\\Component\\Security\\Http\\Firewall', + 48 => 'Symfony\\Component\\Security\\Core\\User\\UserProviderInterface', + 49 => 'Symfony\\Component\\Security\\Core\\Authentication\\AuthenticationProviderManager', + 50 => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage', + 51 => 'Symfony\\Component\\Security\\Core\\Authorization\\AccessDecisionManager', + 52 => 'Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker', + 53 => 'Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface', + 54 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallConfig', + 55 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallMap', + 56 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallContext', + 57 => 'Symfony\\Component\\HttpFoundation\\RequestMatcher', + 58 => 'Twig_Environment', + 59 => 'Twig_Extension', + 60 => 'Twig_Extension_Core', + 61 => 'Twig_Extension_Escaper', + 62 => 'Twig_Extension_Optimizer', + 63 => 'Twig_LoaderInterface', + 64 => 'Twig_Markup', + 65 => 'Twig_Template', + 66 => 'Monolog\\Formatter\\FormatterInterface', + 67 => 'Monolog\\Formatter\\LineFormatter', + 68 => 'Monolog\\Handler\\HandlerInterface', + 69 => 'Monolog\\Handler\\AbstractHandler', + 70 => 'Monolog\\Handler\\AbstractProcessingHandler', + 71 => 'Monolog\\Handler\\StreamHandler', + 72 => 'Monolog\\Handler\\FingersCrossedHandler', + 73 => 'Monolog\\Handler\\FilterHandler', + 74 => 'Monolog\\Handler\\TestHandler', + 75 => 'Monolog\\Logger', + 76 => 'Symfony\\Bridge\\Monolog\\Logger', + 77 => 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface', + 78 => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy', + 79 => 'Doctrine\\Common\\Annotations\\DocLexer', + 80 => 'Doctrine\\Common\\Annotations\\FileCacheReader', + 81 => 'Doctrine\\Common\\Annotations\\PhpParser', + 82 => 'Doctrine\\Common\\Annotations\\Reader', + 83 => 'Doctrine\\Common\\Lexer', + 84 => 'Doctrine\\Common\\Persistence\\ConnectionRegistry', + 85 => 'Doctrine\\Common\\Persistence\\Proxy', + 86 => 'Doctrine\\Common\\Util\\ClassUtils', + 87 => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 88 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 89 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 90 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 91 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 92 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface', + 93 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 94 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 95 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener', + 96 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener', + 97 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ConfigurationAnnotation', +); \ No newline at end of file diff --git a/var/cache/dev/classes.php b/var/cache/dev/classes.php new file mode 100644 index 00000000..4be33a5c --- /dev/null +++ b/var/cache/dev/classes.php @@ -0,0 +1,9764 @@ +isMasterRequest()) { +return; +} +$request = $event->getRequest(); +$session = $this->getSession(); +if (null === $session || $request->hasSession()) { +return; +} +$request->setSession($session); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::REQUEST => array('onKernelRequest', 128), +); +} +abstract protected function getSession(); +} +} +namespace Symfony\Bundle\FrameworkBundle\EventListener +{ +use Symfony\Component\HttpKernel\EventListener\SessionListener as BaseSessionListener; +use Symfony\Component\DependencyInjection\ContainerInterface; +class SessionListener extends BaseSessionListener +{ +private $container; +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +protected function getSession() +{ +if (!$this->container->has('session')) { +return; +} +return $this->container->get('session'); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage +{ +use Symfony\Component\HttpFoundation\Session\SessionBagInterface; +interface SessionStorageInterface +{ +public function start(); +public function isStarted(); +public function getId(); +public function setId($id); +public function getName(); +public function setName($name); +public function regenerate($destroy = false, $lifetime = null); +public function save(); +public function clear(); +public function getBag($name); +public function registerBag(SessionBagInterface $bag); +public function getMetadataBag(); +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage +{ +use Symfony\Component\HttpFoundation\Session\SessionBagInterface; +use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; +use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; +use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy; +class NativeSessionStorage implements SessionStorageInterface +{ +protected $bags; +protected $started = false; +protected $closed = false; +protected $saveHandler; +protected $metadataBag; +public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null) +{ +session_cache_limiter(''); ini_set('session.use_cookies', 1); +session_register_shutdown(); +$this->setMetadataBag($metaBag); +$this->setOptions($options); +$this->setSaveHandler($handler); +} +public function getSaveHandler() +{ +return $this->saveHandler; +} +public function start() +{ +if ($this->started) { +return true; +} +if (\PHP_SESSION_ACTIVE === session_status()) { +throw new \RuntimeException('Failed to start the session: already started by PHP.'); +} +if (ini_get('session.use_cookies') && headers_sent($file, $line)) { +throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)); +} +if (!session_start()) { +throw new \RuntimeException('Failed to start the session'); +} +$this->loadSession(); +return true; +} +public function getId() +{ +return $this->saveHandler->getId(); +} +public function setId($id) +{ +$this->saveHandler->setId($id); +} +public function getName() +{ +return $this->saveHandler->getName(); +} +public function setName($name) +{ +$this->saveHandler->setName($name); +} +public function regenerate($destroy = false, $lifetime = null) +{ +if (\PHP_SESSION_ACTIVE !== session_status()) { +return false; +} +if (null !== $lifetime) { +ini_set('session.cookie_lifetime', $lifetime); +} +if ($destroy) { +$this->metadataBag->stampNew(); +} +$isRegenerated = session_regenerate_id($destroy); +$this->loadSession(); +return $isRegenerated; +} +public function save() +{ +session_write_close(); +$this->closed = true; +$this->started = false; +} +public function clear() +{ +foreach ($this->bags as $bag) { +$bag->clear(); +} +$_SESSION = array(); +$this->loadSession(); +} +public function registerBag(SessionBagInterface $bag) +{ +if ($this->started) { +throw new \LogicException('Cannot register a bag when the session is already started.'); +} +$this->bags[$bag->getName()] = $bag; +} +public function getBag($name) +{ +if (!isset($this->bags[$name])) { +throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name)); +} +if ($this->saveHandler->isActive() && !$this->started) { +$this->loadSession(); +} elseif (!$this->started) { +$this->start(); +} +return $this->bags[$name]; +} +public function setMetadataBag(MetadataBag $metaBag = null) +{ +if (null === $metaBag) { +$metaBag = new MetadataBag(); +} +$this->metadataBag = $metaBag; +} +public function getMetadataBag() +{ +return $this->metadataBag; +} +public function isStarted() +{ +return $this->started; +} +public function setOptions(array $options) +{ +$validOptions = array_flip(array('cache_limiter','cookie_domain','cookie_httponly','cookie_lifetime','cookie_path','cookie_secure','entropy_file','entropy_length','gc_divisor','gc_maxlifetime','gc_probability','hash_bits_per_character','hash_function','name','referer_check','serialize_handler','use_cookies','use_only_cookies','use_trans_sid','upload_progress.enabled','upload_progress.cleanup','upload_progress.prefix','upload_progress.name','upload_progress.freq','upload_progress.min-freq','url_rewriter.tags', +)); +foreach ($options as $key => $value) { +if (isset($validOptions[$key])) { +ini_set('session.'.$key, $value); +} +} +} +public function setSaveHandler($saveHandler = null) +{ +if (!$saveHandler instanceof AbstractProxy && +!$saveHandler instanceof NativeSessionHandler && +!$saveHandler instanceof \SessionHandlerInterface && +null !== $saveHandler) { +throw new \InvalidArgumentException('Must be instance of AbstractProxy or NativeSessionHandler; implement \SessionHandlerInterface; or be null.'); +} +if (!$saveHandler instanceof AbstractProxy && $saveHandler instanceof \SessionHandlerInterface) { +$saveHandler = new SessionHandlerProxy($saveHandler); +} elseif (!$saveHandler instanceof AbstractProxy) { +$saveHandler = new SessionHandlerProxy(new \SessionHandler()); +} +$this->saveHandler = $saveHandler; +if ($this->saveHandler instanceof \SessionHandlerInterface) { +session_set_save_handler($this->saveHandler, false); +} +} +protected function loadSession(array &$session = null) +{ +if (null === $session) { +$session = &$_SESSION; +} +$bags = array_merge($this->bags, array($this->metadataBag)); +foreach ($bags as $bag) { +$key = $bag->getStorageKey(); +$session[$key] = isset($session[$key]) ? $session[$key] : array(); +$bag->initialize($session[$key]); +} +$this->started = true; +$this->closed = false; +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage +{ +use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; +use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; +class PhpBridgeSessionStorage extends NativeSessionStorage +{ +public function __construct($handler = null, MetadataBag $metaBag = null) +{ +$this->setMetadataBag($metaBag); +$this->setSaveHandler($handler); +} +public function start() +{ +if ($this->started) { +return true; +} +$this->loadSession(); +return true; +} +public function clear() +{ +foreach ($this->bags as $bag) { +$bag->clear(); +} +$this->loadSession(); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Handler +{ +class NativeSessionHandler extends \SessionHandler +{ +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Handler +{ +class NativeFileSessionHandler extends NativeSessionHandler +{ +public function __construct($savePath = null) +{ +if (null === $savePath) { +$savePath = ini_get('session.save_path'); +} +$baseDir = $savePath; +if ($count = substr_count($savePath,';')) { +if ($count > 2) { +throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'', $savePath)); +} +$baseDir = ltrim(strrchr($savePath,';'),';'); +} +if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0777, true) && !is_dir($baseDir)) { +throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s"', $baseDir)); +} +ini_set('session.save_path', $savePath); +ini_set('session.save_handler','files'); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy +{ +abstract class AbstractProxy +{ +protected $wrapper = false; +protected $saveHandlerName; +public function getSaveHandlerName() +{ +return $this->saveHandlerName; +} +public function isSessionHandlerInterface() +{ +return $this instanceof \SessionHandlerInterface; +} +public function isWrapper() +{ +return $this->wrapper; +} +public function isActive() +{ +return \PHP_SESSION_ACTIVE === session_status(); +} +public function getId() +{ +return session_id(); +} +public function setId($id) +{ +if ($this->isActive()) { +throw new \LogicException('Cannot change the ID of an active session'); +} +session_id($id); +} +public function getName() +{ +return session_name(); +} +public function setName($name) +{ +if ($this->isActive()) { +throw new \LogicException('Cannot change the name of an active session'); +} +session_name($name); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy +{ +class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterface +{ +protected $handler; +public function __construct(\SessionHandlerInterface $handler) +{ +$this->handler = $handler; +$this->wrapper = ($handler instanceof \SessionHandler); +$this->saveHandlerName = $this->wrapper ? ini_get('session.save_handler') :'user'; +} +public function open($savePath, $sessionName) +{ +return (bool) $this->handler->open($savePath, $sessionName); +} +public function close() +{ +return (bool) $this->handler->close(); +} +public function read($sessionId) +{ +return (string) $this->handler->read($sessionId); +} +public function write($sessionId, $data) +{ +return (bool) $this->handler->write($sessionId, $data); +} +public function destroy($sessionId) +{ +return (bool) $this->handler->destroy($sessionId); +} +public function gc($maxlifetime) +{ +return (bool) $this->handler->gc($maxlifetime); +} +} +} +namespace Symfony\Component\HttpFoundation\Session +{ +use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; +interface SessionInterface +{ +public function start(); +public function getId(); +public function setId($id); +public function getName(); +public function setName($name); +public function invalidate($lifetime = null); +public function migrate($destroy = false, $lifetime = null); +public function save(); +public function has($name); +public function get($name, $default = null); +public function set($name, $value); +public function all(); +public function replace(array $attributes); +public function remove($name); +public function clear(); +public function isStarted(); +public function registerBag(SessionBagInterface $bag); +public function getBag($name); +public function getMetadataBag(); +} +} +namespace Symfony\Component\HttpFoundation\Session +{ +use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface; +use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag; +use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; +use Symfony\Component\HttpFoundation\Session\Flash\FlashBag; +use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; +use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; +class Session implements SessionInterface, \IteratorAggregate, \Countable +{ +protected $storage; +private $flashName; +private $attributeName; +public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null) +{ +$this->storage = $storage ?: new NativeSessionStorage(); +$attributes = $attributes ?: new AttributeBag(); +$this->attributeName = $attributes->getName(); +$this->registerBag($attributes); +$flashes = $flashes ?: new FlashBag(); +$this->flashName = $flashes->getName(); +$this->registerBag($flashes); +} +public function start() +{ +return $this->storage->start(); +} +public function has($name) +{ +return $this->storage->getBag($this->attributeName)->has($name); +} +public function get($name, $default = null) +{ +return $this->storage->getBag($this->attributeName)->get($name, $default); +} +public function set($name, $value) +{ +$this->storage->getBag($this->attributeName)->set($name, $value); +} +public function all() +{ +return $this->storage->getBag($this->attributeName)->all(); +} +public function replace(array $attributes) +{ +$this->storage->getBag($this->attributeName)->replace($attributes); +} +public function remove($name) +{ +return $this->storage->getBag($this->attributeName)->remove($name); +} +public function clear() +{ +$this->storage->getBag($this->attributeName)->clear(); +} +public function isStarted() +{ +return $this->storage->isStarted(); +} +public function getIterator() +{ +return new \ArrayIterator($this->storage->getBag($this->attributeName)->all()); +} +public function count() +{ +return count($this->storage->getBag($this->attributeName)->all()); +} +public function invalidate($lifetime = null) +{ +$this->storage->clear(); +return $this->migrate(true, $lifetime); +} +public function migrate($destroy = false, $lifetime = null) +{ +return $this->storage->regenerate($destroy, $lifetime); +} +public function save() +{ +$this->storage->save(); +} +public function getId() +{ +return $this->storage->getId(); +} +public function setId($id) +{ +$this->storage->setId($id); +} +public function getName() +{ +return $this->storage->getName(); +} +public function setName($name) +{ +$this->storage->setName($name); +} +public function getMetadataBag() +{ +return $this->storage->getMetadataBag(); +} +public function registerBag(SessionBagInterface $bag) +{ +$this->storage->registerBag($bag); +} +public function getBag($name) +{ +return $this->storage->getBag($name); +} +public function getFlashBag() +{ +return $this->getBag($this->flashName); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Session\Session; +class GlobalVariables +{ +protected $container; +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +public function getUser() +{ +if (!$this->container->has('security.token_storage')) { +return; +} +$tokenStorage = $this->container->get('security.token_storage'); +if (!$token = $tokenStorage->getToken()) { +return; +} +$user = $token->getUser(); +if (!is_object($user)) { +return; +} +return $user; +} +public function getRequest() +{ +if ($this->container->has('request_stack')) { +return $this->container->get('request_stack')->getCurrentRequest(); +} +} +public function getSession() +{ +if ($request = $this->getRequest()) { +return $request->getSession(); +} +} +public function getEnvironment() +{ +return $this->container->getParameter('kernel.environment'); +} +public function getDebug() +{ +return (bool) $this->container->getParameter('kernel.debug'); +} +} +} +namespace Symfony\Component\Templating +{ +interface TemplateReferenceInterface +{ +public function all(); +public function set($name, $value); +public function get($name); +public function getPath(); +public function getLogicalName(); +public function __toString(); +} +} +namespace Symfony\Component\Templating +{ +class TemplateReference implements TemplateReferenceInterface +{ +protected $parameters; +public function __construct($name = null, $engine = null) +{ +$this->parameters = array('name'=> $name,'engine'=> $engine, +); +} +public function __toString() +{ +return $this->getLogicalName(); +} +public function set($name, $value) +{ +if (array_key_exists($name, $this->parameters)) { +$this->parameters[$name] = $value; +} else { +throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name)); +} +return $this; +} +public function get($name) +{ +if (array_key_exists($name, $this->parameters)) { +return $this->parameters[$name]; +} +throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name)); +} +public function all() +{ +return $this->parameters; +} +public function getPath() +{ +return $this->parameters['name']; +} +public function getLogicalName() +{ +return $this->parameters['name']; +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating +{ +use Symfony\Component\Templating\TemplateReference as BaseTemplateReference; +class TemplateReference extends BaseTemplateReference +{ +public function __construct($bundle = null, $controller = null, $name = null, $format = null, $engine = null) +{ +$this->parameters = array('bundle'=> $bundle,'controller'=> $controller,'name'=> $name,'format'=> $format,'engine'=> $engine, +); +} +public function getPath() +{ +$controller = str_replace('\\','/', $this->get('controller')); +$path = (empty($controller) ?'': $controller.'/').$this->get('name').'.'.$this->get('format').'.'.$this->get('engine'); +return empty($this->parameters['bundle']) ?'views/'.$path :'@'.$this->get('bundle').'/Resources/views/'.$path; +} +public function getLogicalName() +{ +return sprintf('%s:%s:%s.%s.%s', $this->parameters['bundle'], $this->parameters['controller'], $this->parameters['name'], $this->parameters['format'], $this->parameters['engine']); +} +} +} +namespace Symfony\Component\Templating +{ +interface TemplateNameParserInterface +{ +public function parse($name); +} +} +namespace Symfony\Component\Templating +{ +class TemplateNameParser implements TemplateNameParserInterface +{ +public function parse($name) +{ +if ($name instanceof TemplateReferenceInterface) { +return $name; +} +$engine = null; +if (false !== $pos = strrpos($name,'.')) { +$engine = substr($name, $pos + 1); +} +return new TemplateReference($name, $engine); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating +{ +use Symfony\Component\Templating\TemplateReferenceInterface; +use Symfony\Component\HttpKernel\KernelInterface; +use Symfony\Component\Templating\TemplateNameParser as BaseTemplateNameParser; +class TemplateNameParser extends BaseTemplateNameParser +{ +protected $kernel; +protected $cache = array(); +public function __construct(KernelInterface $kernel) +{ +$this->kernel = $kernel; +} +public function parse($name) +{ +if ($name instanceof TemplateReferenceInterface) { +return $name; +} elseif (isset($this->cache[$name])) { +return $this->cache[$name]; +} +$name = str_replace(':/',':', preg_replace('#/{2,}#','/', str_replace('\\','/', $name))); +if (false !== strpos($name,'..')) { +throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name)); +} +if ($this->isAbsolutePath($name) || !preg_match('/^(?:([^:]*):([^:]*):)?(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches) || 0 === strpos($name,'@')) { +return parent::parse($name); +} +$template = new TemplateReference($matches[1], $matches[2], $matches[3], $matches[4], $matches[5]); +if ($template->get('bundle')) { +try { +$this->kernel->getBundle($template->get('bundle')); +} catch (\Exception $e) { +throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid.', $name), 0, $e); +} +} +return $this->cache[$name] = $template; +} +private function isAbsolutePath($file) +{ +$isAbsolute = (bool) preg_match('#^(?:/|[a-zA-Z]:)#', $file); +if ($isAbsolute) { +@trigger_error('Absolute template path support is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); +} +return $isAbsolute; +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Exception\FileLocatorFileNotFoundException; +interface FileLocatorInterface +{ +public function locate($name, $currentPath = null, $first = true); +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating\Loader +{ +use Symfony\Component\Config\FileLocatorInterface; +use Symfony\Component\Templating\TemplateReferenceInterface; +class TemplateLocator implements FileLocatorInterface +{ +protected $locator; +protected $cache; +private $cacheHits = array(); +public function __construct(FileLocatorInterface $locator, $cacheDir = null) +{ +if (null !== $cacheDir && file_exists($cache = $cacheDir.'/templates.php')) { +$this->cache = require $cache; +} +$this->locator = $locator; +} +protected function getCacheKey($template) +{ +return $template->getLogicalName(); +} +public function locate($template, $currentPath = null, $first = true) +{ +if (!$template instanceof TemplateReferenceInterface) { +throw new \InvalidArgumentException('The template must be an instance of TemplateReferenceInterface.'); +} +$key = $this->getCacheKey($template); +if (isset($this->cacheHits[$key])) { +return $this->cacheHits[$key]; +} +if (isset($this->cache[$key])) { +return $this->cacheHits[$key] = realpath($this->cache[$key]) ?: $this->cache[$key]; +} +try { +return $this->cacheHits[$key] = $this->locator->locate($template->getPath(), $currentPath); +} catch (\InvalidArgumentException $e) { +throw new \InvalidArgumentException(sprintf('Unable to find template "%s" : "%s".', $template, $e->getMessage()), 0, $e); +} +} +} +} +namespace Psr\Log +{ +interface LoggerAwareInterface +{ +public function setLogger(LoggerInterface $logger); +} +} +namespace Psr\Cache +{ +interface CacheItemPoolInterface +{ +public function getItem($key); +public function getItems(array $keys = array()); +public function hasItem($key); +public function clear(); +public function deleteItem($key); +public function deleteItems(array $keys); +public function save(CacheItemInterface $item); +public function saveDeferred(CacheItemInterface $item); +public function commit(); +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Psr\Cache\CacheItemPoolInterface; +use Symfony\Component\Cache\CacheItem; +interface AdapterInterface extends CacheItemPoolInterface +{ +public function getItem($key); +public function getItems(array $keys = array()); +} +} +namespace Psr\Log +{ +trait LoggerAwareTrait +{ +protected $logger; +public function setLogger(LoggerInterface $logger) +{ +$this->logger = $logger; +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Psr\Cache\CacheItemInterface; +use Psr\Log\LoggerAwareInterface; +use Psr\Log\LoggerAwareTrait; +use Psr\Log\LoggerInterface; +use Symfony\Component\Cache\CacheItem; +use Symfony\Component\Cache\Exception\InvalidArgumentException; +abstract class AbstractAdapter implements AdapterInterface, LoggerAwareInterface +{ +use LoggerAwareTrait; +private static $apcuSupported; +private static $phpFilesSupported; +private $namespace; +private $deferred = array(); +private $createCacheItem; +private $mergeByLifetime; +protected $maxIdLength; +protected function __construct($namespace ='', $defaultLifetime = 0) +{ +$this->namespace =''=== $namespace ?'': $this->getId($namespace).':'; +if (null !== $this->maxIdLength && strlen($namespace) > $this->maxIdLength - 24) { +throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s")', $this->maxIdLength - 24, strlen($namespace), $namespace)); +} +$this->createCacheItem = \Closure::bind( +function ($key, $value, $isHit) use ($defaultLifetime) { +$item = new CacheItem(); +$item->key = $key; +$item->value = $value; +$item->isHit = $isHit; +$item->defaultLifetime = $defaultLifetime; +return $item; +}, +null, +CacheItem::class +); +$this->mergeByLifetime = \Closure::bind( +function ($deferred, $namespace, &$expiredIds) { +$byLifetime = array(); +$now = time(); +$expiredIds = array(); +foreach ($deferred as $key => $item) { +if (null === $item->expiry) { +$byLifetime[0 < $item->defaultLifetime ? $item->defaultLifetime : 0][$namespace.$key] = $item->value; +} elseif ($item->expiry > $now) { +$byLifetime[$item->expiry - $now][$namespace.$key] = $item->value; +} else { +$expiredIds[] = $namespace.$key; +} +} +return $byLifetime; +}, +null, +CacheItem::class +); +} +public static function createSystemCache($namespace, $defaultLifetime, $version, $directory, LoggerInterface $logger = null) +{ +if (null === self::$apcuSupported) { +self::$apcuSupported = ApcuAdapter::isSupported(); +} +if (!self::$apcuSupported && null === self::$phpFilesSupported) { +self::$phpFilesSupported = PhpFilesAdapter::isSupported(); +} +if (self::$phpFilesSupported) { +$opcache = new PhpFilesAdapter($namespace, $defaultLifetime, $directory); +if (null !== $logger) { +$opcache->setLogger($logger); +} +return $opcache; +} +$fs = new FilesystemAdapter($namespace, $defaultLifetime, $directory); +if (null !== $logger) { +$fs->setLogger($logger); +} +if (!self::$apcuSupported) { +return $fs; +} +$apcu = new ApcuAdapter($namespace, (int) $defaultLifetime / 5, $version); +if (null !== $logger) { +$apcu->setLogger($logger); +} +return new ChainAdapter(array($apcu, $fs)); +} +abstract protected function doFetch(array $ids); +abstract protected function doHave($id); +abstract protected function doClear($namespace); +abstract protected function doDelete(array $ids); +abstract protected function doSave(array $values, $lifetime); +public function getItem($key) +{ +if ($this->deferred) { +$this->commit(); +} +$id = $this->getId($key); +$f = $this->createCacheItem; +$isHit = false; +$value = null; +try { +foreach ($this->doFetch(array($id)) as $value) { +$isHit = true; +} +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to fetch key "{key}"', array('key'=> $key,'exception'=> $e)); +} +return $f($key, $value, $isHit); +} +public function getItems(array $keys = array()) +{ +if ($this->deferred) { +$this->commit(); +} +$ids = array(); +foreach ($keys as $key) { +$ids[] = $this->getId($key); +} +try { +$items = $this->doFetch($ids); +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to fetch requested items', array('keys'=> $keys,'exception'=> $e)); +$items = array(); +} +$ids = array_combine($ids, $keys); +return $this->generateItems($items, $ids); +} +public function hasItem($key) +{ +$id = $this->getId($key); +if (isset($this->deferred[$key])) { +$this->commit(); +} +try { +return $this->doHave($id); +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to check if key "{key}" is cached', array('key'=> $key,'exception'=> $e)); +return false; +} +} +public function clear() +{ +$this->deferred = array(); +try { +return $this->doClear($this->namespace); +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to clear the cache', array('exception'=> $e)); +return false; +} +} +public function deleteItem($key) +{ +return $this->deleteItems(array($key)); +} +public function deleteItems(array $keys) +{ +$ids = array(); +foreach ($keys as $key) { +$ids[$key] = $this->getId($key); +unset($this->deferred[$key]); +} +try { +if ($this->doDelete($ids)) { +return true; +} +} catch (\Exception $e) { +} +$ok = true; +foreach ($ids as $key => $id) { +try { +$e = null; +if ($this->doDelete(array($id))) { +continue; +} +} catch (\Exception $e) { +} +CacheItem::log($this->logger,'Failed to delete key "{key}"', array('key'=> $key,'exception'=> $e)); +$ok = false; +} +return $ok; +} +public function save(CacheItemInterface $item) +{ +if (!$item instanceof CacheItem) { +return false; +} +$this->deferred[$item->getKey()] = $item; +return $this->commit(); +} +public function saveDeferred(CacheItemInterface $item) +{ +if (!$item instanceof CacheItem) { +return false; +} +$this->deferred[$item->getKey()] = $item; +return true; +} +public function commit() +{ +$ok = true; +$byLifetime = $this->mergeByLifetime; +$byLifetime = $byLifetime($this->deferred, $this->namespace, $expiredIds); +$retry = $this->deferred = array(); +if ($expiredIds) { +$this->doDelete($expiredIds); +} +foreach ($byLifetime as $lifetime => $values) { +try { +$e = $this->doSave($values, $lifetime); +} catch (\Exception $e) { +} +if (true === $e || array() === $e) { +continue; +} +if (is_array($e) || 1 === count($values)) { +foreach (is_array($e) ? $e : array_keys($values) as $id) { +$ok = false; +$v = $values[$id]; +$type = is_object($v) ? get_class($v) : gettype($v); +CacheItem::log($this->logger,'Failed to save key "{key}" ({type})', array('key'=> substr($id, strlen($this->namespace)),'type'=> $type,'exception'=> $e instanceof \Exception ? $e : null)); +} +} else { +foreach ($values as $id => $v) { +$retry[$lifetime][] = $id; +} +} +} +foreach ($retry as $lifetime => $ids) { +foreach ($ids as $id) { +try { +$v = $byLifetime[$lifetime][$id]; +$e = $this->doSave(array($id => $v), $lifetime); +} catch (\Exception $e) { +} +if (true === $e || array() === $e) { +continue; +} +$ok = false; +$type = is_object($v) ? get_class($v) : gettype($v); +CacheItem::log($this->logger,'Failed to save key "{key}" ({type})', array('key'=> substr($id, strlen($this->namespace)),'type'=> $type,'exception'=> $e instanceof \Exception ? $e : null)); +} +} +return $ok; +} +public function __destruct() +{ +if ($this->deferred) { +$this->commit(); +} +} +protected static function unserialize($value) +{ +if ('b:0;'=== $value) { +return false; +} +$unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback'); +try { +if (false !== $value = unserialize($value)) { +return $value; +} +throw new \DomainException('Failed to unserialize cached value'); +} catch (\Error $e) { +throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine()); +} finally { +ini_set('unserialize_callback_func', $unserializeCallbackHandler); +} +} +private function getId($key) +{ +CacheItem::validateKey($key); +if (null === $this->maxIdLength) { +return $this->namespace.$key; +} +if (strlen($id = $this->namespace.$key) > $this->maxIdLength) { +$id = $this->namespace.substr_replace(base64_encode(hash('sha256', $key, true)),':', -22); +} +return $id; +} +private function generateItems($items, &$keys) +{ +$f = $this->createCacheItem; +try { +foreach ($items as $id => $value) { +$key = $keys[$id]; +unset($keys[$id]); +yield $key => $f($key, $value, true); +} +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to fetch requested items', array('keys'=> array_values($keys),'exception'=> $e)); +} +foreach ($keys as $key) { +yield $key => $f($key, null, false); +} +} +public static function handleUnserializeCallback($class) +{ +throw new \DomainException('Class not found: '.$class); +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Symfony\Component\Cache\CacheItem; +use Symfony\Component\Cache\Exception\CacheException; +class ApcuAdapter extends AbstractAdapter +{ +public static function isSupported() +{ +return function_exists('apcu_fetch') && ini_get('apc.enabled') && !('cli'=== PHP_SAPI && !ini_get('apc.enable_cli')); +} +public function __construct($namespace ='', $defaultLifetime = 0, $version = null) +{ +if (!static::isSupported()) { +throw new CacheException('APCu is not enabled'); +} +if ('cli'=== PHP_SAPI) { +ini_set('apc.use_request_time', 0); +} +parent::__construct($namespace, $defaultLifetime); +if (null !== $version) { +CacheItem::validateKey($version); +if (!apcu_exists($version.'@'.$namespace)) { +$this->doClear($namespace); +apcu_add($version.'@'.$namespace, null); +} +} +} +protected function doFetch(array $ids) +{ +try { +return apcu_fetch($ids); +} catch (\Error $e) { +throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine()); +} +} +protected function doHave($id) +{ +return apcu_exists($id); +} +protected function doClear($namespace) +{ +return isset($namespace[0]) && class_exists('APCuIterator', false) +? apcu_delete(new \APCuIterator(sprintf('/^%s/', preg_quote($namespace,'/')), APC_ITER_KEY)) +: apcu_clear_cache(); +} +protected function doDelete(array $ids) +{ +foreach ($ids as $id) { +apcu_delete($id); +} +return true; +} +protected function doSave(array $values, $lifetime) +{ +try { +return array_keys(apcu_store($values, null, $lifetime)); +} catch (\Error $e) { +} catch (\Exception $e) { +} +if (1 === count($values)) { +apcu_delete(key($values)); +} +throw $e; +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Symfony\Component\Cache\Exception\InvalidArgumentException; +trait FilesystemAdapterTrait +{ +private $directory; +private $tmp; +private function init($namespace, $directory) +{ +if (!isset($directory[0])) { +$directory = sys_get_temp_dir().'/symfony-cache'; +} +if (isset($namespace[0])) { +if (preg_match('#[^-+_.A-Za-z0-9]#', $namespace, $match)) { +throw new InvalidArgumentException(sprintf('Namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0])); +} +$directory .='/'.$namespace; +} +if (!file_exists($dir = $directory.'/.')) { +@mkdir($directory, 0777, true); +} +if (false === $dir = realpath($dir) ?: (file_exists($dir) ? $dir : false)) { +throw new InvalidArgumentException(sprintf('Cache directory does not exist (%s)', $directory)); +} +$dir .= DIRECTORY_SEPARATOR; +if ('\\'=== DIRECTORY_SEPARATOR && strlen($dir) > 234) { +throw new InvalidArgumentException(sprintf('Cache directory too long (%s)', $directory)); +} +$this->directory = $dir; +$this->tmp = $this->directory.uniqid('', true); +} +protected function doClear($namespace) +{ +$ok = true; +foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory, \FilesystemIterator::SKIP_DOTS)) as $file) { +$ok = ($file->isDir() || @unlink($file) || !file_exists($file)) && $ok; +} +return $ok; +} +protected function doDelete(array $ids) +{ +$ok = true; +foreach ($ids as $id) { +$file = $this->getFile($id); +$ok = (!file_exists($file) || @unlink($file) || !file_exists($file)) && $ok; +} +return $ok; +} +private function write($file, $data, $expiresAt = null) +{ +if (false === @file_put_contents($this->tmp, $data)) { +return false; +} +if (null !== $expiresAt) { +@touch($this->tmp, $expiresAt); +} +if (@rename($this->tmp, $file)) { +return true; +} +@unlink($this->tmp); +return false; +} +private function getFile($id, $mkdir = false) +{ +$hash = str_replace('/','-', base64_encode(hash('sha256', static::class.$id, true))); +$dir = $this->directory.strtoupper($hash[0].DIRECTORY_SEPARATOR.$hash[1].DIRECTORY_SEPARATOR); +if ($mkdir && !file_exists($dir)) { +@mkdir($dir, 0777, true); +} +return $dir.substr($hash, 2, 20); +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Symfony\Component\Cache\Exception\CacheException; +class FilesystemAdapter extends AbstractAdapter +{ +use FilesystemAdapterTrait; +public function __construct($namespace ='', $defaultLifetime = 0, $directory = null) +{ +parent::__construct('', $defaultLifetime); +$this->init($namespace, $directory); +} +protected function doFetch(array $ids) +{ +$values = array(); +$now = time(); +foreach ($ids as $id) { +$file = $this->getFile($id); +if (!file_exists($file) || !$h = @fopen($file,'rb')) { +continue; +} +if ($now >= (int) $expiresAt = fgets($h)) { +fclose($h); +if (isset($expiresAt[0])) { +@unlink($file); +} +} else { +$i = rawurldecode(rtrim(fgets($h))); +$value = stream_get_contents($h); +fclose($h); +if ($i === $id) { +$values[$id] = parent::unserialize($value); +} +} +} +return $values; +} +protected function doHave($id) +{ +$file = $this->getFile($id); +return file_exists($file) && (@filemtime($file) > time() || $this->doFetch(array($id))); +} +protected function doSave(array $values, $lifetime) +{ +$ok = true; +$expiresAt = time() + ($lifetime ?: 31557600); +foreach ($values as $id => $value) { +$ok = $this->write($this->getFile($id, true), $expiresAt."\n".rawurlencode($id)."\n".serialize($value), $expiresAt) && $ok; +} +if (!$ok && !is_writable($this->directory)) { +throw new CacheException(sprintf('Cache directory is not writable (%s)', $this->directory)); +} +return $ok; +} +} +} +namespace Psr\Cache +{ +interface CacheItemInterface +{ +public function getKey(); +public function get(); +public function isHit(); +public function set($value); +public function expiresAt($expiration); +public function expiresAfter($time); +} +} +namespace Symfony\Component\Cache +{ +use Psr\Cache\CacheItemInterface; +use Psr\Log\LoggerInterface; +use Symfony\Component\Cache\Exception\InvalidArgumentException; +final class CacheItem implements CacheItemInterface +{ +protected $key; +protected $value; +protected $isHit; +protected $expiry; +protected $defaultLifetime; +protected $tags = array(); +protected $innerItem; +protected $poolHash; +public function getKey() +{ +return $this->key; +} +public function get() +{ +return $this->value; +} +public function isHit() +{ +return $this->isHit; +} +public function set($value) +{ +$this->value = $value; +return $this; +} +public function expiresAt($expiration) +{ +if (null === $expiration) { +$this->expiry = $this->defaultLifetime > 0 ? time() + $this->defaultLifetime : null; +} elseif ($expiration instanceof \DateTimeInterface) { +$this->expiry = (int) $expiration->format('U'); +} else { +throw new InvalidArgumentException(sprintf('Expiration date must implement DateTimeInterface or be null, "%s" given', is_object($expiration) ? get_class($expiration) : gettype($expiration))); +} +return $this; +} +public function expiresAfter($time) +{ +if (null === $time) { +$this->expiry = $this->defaultLifetime > 0 ? time() + $this->defaultLifetime : null; +} elseif ($time instanceof \DateInterval) { +$this->expiry = (int) \DateTime::createFromFormat('U', time())->add($time)->format('U'); +} elseif (is_int($time)) { +$this->expiry = $time + time(); +} else { +throw new InvalidArgumentException(sprintf('Expiration date must be an integer, a DateInterval or null, "%s" given', is_object($time) ? get_class($time) : gettype($time))); +} +return $this; +} +public function tag($tags) +{ +if (!is_array($tags)) { +$tags = array($tags); +} +foreach ($tags as $tag) { +if (!is_string($tag)) { +throw new InvalidArgumentException(sprintf('Cache tag must be string, "%s" given', is_object($tag) ? get_class($tag) : gettype($tag))); +} +if (isset($this->tags[$tag])) { +continue; +} +if (!isset($tag[0])) { +throw new InvalidArgumentException('Cache tag length must be greater than zero'); +} +if (false !== strpbrk($tag,'{}()/\@:')) { +throw new InvalidArgumentException(sprintf('Cache tag "%s" contains reserved characters {}()/\@:', $tag)); +} +$this->tags[$tag] = $tag; +} +return $this; +} +public static function validateKey($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given', is_object($key) ? get_class($key) : gettype($key))); +} +if (!isset($key[0])) { +throw new InvalidArgumentException('Cache key length must be greater than zero'); +} +if (false !== strpbrk($key,'{}()/\@:')) { +throw new InvalidArgumentException(sprintf('Cache key "%s" contains reserved characters {}()/\@:', $key)); +} +} +public static function log(LoggerInterface $logger = null, $message, $context = array()) +{ +if ($logger) { +$logger->warning($message, $context); +} else { +$replace = array(); +foreach ($context as $k => $v) { +if (is_scalar($v)) { +$replace['{'.$k.'}'] = $v; +} +} +@trigger_error(strtr($message, $replace), E_USER_WARNING); +} +} +} +} +namespace Symfony\Component\Routing +{ +interface RequestContextAwareInterface +{ +public function setContext(RequestContext $context); +public function getContext(); +} +} +namespace Symfony\Component\Routing\Generator +{ +use Symfony\Component\Routing\Exception\InvalidParameterException; +use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; +use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\RequestContextAwareInterface; +interface UrlGeneratorInterface extends RequestContextAwareInterface +{ +const ABSOLUTE_URL = 0; +const ABSOLUTE_PATH = 1; +const RELATIVE_PATH = 2; +const NETWORK_PATH = 3; +public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH); +} +} +namespace Symfony\Component\Routing\Generator +{ +interface ConfigurableRequirementsInterface +{ +public function setStrictRequirements($enabled); +public function isStrictRequirements(); +} +} +namespace Symfony\Component\Routing\Generator +{ +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\Exception\InvalidParameterException; +use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; +use Psr\Log\LoggerInterface; +class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInterface +{ +protected $routes; +protected $context; +protected $strictRequirements = true; +protected $logger; +protected $decodedChars = array('%2F'=>'/','%40'=>'@','%3A'=>':','%3B'=>';','%2C'=>',','%3D'=>'=','%2B'=>'+','%21'=>'!','%2A'=>'*','%7C'=>'|', +); +public function __construct(RouteCollection $routes, RequestContext $context, LoggerInterface $logger = null) +{ +$this->routes = $routes; +$this->context = $context; +$this->logger = $logger; +} +public function setContext(RequestContext $context) +{ +$this->context = $context; +} +public function getContext() +{ +return $this->context; +} +public function setStrictRequirements($enabled) +{ +$this->strictRequirements = null === $enabled ? null : (bool) $enabled; +} +public function isStrictRequirements() +{ +return $this->strictRequirements; +} +public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) +{ +if (null === $route = $this->routes->get($name)) { +throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); +} +$compiledRoute = $route->compile(); +return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes()); +} +protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = array()) +{ +$variables = array_flip($variables); +$mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters); +if ($diff = array_diff_key($variables, $mergedParams)) { +throw new MissingMandatoryParametersException(sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "', array_keys($diff)), $name)); +} +$url =''; +$optional = true; +$message ='Parameter "{parameter}" for route "{route}" must match "{expected}" ("{given}" given) to generate a corresponding URL.'; +foreach ($tokens as $token) { +if ('variable'=== $token[0]) { +if (!$optional || !array_key_exists($token[3], $defaults) || null !== $mergedParams[$token[3]] && (string) $mergedParams[$token[3]] !== (string) $defaults[$token[3]]) { +if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#'.(empty($token[4]) ?'':'u'), $mergedParams[$token[3]])) { +if ($this->strictRequirements) { +throw new InvalidParameterException(strtr($message, array('{parameter}'=> $token[3],'{route}'=> $name,'{expected}'=> $token[2],'{given}'=> $mergedParams[$token[3]]))); +} +if ($this->logger) { +$this->logger->error($message, array('parameter'=> $token[3],'route'=> $name,'expected'=> $token[2],'given'=> $mergedParams[$token[3]])); +} +return; +} +$url = $token[1].$mergedParams[$token[3]].$url; +$optional = false; +} +} else { +$url = $token[1].$url; +$optional = false; +} +} +if (''=== $url) { +$url ='/'; +} +$url = strtr(rawurlencode($url), $this->decodedChars); +$url = strtr($url, array('/../'=>'/%2E%2E/','/./'=>'/%2E/')); +if ('/..'=== substr($url, -3)) { +$url = substr($url, 0, -2).'%2E%2E'; +} elseif ('/.'=== substr($url, -2)) { +$url = substr($url, 0, -1).'%2E'; +} +$schemeAuthority =''; +if ($host = $this->context->getHost()) { +$scheme = $this->context->getScheme(); +if ($requiredSchemes) { +if (!in_array($scheme, $requiredSchemes, true)) { +$referenceType = self::ABSOLUTE_URL; +$scheme = current($requiredSchemes); +} +} +if ($hostTokens) { +$routeHost =''; +foreach ($hostTokens as $token) { +if ('variable'=== $token[0]) { +if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#i'.(empty($token[4]) ?'':'u'), $mergedParams[$token[3]])) { +if ($this->strictRequirements) { +throw new InvalidParameterException(strtr($message, array('{parameter}'=> $token[3],'{route}'=> $name,'{expected}'=> $token[2],'{given}'=> $mergedParams[$token[3]]))); +} +if ($this->logger) { +$this->logger->error($message, array('parameter'=> $token[3],'route'=> $name,'expected'=> $token[2],'given'=> $mergedParams[$token[3]])); +} +return; +} +$routeHost = $token[1].$mergedParams[$token[3]].$routeHost; +} else { +$routeHost = $token[1].$routeHost; +} +} +if ($routeHost !== $host) { +$host = $routeHost; +if (self::ABSOLUTE_URL !== $referenceType) { +$referenceType = self::NETWORK_PATH; +} +} +} +if (self::ABSOLUTE_URL === $referenceType || self::NETWORK_PATH === $referenceType) { +$port =''; +if ('http'=== $scheme && 80 != $this->context->getHttpPort()) { +$port =':'.$this->context->getHttpPort(); +} elseif ('https'=== $scheme && 443 != $this->context->getHttpsPort()) { +$port =':'.$this->context->getHttpsPort(); +} +$schemeAuthority = self::NETWORK_PATH === $referenceType ?'//': "$scheme://"; +$schemeAuthority .= $host.$port; +} +} +if (self::RELATIVE_PATH === $referenceType) { +$url = self::getRelativePath($this->context->getPathInfo(), $url); +} else { +$url = $schemeAuthority.$this->context->getBaseUrl().$url; +} +$extra = array_udiff_assoc(array_diff_key($parameters, $variables), $defaults, function ($a, $b) { +return $a == $b ? 0 : 1; +}); +$fragment =''; +if (isset($defaults['_fragment'])) { +$fragment = $defaults['_fragment']; +} +if (isset($extra['_fragment'])) { +$fragment = $extra['_fragment']; +unset($extra['_fragment']); +} +if ($extra && $query = http_build_query($extra,'','&', PHP_QUERY_RFC3986)) { +$url .='?'.strtr($query, array('%2F'=>'/')); +} +if (''!== $fragment) { +$url .='#'.strtr(rawurlencode($fragment), array('%2F'=>'/','%3F'=>'?')); +} +return $url; +} +public static function getRelativePath($basePath, $targetPath) +{ +if ($basePath === $targetPath) { +return''; +} +$sourceDirs = explode('/', isset($basePath[0]) &&'/'=== $basePath[0] ? substr($basePath, 1) : $basePath); +$targetDirs = explode('/', isset($targetPath[0]) &&'/'=== $targetPath[0] ? substr($targetPath, 1) : $targetPath); +array_pop($sourceDirs); +$targetFile = array_pop($targetDirs); +foreach ($sourceDirs as $i => $dir) { +if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) { +unset($sourceDirs[$i], $targetDirs[$i]); +} else { +break; +} +} +$targetDirs[] = $targetFile; +$path = str_repeat('../', count($sourceDirs)).implode('/', $targetDirs); +return''=== $path ||'/'=== $path[0] +|| false !== ($colonPos = strpos($path,':')) && ($colonPos < ($slashPos = strpos($path,'/')) || false === $slashPos) +? "./$path" : $path; +} +} +} +namespace Symfony\Component\Routing +{ +use Symfony\Component\HttpFoundation\Request; +class RequestContext +{ +private $baseUrl; +private $pathInfo; +private $method; +private $host; +private $scheme; +private $httpPort; +private $httpsPort; +private $queryString; +private $parameters = array(); +public function __construct($baseUrl ='', $method ='GET', $host ='localhost', $scheme ='http', $httpPort = 80, $httpsPort = 443, $path ='/', $queryString ='') +{ +$this->setBaseUrl($baseUrl); +$this->setMethod($method); +$this->setHost($host); +$this->setScheme($scheme); +$this->setHttpPort($httpPort); +$this->setHttpsPort($httpsPort); +$this->setPathInfo($path); +$this->setQueryString($queryString); +} +public function fromRequest(Request $request) +{ +$this->setBaseUrl($request->getBaseUrl()); +$this->setPathInfo($request->getPathInfo()); +$this->setMethod($request->getMethod()); +$this->setHost($request->getHost()); +$this->setScheme($request->getScheme()); +$this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort()); +$this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort); +$this->setQueryString($request->server->get('QUERY_STRING','')); +return $this; +} +public function getBaseUrl() +{ +return $this->baseUrl; +} +public function setBaseUrl($baseUrl) +{ +$this->baseUrl = $baseUrl; +return $this; +} +public function getPathInfo() +{ +return $this->pathInfo; +} +public function setPathInfo($pathInfo) +{ +$this->pathInfo = $pathInfo; +return $this; +} +public function getMethod() +{ +return $this->method; +} +public function setMethod($method) +{ +$this->method = strtoupper($method); +return $this; +} +public function getHost() +{ +return $this->host; +} +public function setHost($host) +{ +$this->host = strtolower($host); +return $this; +} +public function getScheme() +{ +return $this->scheme; +} +public function setScheme($scheme) +{ +$this->scheme = strtolower($scheme); +return $this; +} +public function getHttpPort() +{ +return $this->httpPort; +} +public function setHttpPort($httpPort) +{ +$this->httpPort = (int) $httpPort; +return $this; +} +public function getHttpsPort() +{ +return $this->httpsPort; +} +public function setHttpsPort($httpsPort) +{ +$this->httpsPort = (int) $httpsPort; +return $this; +} +public function getQueryString() +{ +return $this->queryString; +} +public function setQueryString($queryString) +{ +$this->queryString = (string) $queryString; +return $this; +} +public function getParameters() +{ +return $this->parameters; +} +public function setParameters(array $parameters) +{ +$this->parameters = $parameters; +return $this; +} +public function getParameter($name) +{ +return isset($this->parameters[$name]) ? $this->parameters[$name] : null; +} +public function hasParameter($name) +{ +return array_key_exists($name, $this->parameters); +} +public function setParameter($name, $parameter) +{ +$this->parameters[$name] = $parameter; +return $this; +} +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\Routing\RequestContextAwareInterface; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +interface UrlMatcherInterface extends RequestContextAwareInterface +{ +public function match($pathinfo); +} +} +namespace Symfony\Component\Routing +{ +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Routing\Matcher\UrlMatcherInterface; +interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface +{ +public function getRouteCollection(); +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +interface RequestMatcherInterface +{ +public function matchRequest(Request $request); +} +} +namespace Symfony\Component\Routing +{ +use Symfony\Component\Config\Loader\LoaderInterface; +use Symfony\Component\Config\ConfigCacheInterface; +use Symfony\Component\Config\ConfigCacheFactoryInterface; +use Symfony\Component\Config\ConfigCacheFactory; +use Psr\Log\LoggerInterface; +use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface; +use Symfony\Component\Routing\Matcher\RequestMatcherInterface; +use Symfony\Component\Routing\Matcher\UrlMatcherInterface; +use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; +class Router implements RouterInterface, RequestMatcherInterface +{ +protected $matcher; +protected $generator; +protected $context; +protected $loader; +protected $collection; +protected $resource; +protected $options = array(); +protected $logger; +private $configCacheFactory; +private $expressionLanguageProviders = array(); +public function __construct(LoaderInterface $loader, $resource, array $options = array(), RequestContext $context = null, LoggerInterface $logger = null) +{ +$this->loader = $loader; +$this->resource = $resource; +$this->logger = $logger; +$this->context = $context ?: new RequestContext(); +$this->setOptions($options); +} +public function setOptions(array $options) +{ +$this->options = array('cache_dir'=> null,'debug'=> false,'generator_class'=>'Symfony\\Component\\Routing\\Generator\\UrlGenerator','generator_base_class'=>'Symfony\\Component\\Routing\\Generator\\UrlGenerator','generator_dumper_class'=>'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper','generator_cache_class'=>'ProjectUrlGenerator','matcher_class'=>'Symfony\\Component\\Routing\\Matcher\\UrlMatcher','matcher_base_class'=>'Symfony\\Component\\Routing\\Matcher\\UrlMatcher','matcher_dumper_class'=>'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper','matcher_cache_class'=>'ProjectUrlMatcher','resource_type'=> null,'strict_requirements'=> true, +); +$invalid = array(); +foreach ($options as $key => $value) { +if (array_key_exists($key, $this->options)) { +$this->options[$key] = $value; +} else { +$invalid[] = $key; +} +} +if ($invalid) { +throw new \InvalidArgumentException(sprintf('The Router does not support the following options: "%s".', implode('", "', $invalid))); +} +} +public function setOption($key, $value) +{ +if (!array_key_exists($key, $this->options)) { +throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); +} +$this->options[$key] = $value; +} +public function getOption($key) +{ +if (!array_key_exists($key, $this->options)) { +throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); +} +return $this->options[$key]; +} +public function getRouteCollection() +{ +if (null === $this->collection) { +$this->collection = $this->loader->load($this->resource, $this->options['resource_type']); +} +return $this->collection; +} +public function setContext(RequestContext $context) +{ +$this->context = $context; +if (null !== $this->matcher) { +$this->getMatcher()->setContext($context); +} +if (null !== $this->generator) { +$this->getGenerator()->setContext($context); +} +} +public function getContext() +{ +return $this->context; +} +public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory) +{ +$this->configCacheFactory = $configCacheFactory; +} +public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) +{ +return $this->getGenerator()->generate($name, $parameters, $referenceType); +} +public function match($pathinfo) +{ +return $this->getMatcher()->match($pathinfo); +} +public function matchRequest(Request $request) +{ +$matcher = $this->getMatcher(); +if (!$matcher instanceof RequestMatcherInterface) { +return $matcher->match($request->getPathInfo()); +} +return $matcher->matchRequest($request); +} +public function getMatcher() +{ +if (null !== $this->matcher) { +return $this->matcher; +} +if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) { +$this->matcher = new $this->options['matcher_class']($this->getRouteCollection(), $this->context); +if (method_exists($this->matcher,'addExpressionLanguageProvider')) { +foreach ($this->expressionLanguageProviders as $provider) { +$this->matcher->addExpressionLanguageProvider($provider); +} +} +return $this->matcher; +} +$cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['matcher_cache_class'].'.php', +function (ConfigCacheInterface $cache) { +$dumper = $this->getMatcherDumperInstance(); +if (method_exists($dumper,'addExpressionLanguageProvider')) { +foreach ($this->expressionLanguageProviders as $provider) { +$dumper->addExpressionLanguageProvider($provider); +} +} +$options = array('class'=> $this->options['matcher_cache_class'],'base_class'=> $this->options['matcher_base_class'], +); +$cache->write($dumper->dump($options), $this->getRouteCollection()->getResources()); +} +); +require_once $cache->getPath(); +return $this->matcher = new $this->options['matcher_cache_class']($this->context); +} +public function getGenerator() +{ +if (null !== $this->generator) { +return $this->generator; +} +if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) { +$this->generator = new $this->options['generator_class']($this->getRouteCollection(), $this->context, $this->logger); +} else { +$cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['generator_cache_class'].'.php', +function (ConfigCacheInterface $cache) { +$dumper = $this->getGeneratorDumperInstance(); +$options = array('class'=> $this->options['generator_cache_class'],'base_class'=> $this->options['generator_base_class'], +); +$cache->write($dumper->dump($options), $this->getRouteCollection()->getResources()); +} +); +require_once $cache->getPath(); +$this->generator = new $this->options['generator_cache_class']($this->context, $this->logger); +} +if ($this->generator instanceof ConfigurableRequirementsInterface) { +$this->generator->setStrictRequirements($this->options['strict_requirements']); +} +return $this->generator; +} +public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) +{ +$this->expressionLanguageProviders[] = $provider; +} +protected function getGeneratorDumperInstance() +{ +return new $this->options['generator_dumper_class']($this->getRouteCollection()); +} +protected function getMatcherDumperInstance() +{ +return new $this->options['matcher_dumper_class']($this->getRouteCollection()); +} +private function getConfigCacheFactory() +{ +if (null === $this->configCacheFactory) { +$this->configCacheFactory = new ConfigCacheFactory($this->options['debug']); +} +return $this->configCacheFactory; +} +} +} +namespace Symfony\Component\Routing\Matcher +{ +interface RedirectableUrlMatcherInterface +{ +public function redirect($path, $route, $scheme = null); +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\Route; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\ExpressionLanguage\ExpressionLanguage; +use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; +class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface +{ +const REQUIREMENT_MATCH = 0; +const REQUIREMENT_MISMATCH = 1; +const ROUTE_MATCH = 2; +protected $context; +protected $allow = array(); +protected $routes; +protected $request; +protected $expressionLanguage; +protected $expressionLanguageProviders = array(); +public function __construct(RouteCollection $routes, RequestContext $context) +{ +$this->routes = $routes; +$this->context = $context; +} +public function setContext(RequestContext $context) +{ +$this->context = $context; +} +public function getContext() +{ +return $this->context; +} +public function match($pathinfo) +{ +$this->allow = array(); +if ($ret = $this->matchCollection(rawurldecode($pathinfo), $this->routes)) { +return $ret; +} +throw 0 < count($this->allow) +? new MethodNotAllowedException(array_unique($this->allow)) +: new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo)); +} +public function matchRequest(Request $request) +{ +$this->request = $request; +$ret = $this->match($request->getPathInfo()); +$this->request = null; +return $ret; +} +public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) +{ +$this->expressionLanguageProviders[] = $provider; +} +protected function matchCollection($pathinfo, RouteCollection $routes) +{ +foreach ($routes as $name => $route) { +$compiledRoute = $route->compile(); +if (''!== $compiledRoute->getStaticPrefix() && 0 !== strpos($pathinfo, $compiledRoute->getStaticPrefix())) { +continue; +} +if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) { +continue; +} +$hostMatches = array(); +if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) { +continue; +} +if ($requiredMethods = $route->getMethods()) { +if ('HEAD'=== $method = $this->context->getMethod()) { +$method ='GET'; +} +if (!in_array($method, $requiredMethods)) { +$this->allow = array_merge($this->allow, $requiredMethods); +continue; +} +} +$status = $this->handleRouteRequirements($pathinfo, $name, $route); +if (self::ROUTE_MATCH === $status[0]) { +return $status[1]; +} +if (self::REQUIREMENT_MISMATCH === $status[0]) { +continue; +} +return $this->getAttributes($route, $name, array_replace($matches, $hostMatches)); +} +} +protected function getAttributes(Route $route, $name, array $attributes) +{ +$attributes['_route'] = $name; +return $this->mergeDefaults($attributes, $route->getDefaults()); +} +protected function handleRouteRequirements($pathinfo, $name, Route $route) +{ +if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context'=> $this->context,'request'=> $this->request))) { +return array(self::REQUIREMENT_MISMATCH, null); +} +$scheme = $this->context->getScheme(); +$status = $route->getSchemes() && !$route->hasScheme($scheme) ? self::REQUIREMENT_MISMATCH : self::REQUIREMENT_MATCH; +return array($status, null); +} +protected function mergeDefaults($params, $defaults) +{ +foreach ($params as $key => $value) { +if (!is_int($key)) { +$defaults[$key] = $value; +} +} +return $defaults; +} +protected function getExpressionLanguage() +{ +if (null === $this->expressionLanguage) { +if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { +throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); +} +$this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders); +} +return $this->expressionLanguage; +} +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Route; +abstract class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface +{ +public function match($pathinfo) +{ +try { +$parameters = parent::match($pathinfo); +} catch (ResourceNotFoundException $e) { +if ('/'=== substr($pathinfo, -1) || !in_array($this->context->getMethod(), array('HEAD','GET'))) { +throw $e; +} +try { +parent::match($pathinfo.'/'); +return $this->redirect($pathinfo.'/', null); +} catch (ResourceNotFoundException $e2) { +throw $e; +} +} +return $parameters; +} +protected function handleRouteRequirements($pathinfo, $name, Route $route) +{ +if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context'=> $this->context,'request'=> $this->request))) { +return array(self::REQUIREMENT_MISMATCH, null); +} +$scheme = $this->context->getScheme(); +$schemes = $route->getSchemes(); +if ($schemes && !$route->hasScheme($scheme)) { +return array(self::ROUTE_MATCH, $this->redirect($pathinfo, $name, current($schemes))); +} +return array(self::REQUIREMENT_MATCH, null); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Routing +{ +use Symfony\Component\Routing\Matcher\RedirectableUrlMatcher as BaseMatcher; +class RedirectableUrlMatcher extends BaseMatcher +{ +public function redirect($path, $route, $scheme = null) +{ +return array('_controller'=>'Symfony\\Bundle\\FrameworkBundle\\Controller\\RedirectController::urlRedirectAction','path'=> $path,'permanent'=> true,'scheme'=> $scheme,'httpPort'=> $this->context->getHttpPort(),'httpsPort'=> $this->context->getHttpsPort(),'_route'=> $route, +); +} +} +} +namespace Symfony\Component\HttpKernel\CacheWarmer +{ +interface WarmableInterface +{ +public function warmUp($cacheDir); +} +} +namespace Symfony\Bundle\FrameworkBundle\Routing +{ +use Symfony\Component\Routing\Router as BaseRouter; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; +use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; +use Symfony\Component\DependencyInjection\Exception\RuntimeException; +class Router extends BaseRouter implements WarmableInterface +{ +private $container; +public function __construct(ContainerInterface $container, $resource, array $options = array(), RequestContext $context = null) +{ +$this->container = $container; +$this->resource = $resource; +$this->context = $context ?: new RequestContext(); +$this->setOptions($options); +} +public function getRouteCollection() +{ +if (null === $this->collection) { +$this->collection = $this->container->get('routing.loader')->load($this->resource, $this->options['resource_type']); +$this->resolveParameters($this->collection); +} +return $this->collection; +} +public function warmUp($cacheDir) +{ +$currentDir = $this->getOption('cache_dir'); +$this->setOption('cache_dir', $cacheDir); +$this->getMatcher(); +$this->getGenerator(); +$this->setOption('cache_dir', $currentDir); +} +private function resolveParameters(RouteCollection $collection) +{ +foreach ($collection as $route) { +foreach ($route->getDefaults() as $name => $value) { +$route->setDefault($name, $this->resolve($value)); +} +foreach ($route->getRequirements() as $name => $value) { +$route->setRequirement($name, $this->resolve($value)); +} +$route->setPath($this->resolve($route->getPath())); +$route->setHost($this->resolve($route->getHost())); +$schemes = array(); +foreach ($route->getSchemes() as $scheme) { +$schemes = array_merge($schemes, explode('|', $this->resolve($scheme))); +} +$route->setSchemes($schemes); +$methods = array(); +foreach ($route->getMethods() as $method) { +$methods = array_merge($methods, explode('|', $this->resolve($method))); +} +$route->setMethods($methods); +$route->setCondition($this->resolve($route->getCondition())); +} +} +private function resolve($value) +{ +if (is_array($value)) { +foreach ($value as $key => $val) { +$value[$key] = $this->resolve($val); +} +return $value; +} +if (!is_string($value)) { +return $value; +} +$container = $this->container; +$escapedValue = preg_replace_callback('/%%|%([^%\s]++)%/', function ($match) use ($container, $value) { +if (!isset($match[1])) { +return'%%'; +} +if (preg_match('/^env\(\w+\)$/', $match[1])) { +throw new RuntimeException(sprintf('Using "%%%s%%" is not allowed in routing configuration.', $match[1])); +} +$resolved = $container->getParameter($match[1]); +if (is_string($resolved) || is_numeric($resolved)) { +return (string) $resolved; +} +throw new RuntimeException(sprintf('The container parameter "%s", used in the route configuration value "%s", '.'must be a string or numeric, but it is of type %s.', +$match[1], +$value, +gettype($resolved) +) +); +}, $value); +return str_replace('%%','%', $escapedValue); +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Psr\Cache\CacheItemInterface; +use Psr\Cache\CacheItemPoolInterface; +use Symfony\Component\Cache\CacheItem; +use Symfony\Component\Cache\Exception\InvalidArgumentException; +class PhpArrayAdapter implements AdapterInterface +{ +private $file; +private $values; +private $createCacheItem; +private $fallbackPool; +public function __construct($file, AdapterInterface $fallbackPool) +{ +$this->file = $file; +$this->fallbackPool = $fallbackPool; +$this->createCacheItem = \Closure::bind( +function ($key, $value, $isHit) { +$item = new CacheItem(); +$item->key = $key; +$item->value = $value; +$item->isHit = $isHit; +return $item; +}, +null, +CacheItem::class +); +} +public static function create($file, CacheItemPoolInterface $fallbackPool) +{ +if ((PHP_VERSION_ID >= 70000 && ini_get('opcache.enable')) || defined('HHVM_VERSION')) { +if (!$fallbackPool instanceof AdapterInterface) { +$fallbackPool = new ProxyAdapter($fallbackPool); +} +return new static($file, $fallbackPool); +} +return $fallbackPool; +} +public function warmUp(array $values) +{ +if (file_exists($this->file)) { +if (!is_file($this->file)) { +throw new InvalidArgumentException(sprintf('Cache path exists and is not a file: %s.', $this->file)); +} +if (!is_writable($this->file)) { +throw new InvalidArgumentException(sprintf('Cache file is not writable: %s.', $this->file)); +} +} else { +$directory = dirname($this->file); +if (!is_dir($directory) && !@mkdir($directory, 0777, true)) { +throw new InvalidArgumentException(sprintf('Cache directory does not exist and cannot be created: %s.', $directory)); +} +if (!is_writable($directory)) { +throw new InvalidArgumentException(sprintf('Cache directory is not writable: %s.', $directory)); +} +} +$dump =<<<'EOF' + $value) { +CacheItem::validateKey(is_int($key) ? (string) $key : $key); +if (null === $value || is_object($value)) { +try { +$value = serialize($value); +} catch (\Exception $e) { +throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable %s value.', $key, get_class($value)), 0, $e); +} +} elseif (is_array($value)) { +try { +$serialized = serialize($value); +$unserialized = unserialize($serialized); +} catch (\Exception $e) { +throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable array value.', $key), 0, $e); +} +if ($unserialized !== $value || (false !== strpos($serialized,';R:') && preg_match('/;R:[1-9]/', $serialized))) { +$value = $serialized; +} +} elseif (is_string($value)) { +if ('N;'=== $value || (isset($value[2]) &&':'=== $value[1])) { +$value = serialize($value); +} +} elseif (!is_scalar($value)) { +throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable %s value.', $key, gettype($value))); +} +$dump .= var_export($key, true).' => '.var_export($value, true).",\n"; +} +$dump .="\n);\n"; +$dump = str_replace("' . \"\\0\" . '","\0", $dump); +$tmpFile = uniqid($this->file, true); +file_put_contents($tmpFile, $dump); +@chmod($tmpFile, 0666 & ~umask()); +unset($serialized, $unserialized, $value, $dump); +@rename($tmpFile, $this->file); +$this->values = (include $this->file) ?: array(); +} +public function getItem($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (null === $this->values) { +$this->initialize(); +} +if (!isset($this->values[$key])) { +return $this->fallbackPool->getItem($key); +} +$value = $this->values[$key]; +$isHit = true; +if ('N;'=== $value) { +$value = null; +} elseif (is_string($value) && isset($value[2]) &&':'=== $value[1]) { +try { +$e = null; +$value = unserialize($value); +} catch (\Error $e) { +} catch (\Exception $e) { +} +if (null !== $e) { +$value = null; +$isHit = false; +} +} +$f = $this->createCacheItem; +return $f($key, $value, $isHit); +} +public function getItems(array $keys = array()) +{ +foreach ($keys as $key) { +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +} +if (null === $this->values) { +$this->initialize(); +} +return $this->generateItems($keys); +} +public function hasItem($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (null === $this->values) { +$this->initialize(); +} +return isset($this->values[$key]) || $this->fallbackPool->hasItem($key); +} +public function clear() +{ +$this->values = array(); +$cleared = @unlink($this->file) || !file_exists($this->file); +return $this->fallbackPool->clear() && $cleared; +} +public function deleteItem($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (null === $this->values) { +$this->initialize(); +} +return !isset($this->values[$key]) && $this->fallbackPool->deleteItem($key); +} +public function deleteItems(array $keys) +{ +$deleted = true; +$fallbackKeys = array(); +foreach ($keys as $key) { +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (isset($this->values[$key])) { +$deleted = false; +} else { +$fallbackKeys[] = $key; +} +} +if (null === $this->values) { +$this->initialize(); +} +if ($fallbackKeys) { +$deleted = $this->fallbackPool->deleteItems($fallbackKeys) && $deleted; +} +return $deleted; +} +public function save(CacheItemInterface $item) +{ +if (null === $this->values) { +$this->initialize(); +} +return !isset($this->values[$item->getKey()]) && $this->fallbackPool->save($item); +} +public function saveDeferred(CacheItemInterface $item) +{ +if (null === $this->values) { +$this->initialize(); +} +return !isset($this->values[$item->getKey()]) && $this->fallbackPool->saveDeferred($item); +} +public function commit() +{ +return $this->fallbackPool->commit(); +} +private function initialize() +{ +$this->values = file_exists($this->file) ? (include $this->file ?: array()) : array(); +} +private function generateItems(array $keys) +{ +$f = $this->createCacheItem; +$fallbackKeys = array(); +foreach ($keys as $key) { +if (isset($this->values[$key])) { +$value = $this->values[$key]; +if ('N;'=== $value) { +yield $key => $f($key, null, true); +} elseif (is_string($value) && isset($value[2]) &&':'=== $value[1]) { +try { +yield $key => $f($key, unserialize($value), true); +} catch (\Error $e) { +yield $key => $f($key, null, false); +} catch (\Exception $e) { +yield $key => $f($key, null, false); +} +} else { +yield $key => $f($key, $value, true); +} +} else { +$fallbackKeys[] = $key; +} +} +if ($fallbackKeys) { +foreach ($this->fallbackPool->getItems($fallbackKeys) as $key => $item) { +yield $key => $item; +} +} +} +public static function throwOnRequiredClass($class) +{ +$e = new \ReflectionException("Class $class does not exist"); +$trace = $e->getTrace(); +$autoloadFrame = array('function'=>'spl_autoload_call','args'=> array($class), +); +$i = 1 + array_search($autoloadFrame, $trace, true); +if (isset($trace[$i]['function']) && !isset($trace[$i]['class'])) { +switch ($trace[$i]['function']) { +case'get_class_methods': +case'get_class_vars': +case'get_parent_class': +case'is_a': +case'is_subclass_of': +case'class_exists': +case'class_implements': +case'class_parents': +case'trait_exists': +case'defined': +case'interface_exists': +case'method_exists': +case'property_exists': +case'is_callable': +return; +} +} +throw $e; +} +} +} +namespace Doctrine\Common\Cache +{ +interface MultiPutCache +{ +function saveMultiple(array $keysAndValues, $lifetime = 0); +} +} +namespace Doctrine\Common\Cache +{ +interface MultiGetCache +{ +function fetchMultiple(array $keys); +} +} +namespace Doctrine\Common\Cache +{ +interface ClearableCache +{ +public function deleteAll(); +} +} +namespace Doctrine\Common\Cache +{ +interface FlushableCache +{ +public function flushAll(); +} +} +namespace Doctrine\Common\Cache +{ +interface Cache +{ +const STATS_HITS ='hits'; +const STATS_MISSES ='misses'; +const STATS_UPTIME ='uptime'; +const STATS_MEMORY_USAGE ='memory_usage'; +const STATS_MEMORY_AVAILABLE ='memory_available'; +const STATS_MEMORY_AVAILIABLE ='memory_available'; +public function fetch($id); +public function contains($id); +public function save($id, $data, $lifeTime = 0); +public function delete($id); +public function getStats(); +} +} +namespace Doctrine\Common\Cache +{ +abstract class CacheProvider implements Cache, FlushableCache, ClearableCache, MultiGetCache, MultiPutCache +{ +const DOCTRINE_NAMESPACE_CACHEKEY ='DoctrineNamespaceCacheKey[%s]'; +private $namespace =''; +private $namespaceVersion; +public function setNamespace($namespace) +{ +$this->namespace = (string) $namespace; +$this->namespaceVersion = null; +} +public function getNamespace() +{ +return $this->namespace; +} +public function fetch($id) +{ +return $this->doFetch($this->getNamespacedId($id)); +} +public function fetchMultiple(array $keys) +{ +if (empty($keys)) { +return array(); +} +$namespacedKeys = array_combine($keys, array_map(array($this,'getNamespacedId'), $keys)); +$items = $this->doFetchMultiple($namespacedKeys); +$foundItems = array(); +foreach ($namespacedKeys as $requestedKey => $namespacedKey) { +if (isset($items[$namespacedKey]) || array_key_exists($namespacedKey, $items)) { +$foundItems[$requestedKey] = $items[$namespacedKey]; +} +} +return $foundItems; +} +public function saveMultiple(array $keysAndValues, $lifetime = 0) +{ +$namespacedKeysAndValues = array(); +foreach ($keysAndValues as $key => $value) { +$namespacedKeysAndValues[$this->getNamespacedId($key)] = $value; +} +return $this->doSaveMultiple($namespacedKeysAndValues, $lifetime); +} +public function contains($id) +{ +return $this->doContains($this->getNamespacedId($id)); +} +public function save($id, $data, $lifeTime = 0) +{ +return $this->doSave($this->getNamespacedId($id), $data, $lifeTime); +} +public function delete($id) +{ +return $this->doDelete($this->getNamespacedId($id)); +} +public function getStats() +{ +return $this->doGetStats(); +} +public function flushAll() +{ +return $this->doFlush(); +} +public function deleteAll() +{ +$namespaceCacheKey = $this->getNamespaceCacheKey(); +$namespaceVersion = $this->getNamespaceVersion() + 1; +if ($this->doSave($namespaceCacheKey, $namespaceVersion)) { +$this->namespaceVersion = $namespaceVersion; +return true; +} +return false; +} +private function getNamespacedId($id) +{ +$namespaceVersion = $this->getNamespaceVersion(); +return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion); +} +private function getNamespaceCacheKey() +{ +return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace); +} +private function getNamespaceVersion() +{ +if (null !== $this->namespaceVersion) { +return $this->namespaceVersion; +} +$namespaceCacheKey = $this->getNamespaceCacheKey(); +$this->namespaceVersion = $this->doFetch($namespaceCacheKey) ?: 1; +return $this->namespaceVersion; +} +protected function doFetchMultiple(array $keys) +{ +$returnValues = array(); +foreach ($keys as $key) { +if (false !== ($item = $this->doFetch($key)) || $this->doContains($key)) { +$returnValues[$key] = $item; +} +} +return $returnValues; +} +abstract protected function doFetch($id); +abstract protected function doContains($id); +protected function doSaveMultiple(array $keysAndValues, $lifetime = 0) +{ +$success = true; +foreach ($keysAndValues as $key => $value) { +if (!$this->doSave($key, $value, $lifetime)) { +$success = false; +} +} +return $success; +} +abstract protected function doSave($id, $data, $lifeTime = 0); +abstract protected function doDelete($id); +abstract protected function doFlush(); +abstract protected function doGetStats(); +} +} +namespace Symfony\Component\Cache +{ +use Doctrine\Common\Cache\CacheProvider; +use Psr\Cache\CacheItemPoolInterface; +class DoctrineProvider extends CacheProvider +{ +private $pool; +public function __construct(CacheItemPoolInterface $pool) +{ +$this->pool = $pool; +} +protected function doFetch($id) +{ +$item = $this->pool->getItem(rawurlencode($id)); +return $item->isHit() ? $item->get() : false; +} +protected function doContains($id) +{ +return $this->pool->hasItem(rawurlencode($id)); +} +protected function doSave($id, $data, $lifeTime = 0) +{ +$item = $this->pool->getItem(rawurlencode($id)); +if (0 < $lifeTime) { +$item->expiresAfter($lifeTime); +} +return $this->pool->save($item->set($data)); +} +protected function doDelete($id) +{ +return $this->pool->deleteItem(rawurlencode($id)); +} +protected function doFlush() +{ +$this->pool->clear(); +} +protected function doGetStats() +{ +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Resource\ResourceInterface; +interface ConfigCacheInterface +{ +public function getPath(); +public function isFresh(); +public function write($content, array $metadata = null); +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Resource\ResourceInterface; +use Symfony\Component\Filesystem\Exception\IOException; +use Symfony\Component\Filesystem\Filesystem; +class ResourceCheckerConfigCache implements ConfigCacheInterface +{ +private $file; +private $resourceCheckers; +public function __construct($file, array $resourceCheckers = array()) +{ +$this->file = $file; +$this->resourceCheckers = $resourceCheckers; +} +public function getPath() +{ +return $this->file; +} +public function isFresh() +{ +if (!is_file($this->file)) { +return false; +} +if (!$this->resourceCheckers) { +return true; } +$metadata = $this->getMetaFile(); +if (!is_file($metadata)) { +return false; +} +$e = null; +$meta = false; +$time = filemtime($this->file); +$signalingException = new \UnexpectedValueException(); +$prevUnserializeHandler = ini_set('unserialize_callback_func',''); +$prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context) use (&$prevErrorHandler, $signalingException) { +if (E_WARNING === $type &&'Class __PHP_Incomplete_Class has no unserializer'=== $msg) { +throw $signalingException; +} +return $prevErrorHandler ? $prevErrorHandler($type, $msg, $file, $line, $context) : false; +}); +try { +$meta = unserialize(file_get_contents($metadata)); +} catch (\Error $e) { +} catch (\Exception $e) { +} +restore_error_handler(); +ini_set('unserialize_callback_func', $prevUnserializeHandler); +if (null !== $e && $e !== $signalingException) { +throw $e; +} +if (false === $meta) { +return false; +} +foreach ($meta as $resource) { +foreach ($this->resourceCheckers as $checker) { +if (!$checker->supports($resource)) { +continue; } +if ($checker->isFresh($resource, $time)) { +break; } +return false; } +} +return true; +} +public function write($content, array $metadata = null) +{ +$mode = 0666; +$umask = umask(); +$filesystem = new Filesystem(); +$filesystem->dumpFile($this->file, $content, null); +try { +$filesystem->chmod($this->file, $mode, $umask); +} catch (IOException $e) { +} +if (null !== $metadata) { +$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null); +try { +$filesystem->chmod($this->getMetaFile(), $mode, $umask); +} catch (IOException $e) { +} +} +} +private function getMetaFile() +{ +return $this->file.'.meta'; +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Resource\SelfCheckingResourceChecker; +class ConfigCache extends ResourceCheckerConfigCache +{ +private $debug; +public function __construct($file, $debug) +{ +$this->debug = (bool) $debug; +$checkers = array(); +if (true === $this->debug) { +$checkers = array(new SelfCheckingResourceChecker()); +} +parent::__construct($file, $checkers); +} +public function isFresh() +{ +if (!$this->debug && is_file($this->getPath())) { +return true; +} +return parent::isFresh(); +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Exception\FileLocatorFileNotFoundException; +class FileLocator implements FileLocatorInterface +{ +protected $paths; +public function __construct($paths = array()) +{ +$this->paths = (array) $paths; +} +public function locate($name, $currentPath = null, $first = true) +{ +if (''== $name) { +throw new \InvalidArgumentException('An empty file name is not valid to be located.'); +} +if ($this->isAbsolutePath($name)) { +if (!file_exists($name)) { +throw new FileLocatorFileNotFoundException(sprintf('The file "%s" does not exist.', $name)); +} +return $name; +} +$paths = $this->paths; +if (null !== $currentPath) { +array_unshift($paths, $currentPath); +} +$paths = array_unique($paths); +$filepaths = array(); +foreach ($paths as $path) { +if (@file_exists($file = $path.DIRECTORY_SEPARATOR.$name)) { +if (true === $first) { +return $file; +} +$filepaths[] = $file; +} +} +if (!$filepaths) { +throw new FileLocatorFileNotFoundException(sprintf('The file "%s" does not exist (in: %s).', $name, implode(', ', $paths))); +} +return $filepaths; +} +private function isAbsolutePath($file) +{ +if ($file[0] ==='/'|| $file[0] ==='\\'|| (strlen($file) > 3 && ctype_alpha($file[0]) +&& $file[1] ===':'&& ($file[2] ==='\\'|| $file[2] ==='/') +) +|| null !== parse_url($file, PHP_URL_SCHEME) +) { +return true; +} +return false; +} +} +} +namespace Symfony\Component\DependencyInjection +{ +interface ContainerAwareInterface +{ +public function setContainer(ContainerInterface $container = null); +} +} +namespace Symfony\Component\DependencyInjection +{ +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; +use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; +interface ContainerInterface +{ +const EXCEPTION_ON_INVALID_REFERENCE = 1; +const NULL_ON_INVALID_REFERENCE = 2; +const IGNORE_ON_INVALID_REFERENCE = 3; +public function set($id, $service); +public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE); +public function has($id); +public function initialized($id); +public function getParameter($name); +public function hasParameter($name); +public function setParameter($name, $value); +} +} +namespace Symfony\Component\DependencyInjection +{ +interface ResettableContainerInterface extends ContainerInterface +{ +public function reset(); +} +} +namespace Symfony\Component\DependencyInjection +{ +use Symfony\Component\DependencyInjection\Exception\EnvNotFoundException; +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; +use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; +use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag; +use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; +class Container implements ResettableContainerInterface +{ +protected $parameterBag; +protected $services = array(); +protected $methodMap = array(); +protected $privates = array(); +protected $aliases = array(); +protected $loading = array(); +private $underscoreMap = array('_'=>'','.'=>'_','\\'=>'_'); +private $envCache = array(); +public function __construct(ParameterBagInterface $parameterBag = null) +{ +$this->parameterBag = $parameterBag ?: new EnvPlaceholderParameterBag(); +} +public function compile() +{ +$this->parameterBag->resolve(); +$this->parameterBag = new FrozenParameterBag($this->parameterBag->all()); +} +public function isFrozen() +{ +return $this->parameterBag instanceof FrozenParameterBag; +} +public function getParameterBag() +{ +return $this->parameterBag; +} +public function getParameter($name) +{ +return $this->parameterBag->get($name); +} +public function hasParameter($name) +{ +return $this->parameterBag->has($name); +} +public function setParameter($name, $value) +{ +$this->parameterBag->set($name, $value); +} +public function set($id, $service) +{ +$id = strtolower($id); +if ('service_container'=== $id) { +throw new InvalidArgumentException('You cannot set service "service_container".'); +} +if (isset($this->aliases[$id])) { +unset($this->aliases[$id]); +} +$this->services[$id] = $service; +if (null === $service) { +unset($this->services[$id]); +} +if (isset($this->privates[$id])) { +if (null === $service) { +@trigger_error(sprintf('Unsetting the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0.', $id), E_USER_DEPRECATED); +unset($this->privates[$id]); +} else { +@trigger_error(sprintf('Setting the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0. A new public service will be created instead.', $id), E_USER_DEPRECATED); +} +} +} +public function has($id) +{ +for ($i = 2;;) { +if ('service_container'=== $id +|| isset($this->aliases[$id]) +|| isset($this->services[$id]) +) { +return true; +} +if (isset($this->privates[$id])) { +@trigger_error(sprintf('Checking for the existence of the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0.', $id), E_USER_DEPRECATED); +} +if (isset($this->methodMap[$id])) { +return true; +} +if (--$i && $id !== $lcId = strtolower($id)) { +$id = $lcId; +continue; +} +if (!$this->methodMap && !$this instanceof ContainerBuilder && __CLASS__ !== static::class && method_exists($this,'get'.strtr($id, $this->underscoreMap).'Service')) { +@trigger_error('Generating a dumped container without populating the method map is deprecated since 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', E_USER_DEPRECATED); +return true; +} +return false; +} +} +public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) +{ +for ($i = 2;;) { +if ('service_container'=== $id) { +return $this; +} +if (isset($this->aliases[$id])) { +$id = $this->aliases[$id]; +} +if (isset($this->services[$id])) { +return $this->services[$id]; +} +if (isset($this->loading[$id])) { +throw new ServiceCircularReferenceException($id, array_keys($this->loading)); +} +if (isset($this->methodMap[$id])) { +$method = $this->methodMap[$id]; +} elseif (--$i && $id !== $lcId = strtolower($id)) { +$id = $lcId; +continue; +} elseif (!$this->methodMap && !$this instanceof ContainerBuilder && __CLASS__ !== static::class && method_exists($this, $method ='get'.strtr($id, $this->underscoreMap).'Service')) { +@trigger_error('Generating a dumped container without populating the method map is deprecated since 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', E_USER_DEPRECATED); +} else { +if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) { +if (!$id) { +throw new ServiceNotFoundException($id); +} +$alternatives = array(); +foreach ($this->getServiceIds() as $knownId) { +$lev = levenshtein($id, $knownId); +if ($lev <= strlen($id) / 3 || false !== strpos($knownId, $id)) { +$alternatives[] = $knownId; +} +} +throw new ServiceNotFoundException($id, null, null, $alternatives); +} +return; +} +if (isset($this->privates[$id])) { +@trigger_error(sprintf('Requesting the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0.', $id), E_USER_DEPRECATED); +} +$this->loading[$id] = true; +try { +$service = $this->$method(); +} catch (\Exception $e) { +unset($this->services[$id]); +throw $e; +} finally { +unset($this->loading[$id]); +} +return $service; +} +} +public function initialized($id) +{ +$id = strtolower($id); +if ('service_container'=== $id) { +return false; +} +if (isset($this->aliases[$id])) { +$id = $this->aliases[$id]; +} +return isset($this->services[$id]); +} +public function reset() +{ +$this->services = array(); +} +public function getServiceIds() +{ +$ids = array(); +if (!$this->methodMap && !$this instanceof ContainerBuilder && __CLASS__ !== static::class) { +@trigger_error('Generating a dumped container without populating the method map is deprecated since 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', E_USER_DEPRECATED); +foreach (get_class_methods($this) as $method) { +if (preg_match('/^get(.+)Service$/', $method, $match)) { +$ids[] = self::underscore($match[1]); +} +} +} +$ids[] ='service_container'; +return array_unique(array_merge($ids, array_keys($this->methodMap), array_keys($this->services))); +} +public static function camelize($id) +{ +return strtr(ucwords(strtr($id, array('_'=>' ','.'=>'_ ','\\'=>'_ '))), array(' '=>'')); +} +public static function underscore($id) +{ +return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/','/([a-z\d])([A-Z])/'), array('\\1_\\2','\\1_\\2'), str_replace('_','.', $id))); +} +protected function getEnv($name) +{ +if (isset($this->envCache[$name]) || array_key_exists($name, $this->envCache)) { +return $this->envCache[$name]; +} +if (isset($_ENV[$name])) { +return $this->envCache[$name] = $_ENV[$name]; +} +if (false !== $env = getenv($name)) { +return $this->envCache[$name] = $env; +} +if (!$this->hasParameter("env($name)")) { +throw new EnvNotFoundException($name); +} +return $this->envCache[$name] = $this->getParameter("env($name)"); +} +private function __clone() +{ +} +} +} +namespace Symfony\Component\EventDispatcher +{ +class Event +{ +private $propagationStopped = false; +public function isPropagationStopped() +{ +return $this->propagationStopped; +} +public function stopPropagation() +{ +$this->propagationStopped = true; +} +} +} +namespace Symfony\Component\EventDispatcher +{ +interface EventDispatcherInterface +{ +public function dispatch($eventName, Event $event = null); +public function addListener($eventName, $listener, $priority = 0); +public function addSubscriber(EventSubscriberInterface $subscriber); +public function removeListener($eventName, $listener); +public function removeSubscriber(EventSubscriberInterface $subscriber); +public function getListeners($eventName = null); +public function getListenerPriority($eventName, $listener); +public function hasListeners($eventName = null); +} +} +namespace Symfony\Component\EventDispatcher +{ +class EventDispatcher implements EventDispatcherInterface +{ +private $listeners = array(); +private $sorted = array(); +public function dispatch($eventName, Event $event = null) +{ +if (null === $event) { +$event = new Event(); +} +if ($listeners = $this->getListeners($eventName)) { +$this->doDispatch($listeners, $eventName, $event); +} +return $event; +} +public function getListeners($eventName = null) +{ +if (null !== $eventName) { +if (!isset($this->listeners[$eventName])) { +return array(); +} +if (!isset($this->sorted[$eventName])) { +$this->sortListeners($eventName); +} +return $this->sorted[$eventName]; +} +foreach ($this->listeners as $eventName => $eventListeners) { +if (!isset($this->sorted[$eventName])) { +$this->sortListeners($eventName); +} +} +return array_filter($this->sorted); +} +public function getListenerPriority($eventName, $listener) +{ +if (!isset($this->listeners[$eventName])) { +return; +} +foreach ($this->listeners[$eventName] as $priority => $listeners) { +if (false !== in_array($listener, $listeners, true)) { +return $priority; +} +} +} +public function hasListeners($eventName = null) +{ +return (bool) count($this->getListeners($eventName)); +} +public function addListener($eventName, $listener, $priority = 0) +{ +$this->listeners[$eventName][$priority][] = $listener; +unset($this->sorted[$eventName]); +} +public function removeListener($eventName, $listener) +{ +if (!isset($this->listeners[$eventName])) { +return; +} +foreach ($this->listeners[$eventName] as $priority => $listeners) { +if (false !== ($key = array_search($listener, $listeners, true))) { +unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]); +} +} +} +public function addSubscriber(EventSubscriberInterface $subscriber) +{ +foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { +if (is_string($params)) { +$this->addListener($eventName, array($subscriber, $params)); +} elseif (is_string($params[0])) { +$this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); +} else { +foreach ($params as $listener) { +$this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); +} +} +} +} +public function removeSubscriber(EventSubscriberInterface $subscriber) +{ +foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { +if (is_array($params) && is_array($params[0])) { +foreach ($params as $listener) { +$this->removeListener($eventName, array($subscriber, $listener[0])); +} +} else { +$this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0])); +} +} +} +protected function doDispatch($listeners, $eventName, Event $event) +{ +foreach ($listeners as $listener) { +if ($event->isPropagationStopped()) { +break; +} +call_user_func($listener, $event, $eventName, $this); +} +} +private function sortListeners($eventName) +{ +krsort($this->listeners[$eventName]); +$this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]); +} +} +} +namespace Symfony\Component\EventDispatcher +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +class ContainerAwareEventDispatcher extends EventDispatcher +{ +private $container; +private $listenerIds = array(); +private $listeners = array(); +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +public function addListenerService($eventName, $callback, $priority = 0) +{ +if (!is_array($callback) || 2 !== count($callback)) { +throw new \InvalidArgumentException('Expected an array("service", "method") argument'); +} +$this->listenerIds[$eventName][] = array($callback[0], $callback[1], $priority); +} +public function removeListener($eventName, $listener) +{ +$this->lazyLoad($eventName); +if (isset($this->listenerIds[$eventName])) { +foreach ($this->listenerIds[$eventName] as $i => list($serviceId, $method, $priority)) { +$key = $serviceId.'.'.$method; +if (isset($this->listeners[$eventName][$key]) && $listener === array($this->listeners[$eventName][$key], $method)) { +unset($this->listeners[$eventName][$key]); +if (empty($this->listeners[$eventName])) { +unset($this->listeners[$eventName]); +} +unset($this->listenerIds[$eventName][$i]); +if (empty($this->listenerIds[$eventName])) { +unset($this->listenerIds[$eventName]); +} +} +} +} +parent::removeListener($eventName, $listener); +} +public function hasListeners($eventName = null) +{ +if (null === $eventName) { +return (bool) count($this->listenerIds) || (bool) count($this->listeners); +} +if (isset($this->listenerIds[$eventName])) { +return true; +} +return parent::hasListeners($eventName); +} +public function getListeners($eventName = null) +{ +if (null === $eventName) { +foreach ($this->listenerIds as $serviceEventName => $args) { +$this->lazyLoad($serviceEventName); +} +} else { +$this->lazyLoad($eventName); +} +return parent::getListeners($eventName); +} +public function getListenerPriority($eventName, $listener) +{ +$this->lazyLoad($eventName); +return parent::getListenerPriority($eventName, $listener); +} +public function addSubscriberService($serviceId, $class) +{ +foreach ($class::getSubscribedEvents() as $eventName => $params) { +if (is_string($params)) { +$this->listenerIds[$eventName][] = array($serviceId, $params, 0); +} elseif (is_string($params[0])) { +$this->listenerIds[$eventName][] = array($serviceId, $params[0], isset($params[1]) ? $params[1] : 0); +} else { +foreach ($params as $listener) { +$this->listenerIds[$eventName][] = array($serviceId, $listener[0], isset($listener[1]) ? $listener[1] : 0); +} +} +} +} +public function getContainer() +{ +return $this->container; +} +protected function lazyLoad($eventName) +{ +if (isset($this->listenerIds[$eventName])) { +foreach ($this->listenerIds[$eventName] as list($serviceId, $method, $priority)) { +$listener = $this->container->get($serviceId); +$key = $serviceId.'.'.$method; +if (!isset($this->listeners[$eventName][$key])) { +$this->addListener($eventName, array($listener, $method), $priority); +} elseif ($listener !== $this->listeners[$eventName][$key]) { +parent::removeListener($eventName, array($this->listeners[$eventName][$key], $method)); +$this->addListener($eventName, array($listener, $method), $priority); +} +$this->listeners[$eventName][$key] = $listener; +} +} +} +} +} +namespace Symfony\Component\HttpKernel\EventListener +{ +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +class ResponseListener implements EventSubscriberInterface +{ +private $charset; +public function __construct($charset) +{ +$this->charset = $charset; +} +public function onKernelResponse(FilterResponseEvent $event) +{ +if (!$event->isMasterRequest()) { +return; +} +$response = $event->getResponse(); +if (null === $response->getCharset()) { +$response->setCharset($this->charset); +} +$response->prepare($event->getRequest()); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::RESPONSE =>'onKernelResponse', +); +} +} +} +namespace Symfony\Component\HttpKernel\EventListener +{ +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Matcher\UrlMatcherInterface; +use Symfony\Component\Routing\Matcher\RequestMatcherInterface; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\RequestContextAwareInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\Request; +class RouterListener implements EventSubscriberInterface +{ +private $matcher; +private $context; +private $logger; +private $requestStack; +public function __construct($matcher, RequestStack $requestStack, RequestContext $context = null, LoggerInterface $logger = null) +{ +if (!$matcher instanceof UrlMatcherInterface && !$matcher instanceof RequestMatcherInterface) { +throw new \InvalidArgumentException('Matcher must either implement UrlMatcherInterface or RequestMatcherInterface.'); +} +if (null === $context && !$matcher instanceof RequestContextAwareInterface) { +throw new \InvalidArgumentException('You must either pass a RequestContext or the matcher must implement RequestContextAwareInterface.'); +} +$this->matcher = $matcher; +$this->context = $context ?: $matcher->getContext(); +$this->requestStack = $requestStack; +$this->logger = $logger; +} +private function setCurrentRequest(Request $request = null) +{ +if (null !== $request) { +$this->context->fromRequest($request); +} +} +public function onKernelFinishRequest(FinishRequestEvent $event) +{ +$this->setCurrentRequest($this->requestStack->getParentRequest()); +} +public function onKernelRequest(GetResponseEvent $event) +{ +$request = $event->getRequest(); +$this->setCurrentRequest($request); +if ($request->attributes->has('_controller')) { +return; +} +try { +if ($this->matcher instanceof RequestMatcherInterface) { +$parameters = $this->matcher->matchRequest($request); +} else { +$parameters = $this->matcher->match($request->getPathInfo()); +} +if (null !== $this->logger) { +$this->logger->info('Matched route "{route}".', array('route'=> isset($parameters['_route']) ? $parameters['_route'] :'n/a','route_parameters'=> $parameters,'request_uri'=> $request->getUri(),'method'=> $request->getMethod(), +)); +} +$request->attributes->add($parameters); +unset($parameters['_route'], $parameters['_controller']); +$request->attributes->set('_route_params', $parameters); +} catch (ResourceNotFoundException $e) { +$message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo()); +if ($referer = $request->headers->get('referer')) { +$message .= sprintf(' (from "%s")', $referer); +} +throw new NotFoundHttpException($message, $e); +} catch (MethodNotAllowedException $e) { +$message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), implode(', ', $e->getAllowedMethods())); +throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e); +} +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::REQUEST => array(array('onKernelRequest', 32)), +KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)), +); +} +} +} +namespace Symfony\Component\HttpKernel\Bundle +{ +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; +interface BundleInterface extends ContainerAwareInterface +{ +public function boot(); +public function shutdown(); +public function build(ContainerBuilder $container); +public function getContainerExtension(); +public function getParent(); +public function getName(); +public function getNamespace(); +public function getPath(); +} +} +namespace Symfony\Component\DependencyInjection +{ +trait ContainerAwareTrait +{ +protected $container; +public function setContainer(ContainerInterface $container = null) +{ +$this->container = $container; +} +} +} +namespace Symfony\Component\HttpKernel\Bundle +{ +use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\Console\Application; +use Symfony\Component\Finder\Finder; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; +abstract class Bundle implements BundleInterface +{ +use ContainerAwareTrait; +protected $name; +protected $extension; +protected $path; +private $namespace; +public function boot() +{ +} +public function shutdown() +{ +} +public function build(ContainerBuilder $container) +{ +} +public function getContainerExtension() +{ +if (null === $this->extension) { +$extension = $this->createContainerExtension(); +if (null !== $extension) { +if (!$extension instanceof ExtensionInterface) { +throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', get_class($extension))); +} +$basename = preg_replace('/Bundle$/','', $this->getName()); +$expectedAlias = Container::underscore($basename); +if ($expectedAlias != $extension->getAlias()) { +throw new \LogicException(sprintf('Users will expect the alias of the default extension of a bundle to be the underscored version of the bundle name ("%s"). You can override "Bundle::getContainerExtension()" if you want to use "%s" or another alias.', +$expectedAlias, $extension->getAlias() +)); +} +$this->extension = $extension; +} else { +$this->extension = false; +} +} +if ($this->extension) { +return $this->extension; +} +} +public function getNamespace() +{ +if (null === $this->namespace) { +$this->parseClassName(); +} +return $this->namespace; +} +public function getPath() +{ +if (null === $this->path) { +$reflected = new \ReflectionObject($this); +$this->path = dirname($reflected->getFileName()); +} +return $this->path; +} +public function getParent() +{ +} +final public function getName() +{ +if (null === $this->name) { +$this->parseClassName(); +} +return $this->name; +} +public function registerCommands(Application $application) +{ +if (!is_dir($dir = $this->getPath().'/Command')) { +return; +} +if (!class_exists('Symfony\Component\Finder\Finder')) { +throw new \RuntimeException('You need the symfony/finder component to register bundle commands.'); +} +$finder = new Finder(); +$finder->files()->name('*Command.php')->in($dir); +$prefix = $this->getNamespace().'\\Command'; +foreach ($finder as $file) { +$ns = $prefix; +if ($relativePath = $file->getRelativePath()) { +$ns .='\\'.str_replace('/','\\', $relativePath); +} +$class = $ns.'\\'.$file->getBasename('.php'); +if ($this->container) { +$alias ='console.command.'.strtolower(str_replace('\\','_', $class)); +if ($this->container->has($alias)) { +continue; +} +} +$r = new \ReflectionClass($class); +if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) { +$application->add($r->newInstance()); +} +} +} +protected function getContainerExtensionClass() +{ +$basename = preg_replace('/Bundle$/','', $this->getName()); +return $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension'; +} +protected function createContainerExtension() +{ +if (class_exists($class = $this->getContainerExtensionClass())) { +return new $class(); +} +} +private function parseClassName() +{ +$pos = strrpos(static::class,'\\'); +$this->namespace = false === $pos ?'': substr(static::class, 0, $pos); +if (null === $this->name) { +$this->name = false === $pos ? static::class : substr(static::class, $pos + 1); +} +} +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Symfony\Component\HttpFoundation\Request; +interface ArgumentResolverInterface +{ +public function getArguments(Request $request, $controller); +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Symfony\Component\HttpFoundation\Request; +interface ControllerResolverInterface +{ +public function getController(Request $request); +public function getArguments(Request $request, $controller); +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpFoundation\Request; +class ControllerResolver implements ArgumentResolverInterface, ControllerResolverInterface +{ +private $logger; +private $supportsVariadic; +private $supportsScalarTypes; +public function __construct(LoggerInterface $logger = null) +{ +$this->logger = $logger; +$this->supportsVariadic = method_exists('ReflectionParameter','isVariadic'); +$this->supportsScalarTypes = method_exists('ReflectionParameter','getType'); +} +public function getController(Request $request) +{ +if (!$controller = $request->attributes->get('_controller')) { +if (null !== $this->logger) { +$this->logger->warning('Unable to look for the controller as the "_controller" parameter is missing.'); +} +return false; +} +if (is_array($controller)) { +return $controller; +} +if (is_object($controller)) { +if (method_exists($controller,'__invoke')) { +return $controller; +} +throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', get_class($controller), $request->getPathInfo())); +} +if (false === strpos($controller,':')) { +if (method_exists($controller,'__invoke')) { +return $this->instantiateController($controller); +} elseif (function_exists($controller)) { +return $controller; +} +} +$callable = $this->createController($controller); +if (!is_callable($callable)) { +throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($callable))); +} +return $callable; +} +public function getArguments(Request $request, $controller) +{ +@trigger_error(sprintf('%s is deprecated as of 3.1 and will be removed in 4.0. Implement the %s and inject it in the HttpKernel instead.', __METHOD__, ArgumentResolverInterface::class), E_USER_DEPRECATED); +if (is_array($controller)) { +$r = new \ReflectionMethod($controller[0], $controller[1]); +} elseif (is_object($controller) && !$controller instanceof \Closure) { +$r = new \ReflectionObject($controller); +$r = $r->getMethod('__invoke'); +} else { +$r = new \ReflectionFunction($controller); +} +return $this->doGetArguments($request, $controller, $r->getParameters()); +} +protected function doGetArguments(Request $request, $controller, array $parameters) +{ +@trigger_error(sprintf('%s is deprecated as of 3.1 and will be removed in 4.0. Implement the %s and inject it in the HttpKernel instead.', __METHOD__, ArgumentResolverInterface::class), E_USER_DEPRECATED); +$attributes = $request->attributes->all(); +$arguments = array(); +foreach ($parameters as $param) { +if (array_key_exists($param->name, $attributes)) { +if ($this->supportsVariadic && $param->isVariadic() && is_array($attributes[$param->name])) { +$arguments = array_merge($arguments, array_values($attributes[$param->name])); +} else { +$arguments[] = $attributes[$param->name]; +} +} elseif ($param->getClass() && $param->getClass()->isInstance($request)) { +$arguments[] = $request; +} elseif ($param->isDefaultValueAvailable()) { +$arguments[] = $param->getDefaultValue(); +} elseif ($this->supportsScalarTypes && $param->hasType() && $param->allowsNull()) { +$arguments[] = null; +} else { +if (is_array($controller)) { +$repr = sprintf('%s::%s()', get_class($controller[0]), $controller[1]); +} elseif (is_object($controller)) { +$repr = get_class($controller); +} else { +$repr = $controller; +} +throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument (because there is no default value or because there is a non optional argument after this one).', $repr, $param->name)); +} +} +return $arguments; +} +protected function createController($controller) +{ +if (false === strpos($controller,'::')) { +throw new \InvalidArgumentException(sprintf('Unable to find controller "%s".', $controller)); +} +list($class, $method) = explode('::', $controller, 2); +if (!class_exists($class)) { +throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class)); +} +return array($this->instantiateController($class), $method); +} +protected function instantiateController($class) +{ +return new $class(); +} +private function getControllerError($callable) +{ +if (is_string($callable)) { +if (false !== strpos($callable,'::')) { +$callable = explode('::', $callable); +} +if (class_exists($callable) && !method_exists($callable,'__invoke')) { +return sprintf('Class "%s" does not have a method "__invoke".', $callable); +} +if (!function_exists($callable)) { +return sprintf('Function "%s" does not exist.', $callable); +} +} +if (!is_array($callable)) { +return sprintf('Invalid type for controller given, expected string or array, got "%s".', gettype($callable)); +} +if (2 !== count($callable)) { +return sprintf('Invalid format for controller, expected array(controller, method) or controller::method.'); +} +list($controller, $method) = $callable; +if (is_string($controller) && !class_exists($controller)) { +return sprintf('Class "%s" does not exist.', $controller); +} +$className = is_object($controller) ? get_class($controller) : $controller; +if (method_exists($controller, $method)) { +return sprintf('Method "%s" on class "%s" should be public and non-abstract.', $method, $className); +} +$collection = get_class_methods($controller); +$alternatives = array(); +foreach ($collection as $item) { +$lev = levenshtein($method, $item); +if ($lev <= strlen($method) / 3 || false !== strpos($item, $method)) { +$alternatives[] = $item; +} +} +asort($alternatives); +$message = sprintf('Expected method "%s" on class "%s"', $method, $className); +if (count($alternatives) > 0) { +$message .= sprintf(', did you mean "%s"?', implode('", "', $alternatives)); +} else { +$message .= sprintf('. Available methods: "%s".', implode('", "', $collection)); +} +return $message; +} +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver; +use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory; +use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface; +final class ArgumentResolver implements ArgumentResolverInterface +{ +private $argumentMetadataFactory; +private $argumentValueResolvers; +public function __construct(ArgumentMetadataFactoryInterface $argumentMetadataFactory = null, array $argumentValueResolvers = array()) +{ +$this->argumentMetadataFactory = $argumentMetadataFactory ?: new ArgumentMetadataFactory(); +$this->argumentValueResolvers = $argumentValueResolvers ?: self::getDefaultArgumentValueResolvers(); +} +public function getArguments(Request $request, $controller) +{ +$arguments = array(); +foreach ($this->argumentMetadataFactory->createArgumentMetadata($controller) as $metadata) { +foreach ($this->argumentValueResolvers as $resolver) { +if (!$resolver->supports($request, $metadata)) { +continue; +} +$resolved = $resolver->resolve($request, $metadata); +if (!$resolved instanceof \Generator) { +throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', get_class($resolver))); +} +foreach ($resolved as $append) { +$arguments[] = $append; +} +continue 2; +} +$representative = $controller; +if (is_array($representative)) { +$representative = sprintf('%s::%s()', get_class($representative[0]), $representative[1]); +} elseif (is_object($representative)) { +$representative = get_class($representative); +} +throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.', $representative, $metadata->getName())); +} +return $arguments; +} +public static function getDefaultArgumentValueResolvers() +{ +return array( +new RequestAttributeValueResolver(), +new RequestValueResolver(), +new DefaultValueResolver(), +new VariadicValueResolver(), +); +} +} +} +namespace Symfony\Component\HttpKernel\ControllerMetadata +{ +class ArgumentMetadata +{ +private $name; +private $type; +private $isVariadic; +private $hasDefaultValue; +private $defaultValue; +private $isNullable; +public function __construct($name, $type, $isVariadic, $hasDefaultValue, $defaultValue, $isNullable = false) +{ +$this->name = $name; +$this->type = $type; +$this->isVariadic = $isVariadic; +$this->hasDefaultValue = $hasDefaultValue; +$this->defaultValue = $defaultValue; +$this->isNullable = $isNullable || null === $type || ($hasDefaultValue && null === $defaultValue); +} +public function getName() +{ +return $this->name; +} +public function getType() +{ +return $this->type; +} +public function isVariadic() +{ +return $this->isVariadic; +} +public function hasDefaultValue() +{ +return $this->hasDefaultValue; +} +public function isNullable() +{ +return $this->isNullable; +} +public function getDefaultValue() +{ +if (!$this->hasDefaultValue) { +throw new \LogicException(sprintf('Argument $%s does not have a default value. Use %s::hasDefaultValue() to avoid this exception.', $this->name, __CLASS__)); +} +return $this->defaultValue; +} +} +} +namespace Symfony\Component\HttpKernel\ControllerMetadata +{ +interface ArgumentMetadataFactoryInterface +{ +public function createArgumentMetadata($controller); +} +} +namespace Symfony\Component\HttpKernel\ControllerMetadata +{ +final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface +{ +private $supportsVariadic; +private $supportsParameterType; +public function __construct() +{ +$this->supportsVariadic = method_exists('ReflectionParameter','isVariadic'); +$this->supportsParameterType = method_exists('ReflectionParameter','getType'); +} +public function createArgumentMetadata($controller) +{ +$arguments = array(); +if (is_array($controller)) { +$reflection = new \ReflectionMethod($controller[0], $controller[1]); +} elseif (is_object($controller) && !$controller instanceof \Closure) { +$reflection = (new \ReflectionObject($controller))->getMethod('__invoke'); +} else { +$reflection = new \ReflectionFunction($controller); +} +foreach ($reflection->getParameters() as $param) { +$arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param), $this->isVariadic($param), $this->hasDefaultValue($param), $this->getDefaultValue($param), $param->allowsNull()); +} +return $arguments; +} +private function isVariadic(\ReflectionParameter $parameter) +{ +return $this->supportsVariadic && $parameter->isVariadic(); +} +private function hasDefaultValue(\ReflectionParameter $parameter) +{ +return $parameter->isDefaultValueAvailable(); +} +private function getDefaultValue(\ReflectionParameter $parameter) +{ +return $this->hasDefaultValue($parameter) ? $parameter->getDefaultValue() : null; +} +private function getType(\ReflectionParameter $parameter) +{ +if ($this->supportsParameterType) { +if (!$type = $parameter->getType()) { +return; +} +$typeName = $type instanceof \ReflectionNamedType ? $type->getName() : $type->__toString(); +if ('array'=== $typeName && !$type->isBuiltin()) { +return; +} +return $typeName; +} +if (preg_match('/^(?:[^ ]++ ){4}([a-zA-Z_\x7F-\xFF][^ ]++)/', $parameter, $info)) { +return $info[1]; +} +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\EventDispatcher\Event; +class KernelEvent extends Event +{ +private $kernel; +private $request; +private $requestType; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType) +{ +$this->kernel = $kernel; +$this->request = $request; +$this->requestType = $requestType; +} +public function getKernel() +{ +return $this->kernel; +} +public function getRequest() +{ +return $this->request; +} +public function getRequestType() +{ +return $this->requestType; +} +public function isMasterRequest() +{ +return HttpKernelInterface::MASTER_REQUEST === $this->requestType; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +class FilterControllerEvent extends KernelEvent +{ +private $controller; +public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, $requestType) +{ +parent::__construct($kernel, $request, $requestType); +$this->setController($controller); +} +public function getController() +{ +return $this->controller; +} +public function setController(callable $controller) +{ +$this->controller = $controller; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +class FilterResponseEvent extends KernelEvent +{ +private $response; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, Response $response) +{ +parent::__construct($kernel, $request, $requestType); +$this->setResponse($response); +} +public function getResponse() +{ +return $this->response; +} +public function setResponse(Response $response) +{ +$this->response = $response; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpFoundation\Response; +class GetResponseEvent extends KernelEvent +{ +private $response; +public function getResponse() +{ +return $this->response; +} +public function setResponse(Response $response) +{ +$this->response = $response; +$this->stopPropagation(); +} +public function hasResponse() +{ +return null !== $this->response; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +class GetResponseForControllerResultEvent extends GetResponseEvent +{ +private $controllerResult; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, $controllerResult) +{ +parent::__construct($kernel, $request, $requestType); +$this->controllerResult = $controllerResult; +} +public function getControllerResult() +{ +return $this->controllerResult; +} +public function setControllerResult($controllerResult) +{ +$this->controllerResult = $controllerResult; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +class GetResponseForExceptionEvent extends GetResponseEvent +{ +private $exception; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, \Exception $e) +{ +parent::__construct($kernel, $request, $requestType); +$this->setException($e); +} +public function getException() +{ +return $this->exception; +} +public function setException(\Exception $exception) +{ +$this->exception = $exception; +} +} +} +namespace Symfony\Component\HttpKernel +{ +use Symfony\Component\HttpKernel\Controller\ArgumentResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface; +use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface; +use Symfony\Component\HttpKernel\Event\FilterControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +class HttpKernel implements HttpKernelInterface, TerminableInterface +{ +protected $dispatcher; +protected $resolver; +protected $requestStack; +private $argumentResolver; +public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver, RequestStack $requestStack = null, ArgumentResolverInterface $argumentResolver = null) +{ +$this->dispatcher = $dispatcher; +$this->resolver = $resolver; +$this->requestStack = $requestStack ?: new RequestStack(); +$this->argumentResolver = $argumentResolver; +if (null === $this->argumentResolver) { +@trigger_error(sprintf('As of 3.1 an %s is used to resolve arguments. In 4.0 the $argumentResolver becomes the %s if no other is provided instead of using the $resolver argument.', ArgumentResolverInterface::class, ArgumentResolver::class), E_USER_DEPRECATED); +$this->argumentResolver = $resolver; +} +} +public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) +{ +$request->headers->set('X-Php-Ob-Level', ob_get_level()); +try { +return $this->handleRaw($request, $type); +} catch (\Exception $e) { +if ($e instanceof ConflictingHeadersException) { +$e = new BadRequestHttpException('The request headers contain conflicting information regarding the origin of this request.', $e); +} +if (false === $catch) { +$this->finishRequest($request, $type); +throw $e; +} +return $this->handleException($e, $request, $type); +} +} +public function terminate(Request $request, Response $response) +{ +$this->dispatcher->dispatch(KernelEvents::TERMINATE, new PostResponseEvent($this, $request, $response)); +} +public function terminateWithException(\Exception $exception) +{ +if (!$request = $this->requestStack->getMasterRequest()) { +throw new \LogicException('Request stack is empty', 0, $exception); +} +$response = $this->handleException($exception, $request, self::MASTER_REQUEST); +$response->sendHeaders(); +$response->sendContent(); +$this->terminate($request, $response); +} +private function handleRaw(Request $request, $type = self::MASTER_REQUEST) +{ +$this->requestStack->push($request); +$event = new GetResponseEvent($this, $request, $type); +$this->dispatcher->dispatch(KernelEvents::REQUEST, $event); +if ($event->hasResponse()) { +return $this->filterResponse($event->getResponse(), $request, $type); +} +if (false === $controller = $this->resolver->getController($request)) { +throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". The route is wrongly configured.', $request->getPathInfo())); +} +$event = new FilterControllerEvent($this, $controller, $request, $type); +$this->dispatcher->dispatch(KernelEvents::CONTROLLER, $event); +$controller = $event->getController(); +$arguments = $this->argumentResolver->getArguments($request, $controller); +$event = new FilterControllerArgumentsEvent($this, $controller, $arguments, $request, $type); +$this->dispatcher->dispatch(KernelEvents::CONTROLLER_ARGUMENTS, $event); +$controller = $event->getController(); +$arguments = $event->getArguments(); +$response = call_user_func_array($controller, $arguments); +if (!$response instanceof Response) { +$event = new GetResponseForControllerResultEvent($this, $request, $type, $response); +$this->dispatcher->dispatch(KernelEvents::VIEW, $event); +if ($event->hasResponse()) { +$response = $event->getResponse(); +} +if (!$response instanceof Response) { +$msg = sprintf('The controller must return a response (%s given).', $this->varToString($response)); +if (null === $response) { +$msg .=' Did you forget to add a return statement somewhere in your controller?'; +} +throw new \LogicException($msg); +} +} +return $this->filterResponse($response, $request, $type); +} +private function filterResponse(Response $response, Request $request, $type) +{ +$event = new FilterResponseEvent($this, $request, $type, $response); +$this->dispatcher->dispatch(KernelEvents::RESPONSE, $event); +$this->finishRequest($request, $type); +return $event->getResponse(); +} +private function finishRequest(Request $request, $type) +{ +$this->dispatcher->dispatch(KernelEvents::FINISH_REQUEST, new FinishRequestEvent($this, $request, $type)); +$this->requestStack->pop(); +} +private function handleException(\Exception $e, $request, $type) +{ +$event = new GetResponseForExceptionEvent($this, $request, $type, $e); +$this->dispatcher->dispatch(KernelEvents::EXCEPTION, $event); +$e = $event->getException(); +if (!$event->hasResponse()) { +$this->finishRequest($request, $type); +throw $e; +} +$response = $event->getResponse(); +if ($response->headers->has('X-Status-Code')) { +$response->setStatusCode($response->headers->get('X-Status-Code')); +$response->headers->remove('X-Status-Code'); +} elseif (!$response->isClientError() && !$response->isServerError() && !$response->isRedirect()) { +if ($e instanceof HttpExceptionInterface) { +$response->setStatusCode($e->getStatusCode()); +$response->headers->add($e->getHeaders()); +} else { +$response->setStatusCode(500); +} +} +try { +return $this->filterResponse($response, $request, $type); +} catch (\Exception $e) { +return $response; +} +} +private function varToString($var) +{ +if (is_object($var)) { +return sprintf('Object(%s)', get_class($var)); +} +if (is_array($var)) { +$a = array(); +foreach ($var as $k => $v) { +$a[] = sprintf('%s => %s', $k, $this->varToString($v)); +} +return sprintf('Array(%s)', implode(', ', $a)); +} +if (is_resource($var)) { +return sprintf('Resource(%s)', get_resource_type($var)); +} +if (null === $var) { +return'null'; +} +if (false === $var) { +return'false'; +} +if (true === $var) { +return'true'; +} +return (string) $var; +} +} +} +namespace Symfony\Component\HttpKernel +{ +final class KernelEvents +{ +const REQUEST ='kernel.request'; +const EXCEPTION ='kernel.exception'; +const VIEW ='kernel.view'; +const CONTROLLER ='kernel.controller'; +const CONTROLLER_ARGUMENTS ='kernel.controller_arguments'; +const RESPONSE ='kernel.response'; +const TERMINATE ='kernel.terminate'; +const FINISH_REQUEST ='kernel.finish_request'; +} +} +namespace Symfony\Component\HttpKernel\Config +{ +use Symfony\Component\Config\FileLocator as BaseFileLocator; +use Symfony\Component\HttpKernel\KernelInterface; +class FileLocator extends BaseFileLocator +{ +private $kernel; +private $path; +public function __construct(KernelInterface $kernel, $path = null, array $paths = array()) +{ +$this->kernel = $kernel; +if (null !== $path) { +$this->path = $path; +$paths[] = $path; +} +parent::__construct($paths); +} +public function locate($file, $currentPath = null, $first = true) +{ +if (isset($file[0]) &&'@'=== $file[0]) { +return $this->kernel->locateResource($file, $this->path, $first); +} +return parent::locate($file, $currentPath, $first); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Controller +{ +use Symfony\Component\HttpKernel\KernelInterface; +class ControllerNameParser +{ +protected $kernel; +public function __construct(KernelInterface $kernel) +{ +$this->kernel = $kernel; +} +public function parse($controller) +{ +$parts = explode(':', $controller); +if (3 !== count($parts) || in_array('', $parts, true)) { +throw new \InvalidArgumentException(sprintf('The "%s" controller is not a valid "a:b:c" controller string.', $controller)); +} +$originalController = $controller; +list($bundle, $controller, $action) = $parts; +$controller = str_replace('/','\\', $controller); +$bundles = array(); +try { +$allBundles = $this->kernel->getBundle($bundle, false); +} catch (\InvalidArgumentException $e) { +$message = sprintf('The "%s" (from the _controller value "%s") does not exist or is not enabled in your kernel!', +$bundle, +$originalController +); +if ($alternative = $this->findAlternative($bundle)) { +$message .= sprintf(' Did you mean "%s:%s:%s"?', $alternative, $controller, $action); +} +throw new \InvalidArgumentException($message, 0, $e); +} +foreach ($allBundles as $b) { +$try = $b->getNamespace().'\\Controller\\'.$controller.'Controller'; +if (class_exists($try)) { +return $try.'::'.$action.'Action'; +} +$bundles[] = $b->getName(); +$msg = sprintf('The _controller value "%s:%s:%s" maps to a "%s" class, but this class was not found. Create this class or check the spelling of the class and its namespace.', $bundle, $controller, $action, $try); +} +if (count($bundles) > 1) { +$msg = sprintf('Unable to find controller "%s:%s" in bundles %s.', $bundle, $controller, implode(', ', $bundles)); +} +throw new \InvalidArgumentException($msg); +} +public function build($controller) +{ +if (0 === preg_match('#^(.*?\\\\Controller\\\\(.+)Controller)::(.+)Action$#', $controller, $match)) { +throw new \InvalidArgumentException(sprintf('The "%s" controller is not a valid "class::method" string.', $controller)); +} +$className = $match[1]; +$controllerName = $match[2]; +$actionName = $match[3]; +foreach ($this->kernel->getBundles() as $name => $bundle) { +if (0 !== strpos($className, $bundle->getNamespace())) { +continue; +} +return sprintf('%s:%s:%s', $name, $controllerName, $actionName); +} +throw new \InvalidArgumentException(sprintf('Unable to find a bundle that defines controller "%s".', $controller)); +} +private function findAlternative($nonExistentBundleName) +{ +$bundleNames = array_map(function ($b) { +return $b->getName(); +}, $this->kernel->getBundles()); +$alternative = null; +$shortest = null; +foreach ($bundleNames as $bundleName) { +if (false !== strpos($bundleName, $nonExistentBundleName)) { +return $bundleName; +} +$lev = levenshtein($nonExistentBundleName, $bundleName); +if ($lev <= strlen($nonExistentBundleName) / 3 && ($alternative === null || $lev < $shortest)) { +$alternative = $bundleName; +$shortest = $lev; +} +} +return $alternative; +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Controller +{ +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpKernel\Controller\ControllerResolver as BaseControllerResolver; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +class ControllerResolver extends BaseControllerResolver +{ +protected $container; +protected $parser; +public function __construct(ContainerInterface $container, ControllerNameParser $parser, LoggerInterface $logger = null) +{ +$this->container = $container; +$this->parser = $parser; +parent::__construct($logger); +} +protected function createController($controller) +{ +if (false === strpos($controller,'::')) { +$count = substr_count($controller,':'); +if (2 == $count) { +$controller = $this->parser->parse($controller); +} elseif (1 == $count) { +list($service, $method) = explode(':', $controller, 2); +return array($this->container->get($service), $method); +} elseif ($this->container->has($controller) && method_exists($service = $this->container->get($controller),'__invoke')) { +return $service; +} else { +throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller)); +} +} +return parent::createController($controller); +} +protected function instantiateController($class) +{ +if ($this->container->has($class)) { +return $this->container->get($class); +} +$controller = parent::instantiateController($class); +if ($controller instanceof ContainerAwareInterface) { +$controller->setContainer($this->container); +} +return $controller; +} +} +} +namespace Symfony\Component\Security\Http +{ +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +class Firewall implements EventSubscriberInterface +{ +private $map; +private $dispatcher; +private $exceptionListeners; +public function __construct(FirewallMapInterface $map, EventDispatcherInterface $dispatcher) +{ +$this->map = $map; +$this->dispatcher = $dispatcher; +$this->exceptionListeners = new \SplObjectStorage(); +} +public function onKernelRequest(GetResponseEvent $event) +{ +if (!$event->isMasterRequest()) { +return; +} +list($listeners, $exceptionListener) = $this->map->getListeners($event->getRequest()); +if (null !== $exceptionListener) { +$this->exceptionListeners[$event->getRequest()] = $exceptionListener; +$exceptionListener->register($this->dispatcher); +} +foreach ($listeners as $listener) { +$listener->handle($event); +if ($event->hasResponse()) { +break; +} +} +} +public function onKernelFinishRequest(FinishRequestEvent $event) +{ +$request = $event->getRequest(); +if (isset($this->exceptionListeners[$request])) { +$this->exceptionListeners[$request]->unregister($this->dispatcher); +unset($this->exceptionListeners[$request]); +} +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::REQUEST => array('onKernelRequest', 8), +KernelEvents::FINISH_REQUEST =>'onKernelFinishRequest', +); +} +} +} +namespace Symfony\Component\Security\Core\User +{ +use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; +use Symfony\Component\Security\Core\Exception\UnsupportedUserException; +interface UserProviderInterface +{ +public function loadUserByUsername($username); +public function refreshUser(UserInterface $user); +public function supportsClass($class); +} +} +namespace Symfony\Component\Security\Core\Authentication +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +use Symfony\Component\Security\Core\Exception\AuthenticationException; +interface AuthenticationManagerInterface +{ +public function authenticate(TokenInterface $token); +} +} +namespace Symfony\Component\Security\Core\Authentication +{ +use Symfony\Component\Security\Core\Event\AuthenticationFailureEvent; +use Symfony\Component\Security\Core\Event\AuthenticationEvent; +use Symfony\Component\Security\Core\AuthenticationEvents; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Security\Core\Exception\AccountStatusException; +use Symfony\Component\Security\Core\Exception\AuthenticationException; +use Symfony\Component\Security\Core\Exception\ProviderNotFoundException; +use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +class AuthenticationProviderManager implements AuthenticationManagerInterface +{ +private $providers; +private $eraseCredentials; +private $eventDispatcher; +public function __construct(array $providers, $eraseCredentials = true) +{ +if (!$providers) { +throw new \InvalidArgumentException('You must at least add one authentication provider.'); +} +foreach ($providers as $provider) { +if (!$provider instanceof AuthenticationProviderInterface) { +throw new \InvalidArgumentException(sprintf('Provider "%s" must implement the AuthenticationProviderInterface.', get_class($provider))); +} +} +$this->providers = $providers; +$this->eraseCredentials = (bool) $eraseCredentials; +} +public function setEventDispatcher(EventDispatcherInterface $dispatcher) +{ +$this->eventDispatcher = $dispatcher; +} +public function authenticate(TokenInterface $token) +{ +$lastException = null; +$result = null; +foreach ($this->providers as $provider) { +if (!$provider->supports($token)) { +continue; +} +try { +$result = $provider->authenticate($token); +if (null !== $result) { +break; +} +} catch (AccountStatusException $e) { +$e->setToken($token); +throw $e; +} catch (AuthenticationException $e) { +$lastException = $e; +} +} +if (null !== $result) { +if (true === $this->eraseCredentials) { +$result->eraseCredentials(); +} +if (null !== $this->eventDispatcher) { +$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_SUCCESS, new AuthenticationEvent($result)); +} +return $result; +} +if (null === $lastException) { +$lastException = new ProviderNotFoundException(sprintf('No Authentication Provider found for token of class "%s".', get_class($token))); +} +if (null !== $this->eventDispatcher) { +$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_FAILURE, new AuthenticationFailureEvent($token, $lastException)); +} +$lastException->setToken($token); +throw $lastException; +} +} +} +namespace Symfony\Component\Security\Core\Authentication\Token\Storage +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +interface TokenStorageInterface +{ +public function getToken(); +public function setToken(TokenInterface $token = null); +} +} +namespace Symfony\Component\Security\Core\Authentication\Token\Storage +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +class TokenStorage implements TokenStorageInterface +{ +private $token; +public function getToken() +{ +return $this->token; +} +public function setToken(TokenInterface $token = null) +{ +$this->token = $token; +} +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +interface AccessDecisionManagerInterface +{ +public function decide(TokenInterface $token, array $attributes, $object = null); +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +class AccessDecisionManager implements AccessDecisionManagerInterface +{ +const STRATEGY_AFFIRMATIVE ='affirmative'; +const STRATEGY_CONSENSUS ='consensus'; +const STRATEGY_UNANIMOUS ='unanimous'; +private $voters; +private $strategy; +private $allowIfAllAbstainDecisions; +private $allowIfEqualGrantedDeniedDecisions; +public function __construct(array $voters = array(), $strategy = self::STRATEGY_AFFIRMATIVE, $allowIfAllAbstainDecisions = false, $allowIfEqualGrantedDeniedDecisions = true) +{ +$strategyMethod ='decide'.ucfirst($strategy); +if (!is_callable(array($this, $strategyMethod))) { +throw new \InvalidArgumentException(sprintf('The strategy "%s" is not supported.', $strategy)); +} +$this->voters = $voters; +$this->strategy = $strategyMethod; +$this->allowIfAllAbstainDecisions = (bool) $allowIfAllAbstainDecisions; +$this->allowIfEqualGrantedDeniedDecisions = (bool) $allowIfEqualGrantedDeniedDecisions; +} +public function setVoters(array $voters) +{ +$this->voters = $voters; +} +public function decide(TokenInterface $token, array $attributes, $object = null) +{ +return $this->{$this->strategy}($token, $attributes, $object); +} +private function decideAffirmative(TokenInterface $token, array $attributes, $object = null) +{ +$deny = 0; +foreach ($this->voters as $voter) { +$result = $voter->vote($token, $object, $attributes); +switch ($result) { +case VoterInterface::ACCESS_GRANTED: +return true; +case VoterInterface::ACCESS_DENIED: +++$deny; +break; +default: +break; +} +} +if ($deny > 0) { +return false; +} +return $this->allowIfAllAbstainDecisions; +} +private function decideConsensus(TokenInterface $token, array $attributes, $object = null) +{ +$grant = 0; +$deny = 0; +foreach ($this->voters as $voter) { +$result = $voter->vote($token, $object, $attributes); +switch ($result) { +case VoterInterface::ACCESS_GRANTED: +++$grant; +break; +case VoterInterface::ACCESS_DENIED: +++$deny; +break; +} +} +if ($grant > $deny) { +return true; +} +if ($deny > $grant) { +return false; +} +if ($grant > 0) { +return $this->allowIfEqualGrantedDeniedDecisions; +} +return $this->allowIfAllAbstainDecisions; +} +private function decideUnanimous(TokenInterface $token, array $attributes, $object = null) +{ +$grant = 0; +foreach ($attributes as $attribute) { +foreach ($this->voters as $voter) { +$result = $voter->vote($token, $object, array($attribute)); +switch ($result) { +case VoterInterface::ACCESS_GRANTED: +++$grant; +break; +case VoterInterface::ACCESS_DENIED: +return false; +default: +break; +} +} +} +if ($grant > 0) { +return true; +} +return $this->allowIfAllAbstainDecisions; +} +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +interface AuthorizationCheckerInterface +{ +public function isGranted($attributes, $object = null); +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException; +class AuthorizationChecker implements AuthorizationCheckerInterface +{ +private $tokenStorage; +private $accessDecisionManager; +private $authenticationManager; +private $alwaysAuthenticate; +public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, AccessDecisionManagerInterface $accessDecisionManager, $alwaysAuthenticate = false) +{ +$this->tokenStorage = $tokenStorage; +$this->authenticationManager = $authenticationManager; +$this->accessDecisionManager = $accessDecisionManager; +$this->alwaysAuthenticate = $alwaysAuthenticate; +} +final public function isGranted($attributes, $object = null) +{ +if (null === ($token = $this->tokenStorage->getToken())) { +throw new AuthenticationCredentialsNotFoundException('The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL.'); +} +if ($this->alwaysAuthenticate || !$token->isAuthenticated()) { +$this->tokenStorage->setToken($token = $this->authenticationManager->authenticate($token)); +} +if (!is_array($attributes)) { +$attributes = array($attributes); +} +return $this->accessDecisionManager->decide($token, $attributes, $object); +} +} +} +namespace Symfony\Component\Security\Core\Authorization\Voter +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +interface VoterInterface +{ +const ACCESS_GRANTED = 1; +const ACCESS_ABSTAIN = 0; +const ACCESS_DENIED = -1; +public function vote(TokenInterface $token, $subject, array $attributes); +} +} +namespace Symfony\Bundle\SecurityBundle\Security +{ +final class FirewallConfig +{ +private $name; +private $userChecker; +private $requestMatcher; +private $securityEnabled; +private $stateless; +private $provider; +private $context; +private $entryPoint; +private $accessDeniedHandler; +private $accessDeniedUrl; +private $listeners; +public function __construct($name, $userChecker, $requestMatcher = null, $securityEnabled = true, $stateless = false, $provider = null, $context = null, $entryPoint = null, $accessDeniedHandler = null, $accessDeniedUrl = null, $listeners = array()) +{ +$this->name = $name; +$this->userChecker = $userChecker; +$this->requestMatcher = $requestMatcher; +$this->securityEnabled = $securityEnabled; +$this->stateless = $stateless; +$this->provider = $provider; +$this->context = $context; +$this->entryPoint = $entryPoint; +$this->accessDeniedHandler = $accessDeniedHandler; +$this->accessDeniedUrl = $accessDeniedUrl; +$this->listeners = $listeners; +} +public function getName() +{ +return $this->name; +} +public function getRequestMatcher() +{ +return $this->requestMatcher; +} +public function isSecurityEnabled() +{ +return $this->securityEnabled; +} +public function allowsAnonymous() +{ +return in_array('anonymous', $this->listeners, true); +} +public function isStateless() +{ +return $this->stateless; +} +public function getProvider() +{ +return $this->provider; +} +public function getContext() +{ +return $this->context; +} +public function getEntryPoint() +{ +return $this->entryPoint; +} +public function getUserChecker() +{ +return $this->userChecker; +} +public function getAccessDeniedHandler() +{ +return $this->accessDeniedHandler; +} +public function getAccessDeniedUrl() +{ +return $this->accessDeniedUrl; +} +public function getListeners() +{ +return $this->listeners; +} +} +} +namespace Symfony\Component\Security\Http +{ +use Symfony\Component\HttpFoundation\Request; +interface FirewallMapInterface +{ +public function getListeners(Request $request); +} +} +namespace Symfony\Bundle\SecurityBundle\Security +{ +use Symfony\Component\Security\Http\FirewallMapInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\DependencyInjection\ContainerInterface; +class FirewallMap implements FirewallMapInterface +{ +protected $container; +protected $map; +private $contexts; +public function __construct(ContainerInterface $container, array $map) +{ +$this->container = $container; +$this->map = $map; +$this->contexts = new \SplObjectStorage(); +} +public function getListeners(Request $request) +{ +$context = $this->getFirewallContext($request); +if (null === $context) { +return array(array(), null); +} +return $context->getContext(); +} +public function getFirewallConfig(Request $request) +{ +$context = $this->getFirewallContext($request); +if (null === $context) { +return; +} +return $context->getConfig(); +} +private function getFirewallContext(Request $request) +{ +if ($this->contexts->contains($request)) { +return $this->contexts[$request]; +} +foreach ($this->map as $contextId => $requestMatcher) { +if (null === $requestMatcher || $requestMatcher->matches($request)) { +return $this->contexts[$request] = $this->container->get($contextId); +} +} +} +} +} +namespace Symfony\Bundle\SecurityBundle\Security +{ +use Symfony\Component\Security\Http\Firewall\ExceptionListener; +class FirewallContext +{ +private $listeners; +private $exceptionListener; +private $config; +public function __construct(array $listeners, ExceptionListener $exceptionListener = null, FirewallConfig $config = null) +{ +$this->listeners = $listeners; +$this->exceptionListener = $exceptionListener; +$this->config = $config; +} +public function getConfig() +{ +return $this->config; +} +public function getContext() +{ +return array($this->listeners, $this->exceptionListener); +} +} +} +namespace Symfony\Component\HttpFoundation +{ +interface RequestMatcherInterface +{ +public function matches(Request $request); +} +} +namespace Symfony\Component\HttpFoundation +{ +class RequestMatcher implements RequestMatcherInterface +{ +private $path; +private $host; +private $methods = array(); +private $ips = array(); +private $attributes = array(); +private $schemes = array(); +public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = array(), $schemes = null) +{ +$this->matchPath($path); +$this->matchHost($host); +$this->matchMethod($methods); +$this->matchIps($ips); +$this->matchScheme($schemes); +foreach ($attributes as $k => $v) { +$this->matchAttribute($k, $v); +} +} +public function matchScheme($scheme) +{ +$this->schemes = null !== $scheme ? array_map('strtolower', (array) $scheme) : array(); +} +public function matchHost($regexp) +{ +$this->host = $regexp; +} +public function matchPath($regexp) +{ +$this->path = $regexp; +} +public function matchIp($ip) +{ +$this->matchIps($ip); +} +public function matchIps($ips) +{ +$this->ips = null !== $ips ? (array) $ips : array(); +} +public function matchMethod($method) +{ +$this->methods = null !== $method ? array_map('strtoupper', (array) $method) : array(); +} +public function matchAttribute($key, $regexp) +{ +$this->attributes[$key] = $regexp; +} +public function matches(Request $request) +{ +if ($this->schemes && !in_array($request->getScheme(), $this->schemes, true)) { +return false; +} +if ($this->methods && !in_array($request->getMethod(), $this->methods, true)) { +return false; +} +foreach ($this->attributes as $key => $pattern) { +if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) { +return false; +} +} +if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) { +return false; +} +if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) { +return false; +} +if (IpUtils::checkIp($request->getClientIp(), $this->ips)) { +return true; +} +return count($this->ips) === 0; +} +} +} +namespace +{ +class Twig_Environment +{ +const VERSION ='1.32.0'; +const VERSION_ID = 13200; +const MAJOR_VERSION = 1; +const MINOR_VERSION = 32; +const RELEASE_VERSION = 0; +const EXTRA_VERSION =''; +protected $charset; +protected $loader; +protected $debug; +protected $autoReload; +protected $cache; +protected $lexer; +protected $parser; +protected $compiler; +protected $baseTemplateClass; +protected $extensions; +protected $parsers; +protected $visitors; +protected $filters; +protected $tests; +protected $functions; +protected $globals; +protected $runtimeInitialized = false; +protected $extensionInitialized = false; +protected $loadedTemplates; +protected $strictVariables; +protected $unaryOperators; +protected $binaryOperators; +protected $templateClassPrefix ='__TwigTemplate_'; +protected $functionCallbacks = array(); +protected $filterCallbacks = array(); +protected $staging; +private $originalCache; +private $bcWriteCacheFile = false; +private $bcGetCacheFilename = false; +private $lastModifiedExtension = 0; +private $extensionsByClass = array(); +private $runtimeLoaders = array(); +private $runtimes = array(); +private $optionsHash; +public function __construct(Twig_LoaderInterface $loader = null, $options = array()) +{ +if (null !== $loader) { +$this->setLoader($loader); +} else { +@trigger_error('Not passing a Twig_LoaderInterface as the first constructor argument of Twig_Environment is deprecated since version 1.21.', E_USER_DEPRECATED); +} +$options = array_merge(array('debug'=> false,'charset'=>'UTF-8','base_template_class'=>'Twig_Template','strict_variables'=> false,'autoescape'=>'html','cache'=> false,'auto_reload'=> null,'optimizations'=> -1, +), $options); +$this->debug = (bool) $options['debug']; +$this->charset = strtoupper($options['charset']); +$this->baseTemplateClass = $options['base_template_class']; +$this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; +$this->strictVariables = (bool) $options['strict_variables']; +$this->setCache($options['cache']); +$this->addExtension(new Twig_Extension_Core()); +$this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); +$this->addExtension(new Twig_Extension_Optimizer($options['optimizations'])); +$this->staging = new Twig_Extension_Staging(); +if (is_string($this->originalCache)) { +$r = new ReflectionMethod($this,'writeCacheFile'); +if ($r->getDeclaringClass()->getName() !== __CLASS__) { +@trigger_error('The Twig_Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); +$this->bcWriteCacheFile = true; +} +$r = new ReflectionMethod($this,'getCacheFilename'); +if ($r->getDeclaringClass()->getName() !== __CLASS__) { +@trigger_error('The Twig_Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); +$this->bcGetCacheFilename = true; +} +} +} +public function getBaseTemplateClass() +{ +return $this->baseTemplateClass; +} +public function setBaseTemplateClass($class) +{ +$this->baseTemplateClass = $class; +$this->updateOptionsHash(); +} +public function enableDebug() +{ +$this->debug = true; +$this->updateOptionsHash(); +} +public function disableDebug() +{ +$this->debug = false; +$this->updateOptionsHash(); +} +public function isDebug() +{ +return $this->debug; +} +public function enableAutoReload() +{ +$this->autoReload = true; +} +public function disableAutoReload() +{ +$this->autoReload = false; +} +public function isAutoReload() +{ +return $this->autoReload; +} +public function enableStrictVariables() +{ +$this->strictVariables = true; +$this->updateOptionsHash(); +} +public function disableStrictVariables() +{ +$this->strictVariables = false; +$this->updateOptionsHash(); +} +public function isStrictVariables() +{ +return $this->strictVariables; +} +public function getCache($original = true) +{ +return $original ? $this->originalCache : $this->cache; +} +public function setCache($cache) +{ +if (is_string($cache)) { +$this->originalCache = $cache; +$this->cache = new Twig_Cache_Filesystem($cache); +} elseif (false === $cache) { +$this->originalCache = $cache; +$this->cache = new Twig_Cache_Null(); +} elseif (null === $cache) { +@trigger_error('Using "null" as the cache strategy is deprecated since version 1.23 and will be removed in Twig 2.0.', E_USER_DEPRECATED); +$this->originalCache = false; +$this->cache = new Twig_Cache_Null(); +} elseif ($cache instanceof Twig_CacheInterface) { +$this->originalCache = $this->cache = $cache; +} else { +throw new LogicException(sprintf('Cache can only be a string, false, or a Twig_CacheInterface implementation.')); +} +} +public function getCacheFilename($name) +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +$key = $this->cache->generateKey($name, $this->getTemplateClass($name)); +return !$key ? false : $key; +} +public function getTemplateClass($name, $index = null) +{ +$key = $this->getLoader()->getCacheKey($name).$this->optionsHash; +return $this->templateClassPrefix.hash('sha256', $key).(null === $index ?'':'_'.$index); +} +public function getTemplateClassPrefix() +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +return $this->templateClassPrefix; +} +public function render($name, array $context = array()) +{ +return $this->loadTemplate($name)->render($context); +} +public function display($name, array $context = array()) +{ +$this->loadTemplate($name)->display($context); +} +public function load($name) +{ +if ($name instanceof Twig_TemplateWrapper) { +return $name; +} +if ($name instanceof Twig_Template) { +return new Twig_TemplateWrapper($this, $name); +} +return new Twig_TemplateWrapper($this, $this->loadTemplate($name)); +} +public function loadTemplate($name, $index = null) +{ +$cls = $mainCls = $this->getTemplateClass($name); +if (null !== $index) { +$cls .='_'.$index; +} +if (isset($this->loadedTemplates[$cls])) { +return $this->loadedTemplates[$cls]; +} +if (!class_exists($cls, false)) { +if ($this->bcGetCacheFilename) { +$key = $this->getCacheFilename($name); +} else { +$key = $this->cache->generateKey($name, $mainCls); +} +if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { +$this->cache->load($key); +} +if (!class_exists($cls, false)) { +$loader = $this->getLoader(); +if (!$loader instanceof Twig_SourceContextLoaderInterface) { +$source = new Twig_Source($loader->getSource($name), $name); +} else { +$source = $loader->getSourceContext($name); +} +$content = $this->compileSource($source); +if ($this->bcWriteCacheFile) { +$this->writeCacheFile($key, $content); +} else { +$this->cache->write($key, $content); +$this->cache->load($key); +} +if (!class_exists($mainCls, false)) { +eval('?>'.$content); +} +} +if (!class_exists($cls, false)) { +throw new Twig_Error_Runtime(sprintf('Failed to load Twig template "%s", index "%s": cache is corrupted.', $name, $index), -1, $source); +} +} +if (!$this->runtimeInitialized) { +$this->initRuntime(); +} +return $this->loadedTemplates[$cls] = new $cls($this); +} +public function createTemplate($template) +{ +$name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false)); +$loader = new Twig_Loader_Chain(array( +new Twig_Loader_Array(array($name => $template)), +$current = $this->getLoader(), +)); +$this->setLoader($loader); +try { +$template = $this->loadTemplate($name); +} catch (Exception $e) { +$this->setLoader($current); +throw $e; +} catch (Throwable $e) { +$this->setLoader($current); +throw $e; +} +$this->setLoader($current); +return $template; +} +public function isTemplateFresh($name, $time) +{ +if (0 === $this->lastModifiedExtension) { +foreach ($this->extensions as $extension) { +$r = new ReflectionObject($extension); +if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) { +$this->lastModifiedExtension = $extensionTime; +} +} +} +return $this->lastModifiedExtension <= $time && $this->getLoader()->isFresh($name, $time); +} +public function resolveTemplate($names) +{ +if (!is_array($names)) { +$names = array($names); +} +foreach ($names as $name) { +if ($name instanceof Twig_Template) { +return $name; +} +try { +return $this->loadTemplate($name); +} catch (Twig_Error_Loader $e) { +} +} +if (1 === count($names)) { +throw $e; +} +throw new Twig_Error_Loader(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); +} +public function clearTemplateCache() +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.18.3 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +$this->loadedTemplates = array(); +} +public function clearCacheFiles() +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +if (is_string($this->originalCache)) { +foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->originalCache), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { +if ($file->isFile()) { +@unlink($file->getPathname()); +} +} +} +} +public function getLexer() +{ +@trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); +if (null === $this->lexer) { +$this->lexer = new Twig_Lexer($this); +} +return $this->lexer; +} +public function setLexer(Twig_LexerInterface $lexer) +{ +$this->lexer = $lexer; +} +public function tokenize($source, $name = null) +{ +if (!$source instanceof Twig_Source) { +@trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); +$source = new Twig_Source($source, $name); +} +if (null === $this->lexer) { +$this->lexer = new Twig_Lexer($this); +} +return $this->lexer->tokenize($source); +} +public function getParser() +{ +@trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); +if (null === $this->parser) { +$this->parser = new Twig_Parser($this); +} +return $this->parser; +} +public function setParser(Twig_ParserInterface $parser) +{ +$this->parser = $parser; +} +public function parse(Twig_TokenStream $stream) +{ +if (null === $this->parser) { +$this->parser = new Twig_Parser($this); +} +return $this->parser->parse($stream); +} +public function getCompiler() +{ +@trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); +if (null === $this->compiler) { +$this->compiler = new Twig_Compiler($this); +} +return $this->compiler; +} +public function setCompiler(Twig_CompilerInterface $compiler) +{ +$this->compiler = $compiler; +} +public function compile(Twig_NodeInterface $node) +{ +if (null === $this->compiler) { +$this->compiler = new Twig_Compiler($this); +} +return $this->compiler->compile($node)->getSource(); +} +public function compileSource($source, $name = null) +{ +if (!$source instanceof Twig_Source) { +@trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); +$source = new Twig_Source($source, $name); +} +try { +return $this->compile($this->parse($this->tokenize($source))); +} catch (Twig_Error $e) { +$e->setSourceContext($source); +throw $e; +} catch (Exception $e) { +throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e); +} +} +public function setLoader(Twig_LoaderInterface $loader) +{ +if (!$loader instanceof Twig_SourceContextLoaderInterface && 0 !== strpos(get_class($loader),'Mock_Twig_LoaderInterface')) { +@trigger_error(sprintf('Twig loader "%s" should implement Twig_SourceContextLoaderInterface since version 1.27.', get_class($loader)), E_USER_DEPRECATED); +} +$this->loader = $loader; +} +public function getLoader() +{ +if (null === $this->loader) { +throw new LogicException('You must set a loader first.'); +} +return $this->loader; +} +public function setCharset($charset) +{ +$this->charset = strtoupper($charset); +} +public function getCharset() +{ +return $this->charset; +} +public function initRuntime() +{ +$this->runtimeInitialized = true; +foreach ($this->getExtensions() as $name => $extension) { +if (!$extension instanceof Twig_Extension_InitRuntimeInterface) { +$m = new ReflectionMethod($extension,'initRuntime'); +if ('Twig_Extension'!== $m->getDeclaringClass()->getName()) { +@trigger_error(sprintf('Defining the initRuntime() method in the "%s" extension is deprecated since version 1.23. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended).', $name), E_USER_DEPRECATED); +} +} +$extension->initRuntime($this); +} +} +public function hasExtension($class) +{ +$class = ltrim($class,'\\'); +if (isset($this->extensions[$class])) { +if ($class !== get_class($this->extensions[$class])) { +@trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); +} +return true; +} +return isset($this->extensionsByClass[$class]); +} +public function addRuntimeLoader(Twig_RuntimeLoaderInterface $loader) +{ +$this->runtimeLoaders[] = $loader; +} +public function getExtension($class) +{ +$class = ltrim($class,'\\'); +if (isset($this->extensions[$class])) { +if ($class !== get_class($this->extensions[$class])) { +@trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); +} +return $this->extensions[$class]; +} +if (!isset($this->extensionsByClass[$class])) { +throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $class)); +} +return $this->extensionsByClass[$class]; +} +public function getRuntime($class) +{ +if (isset($this->runtimes[$class])) { +return $this->runtimes[$class]; +} +foreach ($this->runtimeLoaders as $loader) { +if (null !== $runtime = $loader->load($class)) { +return $this->runtimes[$class] = $runtime; +} +} +throw new Twig_Error_Runtime(sprintf('Unable to load the "%s" runtime.', $class)); +} +public function addExtension(Twig_ExtensionInterface $extension) +{ +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName())); +} +$class = get_class($extension); +if ($class !== $extension->getName()) { +if (isset($this->extensions[$extension->getName()])) { +unset($this->extensions[$extension->getName()], $this->extensionsByClass[$class]); +@trigger_error(sprintf('The possibility to register the same extension twice ("%s") is deprecated since version 1.23 and will be removed in Twig 2.0. Use proper PHP inheritance instead.', $extension->getName()), E_USER_DEPRECATED); +} +} +$this->lastModifiedExtension = 0; +$this->extensionsByClass[$class] = $extension; +$this->extensions[$extension->getName()] = $extension; +$this->updateOptionsHash(); +} +public function removeExtension($name) +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.12 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name)); +} +$class = ltrim($name,'\\'); +if (isset($this->extensions[$class])) { +if ($class !== get_class($this->extensions[$class])) { +@trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); +} +unset($this->extensions[$class]); +} +unset($this->extensions[$class]); +$this->updateOptionsHash(); +} +public function setExtensions(array $extensions) +{ +foreach ($extensions as $extension) { +$this->addExtension($extension); +} +} +public function getExtensions() +{ +return $this->extensions; +} +public function addTokenParser(Twig_TokenParserInterface $parser) +{ +if ($this->extensionInitialized) { +throw new LogicException('Unable to add a token parser as extensions have already been initialized.'); +} +$this->staging->addTokenParser($parser); +} +public function getTokenParsers() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->parsers; +} +public function getTags() +{ +$tags = array(); +foreach ($this->getTokenParsers()->getParsers() as $parser) { +if ($parser instanceof Twig_TokenParserInterface) { +$tags[$parser->getTag()] = $parser; +} +} +return $tags; +} +public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) +{ +if ($this->extensionInitialized) { +throw new LogicException('Unable to add a node visitor as extensions have already been initialized.'); +} +$this->staging->addNodeVisitor($visitor); +} +public function getNodeVisitors() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->visitors; +} +public function addFilter($name, $filter = null) +{ +if (!$name instanceof Twig_SimpleFilter && !($filter instanceof Twig_SimpleFilter || $filter instanceof Twig_FilterInterface)) { +throw new LogicException('A filter must be an instance of Twig_FilterInterface or Twig_SimpleFilter.'); +} +if ($name instanceof Twig_SimpleFilter) { +$filter = $name; +$name = $filter->getName(); +} else { +@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED); +} +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name)); +} +$this->staging->addFilter($name, $filter); +} +public function getFilter($name) +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +if (isset($this->filters[$name])) { +return $this->filters[$name]; +} +foreach ($this->filters as $pattern => $filter) { +$pattern = str_replace('\\*','(.*?)', preg_quote($pattern,'#'), $count); +if ($count) { +if (preg_match('#^'.$pattern.'$#', $name, $matches)) { +array_shift($matches); +$filter->setArguments($matches); +return $filter; +} +} +} +foreach ($this->filterCallbacks as $callback) { +if (false !== $filter = call_user_func($callback, $name)) { +return $filter; +} +} +return false; +} +public function registerUndefinedFilterCallback($callable) +{ +$this->filterCallbacks[] = $callable; +} +public function getFilters() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->filters; +} +public function addTest($name, $test = null) +{ +if (!$name instanceof Twig_SimpleTest && !($test instanceof Twig_SimpleTest || $test instanceof Twig_TestInterface)) { +throw new LogicException('A test must be an instance of Twig_TestInterface or Twig_SimpleTest.'); +} +if ($name instanceof Twig_SimpleTest) { +$test = $name; +$name = $test->getName(); +} else { +@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED); +} +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name)); +} +$this->staging->addTest($name, $test); +} +public function getTests() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->tests; +} +public function getTest($name) +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +if (isset($this->tests[$name])) { +return $this->tests[$name]; +} +return false; +} +public function addFunction($name, $function = null) +{ +if (!$name instanceof Twig_SimpleFunction && !($function instanceof Twig_SimpleFunction || $function instanceof Twig_FunctionInterface)) { +throw new LogicException('A function must be an instance of Twig_FunctionInterface or Twig_SimpleFunction.'); +} +if ($name instanceof Twig_SimpleFunction) { +$function = $name; +$name = $function->getName(); +} else { +@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED); +} +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name)); +} +$this->staging->addFunction($name, $function); +} +public function getFunction($name) +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +if (isset($this->functions[$name])) { +return $this->functions[$name]; +} +foreach ($this->functions as $pattern => $function) { +$pattern = str_replace('\\*','(.*?)', preg_quote($pattern,'#'), $count); +if ($count) { +if (preg_match('#^'.$pattern.'$#', $name, $matches)) { +array_shift($matches); +$function->setArguments($matches); +return $function; +} +} +} +foreach ($this->functionCallbacks as $callback) { +if (false !== $function = call_user_func($callback, $name)) { +return $function; +} +} +return false; +} +public function registerUndefinedFunctionCallback($callable) +{ +$this->functionCallbacks[] = $callable; +} +public function getFunctions() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->functions; +} +public function addGlobal($name, $value) +{ +if ($this->extensionInitialized || $this->runtimeInitialized) { +if (null === $this->globals) { +$this->globals = $this->initGlobals(); +} +if (!array_key_exists($name, $this->globals)) { +@trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated since version 1.21.', $name), E_USER_DEPRECATED); +} +} +if ($this->extensionInitialized || $this->runtimeInitialized) { +$this->globals[$name] = $value; +} else { +$this->staging->addGlobal($name, $value); +} +} +public function getGlobals() +{ +if (!$this->runtimeInitialized && !$this->extensionInitialized) { +return $this->initGlobals(); +} +if (null === $this->globals) { +$this->globals = $this->initGlobals(); +} +return $this->globals; +} +public function mergeGlobals(array $context) +{ +foreach ($this->getGlobals() as $key => $value) { +if (!array_key_exists($key, $context)) { +$context[$key] = $value; +} +} +return $context; +} +public function getUnaryOperators() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->unaryOperators; +} +public function getBinaryOperators() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->binaryOperators; +} +public function computeAlternatives($name, $items) +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.23 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +return Twig_Error_Syntax::computeAlternatives($name, $items); +} +protected function initGlobals() +{ +$globals = array(); +foreach ($this->extensions as $name => $extension) { +if (!$extension instanceof Twig_Extension_GlobalsInterface) { +$m = new ReflectionMethod($extension,'getGlobals'); +if ('Twig_Extension'!== $m->getDeclaringClass()->getName()) { +@trigger_error(sprintf('Defining the getGlobals() method in the "%s" extension without explicitly implementing Twig_Extension_GlobalsInterface is deprecated since version 1.23.', $name), E_USER_DEPRECATED); +} +} +$extGlob = $extension->getGlobals(); +if (!is_array($extGlob)) { +throw new UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', get_class($extension))); +} +$globals[] = $extGlob; +} +$globals[] = $this->staging->getGlobals(); +return call_user_func_array('array_merge', $globals); +} +protected function initExtensions() +{ +if ($this->extensionInitialized) { +return; +} +$this->parsers = new Twig_TokenParserBroker(array(), array(), false); +$this->filters = array(); +$this->functions = array(); +$this->tests = array(); +$this->visitors = array(); +$this->unaryOperators = array(); +$this->binaryOperators = array(); +foreach ($this->extensions as $extension) { +$this->initExtension($extension); +} +$this->initExtension($this->staging); +$this->extensionInitialized = true; +} +protected function initExtension(Twig_ExtensionInterface $extension) +{ +foreach ($extension->getFilters() as $name => $filter) { +if ($filter instanceof Twig_SimpleFilter) { +$name = $filter->getName(); +} else { +@trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated since version 1.21. Use Twig_SimpleFilter instead.', get_class($filter), $name), E_USER_DEPRECATED); +} +$this->filters[$name] = $filter; +} +foreach ($extension->getFunctions() as $name => $function) { +if ($function instanceof Twig_SimpleFunction) { +$name = $function->getName(); +} else { +@trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated since version 1.21. Use Twig_SimpleFunction instead.', get_class($function), $name), E_USER_DEPRECATED); +} +$this->functions[$name] = $function; +} +foreach ($extension->getTests() as $name => $test) { +if ($test instanceof Twig_SimpleTest) { +$name = $test->getName(); +} else { +@trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated since version 1.21. Use Twig_SimpleTest instead.', get_class($test), $name), E_USER_DEPRECATED); +} +$this->tests[$name] = $test; +} +foreach ($extension->getTokenParsers() as $parser) { +if ($parser instanceof Twig_TokenParserInterface) { +$this->parsers->addTokenParser($parser); +} elseif ($parser instanceof Twig_TokenParserBrokerInterface) { +@trigger_error('Registering a Twig_TokenParserBrokerInterface instance is deprecated since version 1.21.', E_USER_DEPRECATED); +$this->parsers->addTokenParserBroker($parser); +} else { +throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances.'); +} +} +foreach ($extension->getNodeVisitors() as $visitor) { +$this->visitors[] = $visitor; +} +if ($operators = $extension->getOperators()) { +if (!is_array($operators)) { +throw new InvalidArgumentException(sprintf('"%s::getOperators()" must return an array with operators, got "%s".', get_class($extension), is_object($operators) ? get_class($operators) : gettype($operators).(is_resource($operators) ?'':'#'.$operators))); +} +if (2 !== count($operators)) { +throw new InvalidArgumentException(sprintf('"%s::getOperators()" must return an array of 2 elements, got %d.', get_class($extension), count($operators))); +} +$this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); +$this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); +} +} +protected function writeCacheFile($file, $content) +{ +$this->cache->write($file, $content); +} +private function updateOptionsHash() +{ +$hashParts = array_merge( +array_keys($this->extensions), +array( +(int) function_exists('twig_template_get_attributes'), +PHP_MAJOR_VERSION, +PHP_MINOR_VERSION, +self::VERSION, +(int) $this->debug, +$this->baseTemplateClass, +(int) $this->strictVariables, +) +); +$this->optionsHash = implode(':', $hashParts); +} +} +} +namespace +{ +interface Twig_ExtensionInterface +{ +public function initRuntime(Twig_Environment $environment); +public function getTokenParsers(); +public function getNodeVisitors(); +public function getFilters(); +public function getTests(); +public function getFunctions(); +public function getOperators(); +public function getGlobals(); +public function getName(); +} +} +namespace +{ +abstract class Twig_Extension implements Twig_ExtensionInterface +{ +public function initRuntime(Twig_Environment $environment) +{ +} +public function getTokenParsers() +{ +return array(); +} +public function getNodeVisitors() +{ +return array(); +} +public function getFilters() +{ +return array(); +} +public function getTests() +{ +return array(); +} +public function getFunctions() +{ +return array(); +} +public function getOperators() +{ +return array(); +} +public function getGlobals() +{ +return array(); +} +public function getName() +{ +return get_class($this); +} +} +} +namespace +{ +if (!defined('ENT_SUBSTITUTE')) { +define('ENT_SUBSTITUTE', 0); +} +class Twig_Extension_Core extends Twig_Extension +{ +protected $dateFormats = array('F j, Y H:i','%d days'); +protected $numberFormat = array(0,'.',','); +protected $timezone = null; +protected $escapers = array(); +public function setEscaper($strategy, $callable) +{ +$this->escapers[$strategy] = $callable; +} +public function getEscapers() +{ +return $this->escapers; +} +public function setDateFormat($format = null, $dateIntervalFormat = null) +{ +if (null !== $format) { +$this->dateFormats[0] = $format; +} +if (null !== $dateIntervalFormat) { +$this->dateFormats[1] = $dateIntervalFormat; +} +} +public function getDateFormat() +{ +return $this->dateFormats; +} +public function setTimezone($timezone) +{ +$this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); +} +public function getTimezone() +{ +if (null === $this->timezone) { +$this->timezone = new DateTimeZone(date_default_timezone_get()); +} +return $this->timezone; +} +public function setNumberFormat($decimal, $decimalPoint, $thousandSep) +{ +$this->numberFormat = array($decimal, $decimalPoint, $thousandSep); +} +public function getNumberFormat() +{ +return $this->numberFormat; +} +public function getTokenParsers() +{ +return array( +new Twig_TokenParser_For(), +new Twig_TokenParser_If(), +new Twig_TokenParser_Extends(), +new Twig_TokenParser_Include(), +new Twig_TokenParser_Block(), +new Twig_TokenParser_Use(), +new Twig_TokenParser_Filter(), +new Twig_TokenParser_Macro(), +new Twig_TokenParser_Import(), +new Twig_TokenParser_From(), +new Twig_TokenParser_Set(), +new Twig_TokenParser_Spaceless(), +new Twig_TokenParser_Flush(), +new Twig_TokenParser_Do(), +new Twig_TokenParser_Embed(), +new Twig_TokenParser_With(), +); +} +public function getFilters() +{ +$filters = array( +new Twig_SimpleFilter('date','twig_date_format_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('date_modify','twig_date_modify_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('format','sprintf'), +new Twig_SimpleFilter('replace','twig_replace_filter'), +new Twig_SimpleFilter('number_format','twig_number_format_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('abs','abs'), +new Twig_SimpleFilter('round','twig_round'), +new Twig_SimpleFilter('url_encode','twig_urlencode_filter'), +new Twig_SimpleFilter('json_encode','twig_jsonencode_filter'), +new Twig_SimpleFilter('convert_encoding','twig_convert_encoding'), +new Twig_SimpleFilter('title','twig_title_string_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('capitalize','twig_capitalize_string_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('upper','strtoupper'), +new Twig_SimpleFilter('lower','strtolower'), +new Twig_SimpleFilter('striptags','strip_tags'), +new Twig_SimpleFilter('trim','twig_trim_filter'), +new Twig_SimpleFilter('nl2br','nl2br', array('pre_escape'=>'html','is_safe'=> array('html'))), +new Twig_SimpleFilter('join','twig_join_filter'), +new Twig_SimpleFilter('split','twig_split_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('sort','twig_sort_filter'), +new Twig_SimpleFilter('merge','twig_array_merge'), +new Twig_SimpleFilter('batch','twig_array_batch'), +new Twig_SimpleFilter('reverse','twig_reverse_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('length','twig_length_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('slice','twig_slice', array('needs_environment'=> true)), +new Twig_SimpleFilter('first','twig_first', array('needs_environment'=> true)), +new Twig_SimpleFilter('last','twig_last', array('needs_environment'=> true)), +new Twig_SimpleFilter('default','_twig_default_filter', array('node_class'=>'Twig_Node_Expression_Filter_Default')), +new Twig_SimpleFilter('keys','twig_get_array_keys_filter'), +new Twig_SimpleFilter('escape','twig_escape_filter', array('needs_environment'=> true,'is_safe_callback'=>'twig_escape_filter_is_safe')), +new Twig_SimpleFilter('e','twig_escape_filter', array('needs_environment'=> true,'is_safe_callback'=>'twig_escape_filter_is_safe')), +); +if (function_exists('mb_get_info')) { +$filters[] = new Twig_SimpleFilter('upper','twig_upper_filter', array('needs_environment'=> true)); +$filters[] = new Twig_SimpleFilter('lower','twig_lower_filter', array('needs_environment'=> true)); +} +return $filters; +} +public function getFunctions() +{ +return array( +new Twig_SimpleFunction('max','max'), +new Twig_SimpleFunction('min','min'), +new Twig_SimpleFunction('range','range'), +new Twig_SimpleFunction('constant','twig_constant'), +new Twig_SimpleFunction('cycle','twig_cycle'), +new Twig_SimpleFunction('random','twig_random', array('needs_environment'=> true)), +new Twig_SimpleFunction('date','twig_date_converter', array('needs_environment'=> true)), +new Twig_SimpleFunction('include','twig_include', array('needs_environment'=> true,'needs_context'=> true,'is_safe'=> array('all'))), +new Twig_SimpleFunction('source','twig_source', array('needs_environment'=> true,'is_safe'=> array('all'))), +); +} +public function getTests() +{ +return array( +new Twig_SimpleTest('even', null, array('node_class'=>'Twig_Node_Expression_Test_Even')), +new Twig_SimpleTest('odd', null, array('node_class'=>'Twig_Node_Expression_Test_Odd')), +new Twig_SimpleTest('defined', null, array('node_class'=>'Twig_Node_Expression_Test_Defined')), +new Twig_SimpleTest('sameas', null, array('node_class'=>'Twig_Node_Expression_Test_Sameas','deprecated'=>'1.21','alternative'=>'same as')), +new Twig_SimpleTest('same as', null, array('node_class'=>'Twig_Node_Expression_Test_Sameas')), +new Twig_SimpleTest('none', null, array('node_class'=>'Twig_Node_Expression_Test_Null')), +new Twig_SimpleTest('null', null, array('node_class'=>'Twig_Node_Expression_Test_Null')), +new Twig_SimpleTest('divisibleby', null, array('node_class'=>'Twig_Node_Expression_Test_Divisibleby','deprecated'=>'1.21','alternative'=>'divisible by')), +new Twig_SimpleTest('divisible by', null, array('node_class'=>'Twig_Node_Expression_Test_Divisibleby')), +new Twig_SimpleTest('constant', null, array('node_class'=>'Twig_Node_Expression_Test_Constant')), +new Twig_SimpleTest('empty','twig_test_empty'), +new Twig_SimpleTest('iterable','twig_test_iterable'), +); +} +public function getOperators() +{ +return array( +array('not'=> array('precedence'=> 50,'class'=>'Twig_Node_Expression_Unary_Not'),'-'=> array('precedence'=> 500,'class'=>'Twig_Node_Expression_Unary_Neg'),'+'=> array('precedence'=> 500,'class'=>'Twig_Node_Expression_Unary_Pos'), +), +array('or'=> array('precedence'=> 10,'class'=>'Twig_Node_Expression_Binary_Or','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'and'=> array('precedence'=> 15,'class'=>'Twig_Node_Expression_Binary_And','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-or'=> array('precedence'=> 16,'class'=>'Twig_Node_Expression_Binary_BitwiseOr','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-xor'=> array('precedence'=> 17,'class'=>'Twig_Node_Expression_Binary_BitwiseXor','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-and'=> array('precedence'=> 18,'class'=>'Twig_Node_Expression_Binary_BitwiseAnd','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'=='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Equal','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'!='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_NotEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'<'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Less','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'>'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Greater','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'>='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_GreaterEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'<='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_LessEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'not in'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_NotIn','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'in'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_In','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'matches'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Matches','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'starts with'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_StartsWith','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'ends with'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_EndsWith','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'..'=> array('precedence'=> 25,'class'=>'Twig_Node_Expression_Binary_Range','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'+'=> array('precedence'=> 30,'class'=>'Twig_Node_Expression_Binary_Add','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'-'=> array('precedence'=> 30,'class'=>'Twig_Node_Expression_Binary_Sub','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'~'=> array('precedence'=> 40,'class'=>'Twig_Node_Expression_Binary_Concat','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'*'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Mul','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'/'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Div','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'//'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_FloorDiv','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'%'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Mod','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'is'=> array('precedence'=> 100,'associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'is not'=> array('precedence'=> 100,'associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'**'=> array('precedence'=> 200,'class'=>'Twig_Node_Expression_Binary_Power','associativity'=> Twig_ExpressionParser::OPERATOR_RIGHT),'??'=> array('precedence'=> 300,'class'=>'Twig_Node_Expression_NullCoalesce','associativity'=> Twig_ExpressionParser::OPERATOR_RIGHT), +), +); +} +public function getName() +{ +return'core'; +} +} +function twig_cycle($values, $position) +{ +if (!is_array($values) && !$values instanceof ArrayAccess) { +return $values; +} +return $values[$position % count($values)]; +} +function twig_random(Twig_Environment $env, $values = null) +{ +if (null === $values) { +return mt_rand(); +} +if (is_int($values) || is_float($values)) { +return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values); +} +if ($values instanceof Traversable) { +$values = iterator_to_array($values); +} elseif (is_string($values)) { +if (''=== $values) { +return''; +} +if (null !== $charset = $env->getCharset()) { +if ('UTF-8'!== $charset) { +$values = twig_convert_encoding($values,'UTF-8', $charset); +} +$values = preg_split('/(? $value) { +$values[$i] = twig_convert_encoding($value, $charset,'UTF-8'); +} +} +} else { +return $values[mt_rand(0, strlen($values) - 1)]; +} +} +if (!is_array($values)) { +return $values; +} +if (0 === count($values)) { +throw new Twig_Error_Runtime('The random function cannot pick from an empty array.'); +} +return $values[array_rand($values, 1)]; +} +function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $timezone = null) +{ +if (null === $format) { +$formats = $env->getExtension('Twig_Extension_Core')->getDateFormat(); +$format = $date instanceof DateInterval ? $formats[1] : $formats[0]; +} +if ($date instanceof DateInterval) { +return $date->format($format); +} +return twig_date_converter($env, $date, $timezone)->format($format); +} +function twig_date_modify_filter(Twig_Environment $env, $date, $modifier) +{ +$date = twig_date_converter($env, $date, false); +$resultDate = $date->modify($modifier); +return null === $resultDate ? $date : $resultDate; +} +function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null) +{ +if (false !== $timezone) { +if (null === $timezone) { +$timezone = $env->getExtension('Twig_Extension_Core')->getTimezone(); +} elseif (!$timezone instanceof DateTimeZone) { +$timezone = new DateTimeZone($timezone); +} +} +if ($date instanceof DateTimeImmutable) { +return false !== $timezone ? $date->setTimezone($timezone) : $date; +} +if ($date instanceof DateTime || $date instanceof DateTimeInterface) { +$date = clone $date; +if (false !== $timezone) { +$date->setTimezone($timezone); +} +return $date; +} +if (null === $date ||'now'=== $date) { +return new DateTime($date, false !== $timezone ? $timezone : $env->getExtension('Twig_Extension_Core')->getTimezone()); +} +$asString = (string) $date; +if (ctype_digit($asString) || (!empty($asString) &&'-'=== $asString[0] && ctype_digit(substr($asString, 1)))) { +$date = new DateTime('@'.$date); +} else { +$date = new DateTime($date, $env->getExtension('Twig_Extension_Core')->getTimezone()); +} +if (false !== $timezone) { +$date->setTimezone($timezone); +} +return $date; +} +function twig_replace_filter($str, $from, $to = null) +{ +if ($from instanceof Traversable) { +$from = iterator_to_array($from); +} elseif (is_string($from) && is_string($to)) { +@trigger_error('Using "replace" with character by character replacement is deprecated since version 1.22 and will be removed in Twig 2.0', E_USER_DEPRECATED); +return strtr($str, $from, $to); +} elseif (!is_array($from)) { +throw new Twig_Error_Runtime(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".', is_object($from) ? get_class($from) : gettype($from))); +} +return strtr($str, $from); +} +function twig_round($value, $precision = 0, $method ='common') +{ +if ('common'== $method) { +return round($value, $precision); +} +if ('ceil'!= $method &&'floor'!= $method) { +throw new Twig_Error_Runtime('The round filter only supports the "common", "ceil", and "floor" methods.'); +} +return $method($value * pow(10, $precision)) / pow(10, $precision); +} +function twig_number_format_filter(Twig_Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) +{ +$defaults = $env->getExtension('Twig_Extension_Core')->getNumberFormat(); +if (null === $decimal) { +$decimal = $defaults[0]; +} +if (null === $decimalPoint) { +$decimalPoint = $defaults[1]; +} +if (null === $thousandSep) { +$thousandSep = $defaults[2]; +} +return number_format((float) $number, $decimal, $decimalPoint, $thousandSep); +} +function twig_urlencode_filter($url) +{ +if (is_array($url)) { +if (defined('PHP_QUERY_RFC3986')) { +return http_build_query($url,'','&', PHP_QUERY_RFC3986); +} +return http_build_query($url,'','&'); +} +return rawurlencode($url); +} +if (PHP_VERSION_ID < 50300) { +function twig_jsonencode_filter($value, $options = 0) +{ +if ($value instanceof Twig_Markup) { +$value = (string) $value; +} elseif (is_array($value)) { +array_walk_recursive($value,'_twig_markup2string'); +} +return json_encode($value); +} +} else { +function twig_jsonencode_filter($value, $options = 0) +{ +if ($value instanceof Twig_Markup) { +$value = (string) $value; +} elseif (is_array($value)) { +array_walk_recursive($value,'_twig_markup2string'); +} +return json_encode($value, $options); +} +} +function _twig_markup2string(&$value) +{ +if ($value instanceof Twig_Markup) { +$value = (string) $value; +} +} +function twig_array_merge($arr1, $arr2) +{ +if ($arr1 instanceof Traversable) { +$arr1 = iterator_to_array($arr1); +} elseif (!is_array($arr1)) { +throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', gettype($arr1))); +} +if ($arr2 instanceof Traversable) { +$arr2 = iterator_to_array($arr2); +} elseif (!is_array($arr2)) { +throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', gettype($arr2))); +} +return array_merge($arr1, $arr2); +} +function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false) +{ +if ($item instanceof Traversable) { +while ($item instanceof IteratorAggregate) { +$item = $item->getIterator(); +} +if ($start >= 0 && $length >= 0 && $item instanceof Iterator) { +try { +return iterator_to_array(new LimitIterator($item, $start, $length === null ? -1 : $length), $preserveKeys); +} catch (OutOfBoundsException $exception) { +return array(); +} +} +$item = iterator_to_array($item, $preserveKeys); +} +if (is_array($item)) { +return array_slice($item, $start, $length, $preserveKeys); +} +$item = (string) $item; +if (function_exists('mb_get_info') && null !== $charset = $env->getCharset()) { +return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset); +} +return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length)); +} +function twig_first(Twig_Environment $env, $item) +{ +$elements = twig_slice($env, $item, 0, 1, false); +return is_string($elements) ? $elements : current($elements); +} +function twig_last(Twig_Environment $env, $item) +{ +$elements = twig_slice($env, $item, -1, 1, false); +return is_string($elements) ? $elements : current($elements); +} +function twig_join_filter($value, $glue ='') +{ +if ($value instanceof Traversable) { +$value = iterator_to_array($value, false); +} +return implode($glue, (array) $value); +} +function twig_split_filter(Twig_Environment $env, $value, $delimiter, $limit = null) +{ +if (!empty($delimiter)) { +return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); +} +if (!function_exists('mb_get_info') || null === $charset = $env->getCharset()) { +return str_split($value, null === $limit ? 1 : $limit); +} +if ($limit <= 1) { +return preg_split('/(?getIterator(); +} +if ($array instanceof Iterator) { +$keys = array(); +$array->rewind(); +while ($array->valid()) { +$keys[] = $array->key(); +$array->next(); +} +return $keys; +} +$keys = array(); +foreach ($array as $key => $item) { +$keys[] = $key; +} +return $keys; +} +if (!is_array($array)) { +return array(); +} +return array_keys($array); +} +function twig_reverse_filter(Twig_Environment $env, $item, $preserveKeys = false) +{ +if ($item instanceof Traversable) { +return array_reverse(iterator_to_array($item), $preserveKeys); +} +if (is_array($item)) { +return array_reverse($item, $preserveKeys); +} +if (null !== $charset = $env->getCharset()) { +$string = (string) $item; +if ('UTF-8'!== $charset) { +$item = twig_convert_encoding($string,'UTF-8', $charset); +} +preg_match_all('/./us', $item, $matches); +$string = implode('', array_reverse($matches[0])); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +} +return strrev((string) $item); +} +function twig_sort_filter($array) +{ +if ($array instanceof Traversable) { +$array = iterator_to_array($array); +} elseif (!is_array($array)) { +throw new Twig_Error_Runtime(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', gettype($array))); +} +asort($array); +return $array; +} +function twig_in_filter($value, $compare) +{ +if (is_array($compare)) { +return in_array($value, $compare, is_object($value) || is_resource($value)); +} elseif (is_string($compare) && (is_string($value) || is_int($value) || is_float($value))) { +return''=== $value || false !== strpos($compare, (string) $value); +} elseif ($compare instanceof Traversable) { +if (is_object($value) || is_resource($value)) { +foreach ($compare as $item) { +if ($item === $value) { +return true; +} +} +} else { +foreach ($compare as $item) { +if ($item == $value) { +return true; +} +} +} +return false; +} +return false; +} +function twig_trim_filter($string, $characterMask = null, $side ='both') +{ +if (null === $characterMask) { +$characterMask =" \t\n\r\0\x0B"; +} +switch ($side) { +case'both': +return trim($string, $characterMask); +case'left': +return ltrim($string, $characterMask); +case'right': +return rtrim($string, $characterMask); +default: +throw new Twig_Error_Runtime('Trimming side must be "left", "right" or "both".'); +} +} +function twig_escape_filter(Twig_Environment $env, $string, $strategy ='html', $charset = null, $autoescape = false) +{ +if ($autoescape && $string instanceof Twig_Markup) { +return $string; +} +if (!is_string($string)) { +if (is_object($string) && method_exists($string,'__toString')) { +$string = (string) $string; +} elseif (in_array($strategy, array('html','js','css','html_attr','url'))) { +return $string; +} +} +if (null === $charset) { +$charset = $env->getCharset(); +} +switch ($strategy) { +case'html': +static $htmlspecialcharsCharsets; +if (null === $htmlspecialcharsCharsets) { +if (defined('HHVM_VERSION')) { +$htmlspecialcharsCharsets = array('utf-8'=> true,'UTF-8'=> true); +} else { +$htmlspecialcharsCharsets = array('ISO-8859-1'=> true,'ISO8859-1'=> true,'ISO-8859-15'=> true,'ISO8859-15'=> true,'utf-8'=> true,'UTF-8'=> true,'CP866'=> true,'IBM866'=> true,'866'=> true,'CP1251'=> true,'WINDOWS-1251'=> true,'WIN-1251'=> true,'1251'=> true,'CP1252'=> true,'WINDOWS-1252'=> true,'1252'=> true,'KOI8-R'=> true,'KOI8-RU'=> true,'KOI8R'=> true,'BIG5'=> true,'950'=> true,'GB2312'=> true,'936'=> true,'BIG5-HKSCS'=> true,'SHIFT_JIS'=> true,'SJIS'=> true,'932'=> true,'EUC-JP'=> true,'EUCJP'=> true,'ISO8859-5'=> true,'ISO-8859-5'=> true,'MACROMAN'=> true, +); +} +} +if (isset($htmlspecialcharsCharsets[$charset])) { +return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); +} +if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) { +$htmlspecialcharsCharsets[$charset] = true; +return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); +} +$string = twig_convert_encoding($string,'UTF-8', $charset); +$string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE,'UTF-8'); +return twig_convert_encoding($string, $charset,'UTF-8'); +case'js': +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string,'UTF-8', $charset); +} +if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { +throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); +} +$string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su','_twig_escape_js_callback', $string); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +case'css': +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string,'UTF-8', $charset); +} +if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { +throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); +} +$string = preg_replace_callback('#[^a-zA-Z0-9]#Su','_twig_escape_css_callback', $string); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +case'html_attr': +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string,'UTF-8', $charset); +} +if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { +throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); +} +$string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su','_twig_escape_html_attr_callback', $string); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +case'url': +if (PHP_VERSION_ID < 50300) { +return str_replace('%7E','~', rawurlencode($string)); +} +return rawurlencode($string); +default: +static $escapers; +if (null === $escapers) { +$escapers = $env->getExtension('Twig_Extension_Core')->getEscapers(); +} +if (isset($escapers[$strategy])) { +return call_user_func($escapers[$strategy], $env, $string, $charset); +} +$validStrategies = implode(', ', array_merge(array('html','js','url','css','html_attr'), array_keys($escapers))); +throw new Twig_Error_Runtime(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); +} +} +function twig_escape_filter_is_safe(Twig_Node $filterArgs) +{ +foreach ($filterArgs as $arg) { +if ($arg instanceof Twig_Node_Expression_Constant) { +return array($arg->getAttribute('value')); +} +return array(); +} +return array('html'); +} +if (function_exists('mb_convert_encoding')) { +function twig_convert_encoding($string, $to, $from) +{ +return mb_convert_encoding($string, $to, $from); +} +} elseif (function_exists('iconv')) { +function twig_convert_encoding($string, $to, $from) +{ +return iconv($from, $to, $string); +} +} else { +function twig_convert_encoding($string, $to, $from) +{ +throw new Twig_Error_Runtime('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).'); +} +} +function _twig_escape_js_callback($matches) +{ +$char = $matches[0]; +if (!isset($char[1])) { +return'\\x'.strtoupper(substr('00'.bin2hex($char), -2)); +} +$char = twig_convert_encoding($char,'UTF-16BE','UTF-8'); +return'\\u'.strtoupper(substr('0000'.bin2hex($char), -4)); +} +function _twig_escape_css_callback($matches) +{ +$char = $matches[0]; +if (!isset($char[1])) { +$hex = ltrim(strtoupper(bin2hex($char)),'0'); +if (0 === strlen($hex)) { +$hex ='0'; +} +return'\\'.$hex.' '; +} +$char = twig_convert_encoding($char,'UTF-16BE','UTF-8'); +return'\\'.ltrim(strtoupper(bin2hex($char)),'0').' '; +} +function _twig_escape_html_attr_callback($matches) +{ +static $entityMap = array( +34 =>'quot', +38 =>'amp', +60 =>'lt', +62 =>'gt', +); +$chr = $matches[0]; +$ord = ord($chr); +if (($ord <= 0x1f && $chr !="\t"&& $chr !="\n"&& $chr !="\r") || ($ord >= 0x7f && $ord <= 0x9f)) { +return'�'; +} +if (strlen($chr) == 1) { +$hex = strtoupper(substr('00'.bin2hex($chr), -2)); +} else { +$chr = twig_convert_encoding($chr,'UTF-16BE','UTF-8'); +$hex = strtoupper(substr('0000'.bin2hex($chr), -4)); +} +$int = hexdec($hex); +if (array_key_exists($int, $entityMap)) { +return sprintf('&%s;', $entityMap[$int]); +} +return sprintf('&#x%s;', $hex); +} +if (function_exists('mb_get_info')) { +function twig_length_filter(Twig_Environment $env, $thing) +{ +return is_scalar($thing) ? mb_strlen($thing, $env->getCharset()) : count($thing); +} +function twig_upper_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_strtoupper($string, $charset); +} +return strtoupper($string); +} +function twig_lower_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_strtolower($string, $charset); +} +return strtolower($string); +} +function twig_title_string_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_convert_case($string, MB_CASE_TITLE, $charset); +} +return ucwords(strtolower($string)); +} +function twig_capitalize_string_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset); +} +return ucfirst(strtolower($string)); +} +} +else { +function twig_length_filter(Twig_Environment $env, $thing) +{ +return is_scalar($thing) ? strlen($thing) : count($thing); +} +function twig_title_string_filter(Twig_Environment $env, $string) +{ +return ucwords(strtolower($string)); +} +function twig_capitalize_string_filter(Twig_Environment $env, $string) +{ +return ucfirst(strtolower($string)); +} +} +function twig_ensure_traversable($seq) +{ +if ($seq instanceof Traversable || is_array($seq)) { +return $seq; +} +return array(); +} +function twig_test_empty($value) +{ +if ($value instanceof Countable) { +return 0 == count($value); +} +return''=== $value || false === $value || null === $value || array() === $value; +} +function twig_test_iterable($value) +{ +return $value instanceof Traversable || is_array($value); +} +function twig_include(Twig_Environment $env, $context, $template, $variables = array(), $withContext = true, $ignoreMissing = false, $sandboxed = false) +{ +$alreadySandboxed = false; +$sandbox = null; +if ($withContext) { +$variables = array_merge($context, $variables); +} +if ($isSandboxed = $sandboxed && $env->hasExtension('Twig_Extension_Sandbox')) { +$sandbox = $env->getExtension('Twig_Extension_Sandbox'); +if (!$alreadySandboxed = $sandbox->isSandboxed()) { +$sandbox->enableSandbox(); +} +} +$result = null; +try { +$result = $env->resolveTemplate($template)->render($variables); +} catch (Twig_Error_Loader $e) { +if (!$ignoreMissing) { +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +throw $e; +} +} catch (Throwable $e) { +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +throw $e; +} catch (Exception $e) { +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +throw $e; +} +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +return $result; +} +function twig_source(Twig_Environment $env, $name, $ignoreMissing = false) +{ +$loader = $env->getLoader(); +try { +if (!$loader instanceof Twig_SourceContextLoaderInterface) { +return $loader->getSource($name); +} else { +return $loader->getSourceContext($name)->getCode(); +} +} catch (Twig_Error_Loader $e) { +if (!$ignoreMissing) { +throw $e; +} +} +} +function twig_constant($constant, $object = null) +{ +if (null !== $object) { +$constant = get_class($object).'::'.$constant; +} +return constant($constant); +} +function twig_constant_is_defined($constant, $object = null) +{ +if (null !== $object) { +$constant = get_class($object).'::'.$constant; +} +return defined($constant); +} +function twig_array_batch($items, $size, $fill = null) +{ +if ($items instanceof Traversable) { +$items = iterator_to_array($items, false); +} +$size = ceil($size); +$result = array_chunk($items, $size, true); +if (null !== $fill && !empty($result)) { +$last = count($result) - 1; +if ($fillCount = $size - count($result[$last])) { +$result[$last] = array_merge( +$result[$last], +array_fill(0, $fillCount, $fill) +); +} +} +return $result; +} +} +namespace +{ +class Twig_Extension_Escaper extends Twig_Extension +{ +protected $defaultStrategy; +public function __construct($defaultStrategy ='html') +{ +$this->setDefaultStrategy($defaultStrategy); +} +public function getTokenParsers() +{ +return array(new Twig_TokenParser_AutoEscape()); +} +public function getNodeVisitors() +{ +return array(new Twig_NodeVisitor_Escaper()); +} +public function getFilters() +{ +return array( +new Twig_SimpleFilter('raw','twig_raw_filter', array('is_safe'=> array('all'))), +); +} +public function setDefaultStrategy($defaultStrategy) +{ +if (true === $defaultStrategy) { +@trigger_error('Using "true" as the default strategy is deprecated since version 1.21. Use "html" instead.', E_USER_DEPRECATED); +$defaultStrategy ='html'; +} +if ('filename'=== $defaultStrategy) { +@trigger_error('Using "filename" as the default strategy is deprecated since version 1.27. Use "name" instead.', E_USER_DEPRECATED); +$defaultStrategy ='name'; +} +if ('name'=== $defaultStrategy) { +$defaultStrategy = array('Twig_FileExtensionEscapingStrategy','guess'); +} +$this->defaultStrategy = $defaultStrategy; +} +public function getDefaultStrategy($name) +{ +if (!is_string($this->defaultStrategy) && false !== $this->defaultStrategy) { +return call_user_func($this->defaultStrategy, $name); +} +return $this->defaultStrategy; +} +public function getName() +{ +return'escaper'; +} +} +function twig_raw_filter($string) +{ +return $string; +} +} +namespace +{ +class Twig_Extension_Optimizer extends Twig_Extension +{ +protected $optimizers; +public function __construct($optimizers = -1) +{ +$this->optimizers = $optimizers; +} +public function getNodeVisitors() +{ +return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); +} +public function getName() +{ +return'optimizer'; +} +} +} +namespace +{ +interface Twig_LoaderInterface +{ +public function getSource($name); +public function getCacheKey($name); +public function isFresh($name, $time); +} +} +namespace +{ +class Twig_Markup implements Countable +{ +protected $content; +protected $charset; +public function __construct($content, $charset) +{ +$this->content = (string) $content; +$this->charset = $charset; +} +public function __toString() +{ +return $this->content; +} +public function count() +{ +return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content); +} +} +} +namespace +{ +interface Twig_TemplateInterface +{ +const ANY_CALL ='any'; +const ARRAY_CALL ='array'; +const METHOD_CALL ='method'; +public function render(array $context); +public function display(array $context, array $blocks = array()); +public function getEnvironment(); +} +} +namespace +{ +abstract class Twig_Template implements Twig_TemplateInterface +{ +protected static $cache = array(); +protected $parent; +protected $parents = array(); +protected $env; +protected $blocks = array(); +protected $traits = array(); +public function __construct(Twig_Environment $env) +{ +$this->env = $env; +} +public function __toString() +{ +return $this->getTemplateName(); +} +abstract public function getTemplateName(); +public function getDebugInfo() +{ +return array(); +} +public function getSource() +{ +@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); +return''; +} +public function getSourceContext() +{ +return new Twig_Source('', $this->getTemplateName()); +} +public function getEnvironment() +{ +@trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED); +return $this->env; +} +public function getParent(array $context) +{ +if (null !== $this->parent) { +return $this->parent; +} +try { +$parent = $this->doGetParent($context); +if (false === $parent) { +return false; +} +if ($parent instanceof self) { +return $this->parents[$parent->getTemplateName()] = $parent; +} +if (!isset($this->parents[$parent])) { +$this->parents[$parent] = $this->loadTemplate($parent); +} +} catch (Twig_Error_Loader $e) { +$e->setSourceContext(null); +$e->guess(); +throw $e; +} +return $this->parents[$parent]; +} +protected function doGetParent(array $context) +{ +return false; +} +public function isTraitable() +{ +return true; +} +public function displayParentBlock($name, array $context, array $blocks = array()) +{ +$name = (string) $name; +if (isset($this->traits[$name])) { +$this->traits[$name][0]->displayBlock($name, $context, $blocks, false); +} elseif (false !== $parent = $this->getParent($context)) { +$parent->displayBlock($name, $context, $blocks, false); +} else { +throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext()); +} +} +public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true) +{ +$name = (string) $name; +if ($useBlocks && isset($blocks[$name])) { +$template = $blocks[$name][0]; +$block = $blocks[$name][1]; +} elseif (isset($this->blocks[$name])) { +$template = $this->blocks[$name][0]; +$block = $this->blocks[$name][1]; +} else { +$template = null; +$block = null; +} +if (null !== $template && !$template instanceof self) { +throw new LogicException('A block must be a method on a Twig_Template instance.'); +} +if (null !== $template) { +try { +$template->$block($context, $blocks); +} catch (Twig_Error $e) { +if (!$e->getSourceContext()) { +$e->setSourceContext($template->getSourceContext()); +} +if (false === $e->getTemplateLine()) { +$e->setTemplateLine(-1); +$e->guess(); +} +throw $e; +} catch (Exception $e) { +throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e); +} +} elseif (false !== $parent = $this->getParent($context)) { +$parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false); +} else { +@trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED); +} +} +public function renderParentBlock($name, array $context, array $blocks = array()) +{ +ob_start(); +$this->displayParentBlock($name, $context, $blocks); +return ob_get_clean(); +} +public function renderBlock($name, array $context, array $blocks = array(), $useBlocks = true) +{ +ob_start(); +$this->displayBlock($name, $context, $blocks, $useBlocks); +return ob_get_clean(); +} +public function hasBlock($name, array $context = null, array $blocks = array()) +{ +if (null === $context) { +@trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); +return isset($this->blocks[(string) $name]); +} +if (isset($blocks[$name])) { +return $blocks[$name][0] instanceof self; +} +if (isset($this->blocks[$name])) { +return true; +} +if (false !== $parent = $this->getParent($context)) { +return $parent->hasBlock($name, $context); +} +return false; +} +public function getBlockNames(array $context = null, array $blocks = array()) +{ +if (null === $context) { +@trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); +return array_keys($this->blocks); +} +$names = array_merge(array_keys($blocks), array_keys($this->blocks)); +if (false !== $parent = $this->getParent($context)) { +$names = array_merge($names, $parent->getBlockNames($context)); +} +return array_unique($names); +} +protected function loadTemplate($template, $templateName = null, $line = null, $index = null) +{ +try { +if (is_array($template)) { +return $this->env->resolveTemplate($template); +} +if ($template instanceof self) { +return $template; +} +if ($template instanceof Twig_TemplateWrapper) { +return $template; +} +return $this->env->loadTemplate($template, $index); +} catch (Twig_Error $e) { +if (!$e->getSourceContext()) { +$e->setSourceContext($templateName ? new Twig_Source('', $templateName) : $this->getSourceContext()); +} +if ($e->getTemplateLine()) { +throw $e; +} +if (!$line) { +$e->guess(); +} else { +$e->setTemplateLine($line); +} +throw $e; +} +} +public function getBlocks() +{ +return $this->blocks; +} +public function display(array $context, array $blocks = array()) +{ +$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); +} +public function render(array $context) +{ +$level = ob_get_level(); +ob_start(); +try { +$this->display($context); +} catch (Exception $e) { +while (ob_get_level() > $level) { +ob_end_clean(); +} +throw $e; +} catch (Throwable $e) { +while (ob_get_level() > $level) { +ob_end_clean(); +} +throw $e; +} +return ob_get_clean(); +} +protected function displayWithErrorHandling(array $context, array $blocks = array()) +{ +try { +$this->doDisplay($context, $blocks); +} catch (Twig_Error $e) { +if (!$e->getSourceContext()) { +$e->setSourceContext($this->getSourceContext()); +} +if (false === $e->getTemplateLine()) { +$e->setTemplateLine(-1); +$e->guess(); +} +throw $e; +} catch (Exception $e) { +throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e); +} +} +abstract protected function doDisplay(array $context, array $blocks = array()); +final protected function getContext($context, $item, $ignoreStrictCheck = false) +{ +if (!array_key_exists($item, $context)) { +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist.', $item), -1, $this->getSourceContext()); +} +return $context[$item]; +} +protected function getAttribute($object, $item, array $arguments = array(), $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) +{ +if (self::METHOD_CALL !== $type) { +$arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; +if ((is_array($object) && (isset($object[$arrayItem]) || array_key_exists($arrayItem, $object))) +|| ($object instanceof ArrayAccess && isset($object[$arrayItem])) +) { +if ($isDefinedTest) { +return true; +} +return $object[$arrayItem]; +} +if (self::ARRAY_CALL === $type || !is_object($object)) { +if ($isDefinedTest) { +return false; +} +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +if ($object instanceof ArrayAccess) { +$message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist.', $arrayItem, get_class($object)); +} elseif (is_object($object)) { +$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, get_class($object)); +} elseif (is_array($object)) { +if (empty($object)) { +$message = sprintf('Key "%s" does not exist as the array is empty.', $arrayItem); +} else { +$message = sprintf('Key "%s" for array with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); +} +} elseif (self::ARRAY_CALL === $type) { +if (null === $object) { +$message = sprintf('Impossible to access a key ("%s") on a null variable.', $item); +} else { +$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, gettype($object), $object); +} +} elseif (null === $object) { +$message = sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); +} else { +$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, gettype($object), $object); +} +throw new Twig_Error_Runtime($message, -1, $this->getSourceContext()); +} +} +if (!is_object($object)) { +if ($isDefinedTest) { +return false; +} +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +if (null === $object) { +$message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item); +} else { +$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, gettype($object), $object); +} +throw new Twig_Error_Runtime($message, -1, $this->getSourceContext()); +} +if (self::METHOD_CALL !== $type && !$object instanceof self) { if (isset($object->$item) || array_key_exists((string) $item, $object)) { +if ($isDefinedTest) { +return true; +} +if ($this->env->hasExtension('Twig_Extension_Sandbox')) { +$this->env->getExtension('Twig_Extension_Sandbox')->checkPropertyAllowed($object, $item); +} +return $object->$item; +} +} +$class = get_class($object); +if (!isset(self::$cache[$class])) { +if ($object instanceof self) { +$ref = new ReflectionClass($class); +$methods = array(); +foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) { +if ('getenvironment'!== strtolower($refMethod->name)) { +$methods[] = $refMethod->name; +} +} +} else { +$methods = get_class_methods($object); +} +sort($methods); +$cache = array(); +foreach ($methods as $method) { +$cache[$method] = $method; +$cache[$lcName = strtolower($method)] = $method; +if ('g'=== $lcName[0] && 0 === strpos($lcName,'get')) { +$name = substr($method, 3); +$lcName = substr($lcName, 3); +} elseif ('i'=== $lcName[0] && 0 === strpos($lcName,'is')) { +$name = substr($method, 2); +$lcName = substr($lcName, 2); +} else { +continue; +} +if (!isset($cache[$name])) { +$cache[$name] = $method; +} +if (!isset($cache[$lcName])) { +$cache[$lcName] = $method; +} +} +self::$cache[$class] = $cache; +} +$call = false; +if (isset(self::$cache[$class][$item])) { +$method = self::$cache[$class][$item]; +} elseif (isset(self::$cache[$class][$lcItem = strtolower($item)])) { +$method = self::$cache[$class][$lcItem]; +} elseif (isset(self::$cache[$class]['__call'])) { +$method = $item; +$call = true; +} else { +if ($isDefinedTest) { +return false; +} +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +throw new Twig_Error_Runtime(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext()); +} +if ($isDefinedTest) { +return true; +} +if ($this->env->hasExtension('Twig_Extension_Sandbox')) { +$this->env->getExtension('Twig_Extension_Sandbox')->checkMethodAllowed($object, $method); +} +try { +if (!$arguments) { +$ret = $object->$method(); +} else { +$ret = call_user_func_array(array($object, $method), $arguments); +} +} catch (BadMethodCallException $e) { +if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { +return; +} +throw $e; +} +if ($object instanceof Twig_TemplateInterface) { +$self = $object->getTemplateName() === $this->getTemplateName(); +$message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName()); +if ('renderBlock'=== $method ||'displayBlock'=== $method) { +$message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ?'':', template'); +} elseif ('hasBlock'=== $method) { +$message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ?'':', template'); +} elseif ('render'=== $method ||'display'=== $method) { +$message .= sprintf(' Use include("%s") instead).', $object->getTemplateName()); +} +@trigger_error($message, E_USER_DEPRECATED); +return $ret ===''?'': new Twig_Markup($ret, $this->env->getCharset()); +} +return $ret; +} +} +} +namespace Monolog\Formatter +{ +interface FormatterInterface +{ +public function format(array $record); +public function formatBatch(array $records); +} +} +namespace Monolog\Formatter +{ +use Exception; +class NormalizerFormatter implements FormatterInterface +{ +const SIMPLE_DATE ="Y-m-d H:i:s"; +protected $dateFormat; +public function __construct($dateFormat = null) +{ +$this->dateFormat = $dateFormat ?: static::SIMPLE_DATE; +if (!function_exists('json_encode')) { +throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter'); +} +} +public function format(array $record) +{ +return $this->normalize($record); +} +public function formatBatch(array $records) +{ +foreach ($records as $key => $record) { +$records[$key] = $this->format($record); +} +return $records; +} +protected function normalize($data) +{ +if (null === $data || is_scalar($data)) { +if (is_float($data)) { +if (is_infinite($data)) { +return ($data > 0 ?'':'-') .'INF'; +} +if (is_nan($data)) { +return'NaN'; +} +} +return $data; +} +if (is_array($data)) { +$normalized = array(); +$count = 1; +foreach ($data as $key => $value) { +if ($count++ >= 1000) { +$normalized['...'] ='Over 1000 items ('.count($data).' total), aborting normalization'; +break; +} +$normalized[$key] = $this->normalize($value); +} +return $normalized; +} +if ($data instanceof \DateTime) { +return $data->format($this->dateFormat); +} +if (is_object($data)) { +if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) { +return $this->normalizeException($data); +} +if (method_exists($data,'__toString') && !$data instanceof \JsonSerializable) { +$value = $data->__toString(); +} else { +$value = $this->toJson($data, true); +} +return sprintf("[object] (%s: %s)", get_class($data), $value); +} +if (is_resource($data)) { +return sprintf('[resource] (%s)', get_resource_type($data)); +} +return'[unknown('.gettype($data).')]'; +} +protected function normalizeException($e) +{ +if (!$e instanceof Exception && !$e instanceof \Throwable) { +throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e)); +} +$data = array('class'=> get_class($e),'message'=> $e->getMessage(),'code'=> $e->getCode(),'file'=> $e->getFile().':'.$e->getLine(), +); +if ($e instanceof \SoapFault) { +if (isset($e->faultcode)) { +$data['faultcode'] = $e->faultcode; +} +if (isset($e->faultactor)) { +$data['faultactor'] = $e->faultactor; +} +if (isset($e->detail)) { +$data['detail'] = $e->detail; +} +} +$trace = $e->getTrace(); +foreach ($trace as $frame) { +if (isset($frame['file'])) { +$data['trace'][] = $frame['file'].':'.$frame['line']; +} elseif (isset($frame['function']) && $frame['function'] ==='{closure}') { +$data['trace'][] = $frame['function']; +} else { +$data['trace'][] = $this->toJson($this->normalize($frame), true); +} +} +if ($previous = $e->getPrevious()) { +$data['previous'] = $this->normalizeException($previous); +} +return $data; +} +protected function toJson($data, $ignoreErrors = false) +{ +if ($ignoreErrors) { +return @$this->jsonEncode($data); +} +$json = $this->jsonEncode($data); +if ($json === false) { +$json = $this->handleJsonError(json_last_error(), $data); +} +return $json; +} +private function jsonEncode($data) +{ +if (version_compare(PHP_VERSION,'5.4.0','>=')) { +return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); +} +return json_encode($data); +} +private function handleJsonError($code, $data) +{ +if ($code !== JSON_ERROR_UTF8) { +$this->throwEncodeError($code, $data); +} +if (is_string($data)) { +$this->detectAndCleanUtf8($data); +} elseif (is_array($data)) { +array_walk_recursive($data, array($this,'detectAndCleanUtf8')); +} else { +$this->throwEncodeError($code, $data); +} +$json = $this->jsonEncode($data); +if ($json === false) { +$this->throwEncodeError(json_last_error(), $data); +} +return $json; +} +private function throwEncodeError($code, $data) +{ +switch ($code) { +case JSON_ERROR_DEPTH: +$msg ='Maximum stack depth exceeded'; +break; +case JSON_ERROR_STATE_MISMATCH: +$msg ='Underflow or the modes mismatch'; +break; +case JSON_ERROR_CTRL_CHAR: +$msg ='Unexpected control character found'; +break; +case JSON_ERROR_UTF8: +$msg ='Malformed UTF-8 characters, possibly incorrectly encoded'; +break; +default: +$msg ='Unknown error'; +} +throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true)); +} +public function detectAndCleanUtf8(&$data) +{ +if (is_string($data) && !preg_match('//u', $data)) { +$data = preg_replace_callback('/[\x80-\xFF]+/', +function ($m) { return utf8_encode($m[0]); }, +$data +); +$data = str_replace( +array('¤','¦','¨','´','¸','¼','½','¾'), +array('€','Š','š','Ž','ž','Œ','œ','Ÿ'), +$data +); +} +} +} +} +namespace Monolog\Formatter +{ +class LineFormatter extends NormalizerFormatter +{ +const SIMPLE_FORMAT ="[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; +protected $format; +protected $allowInlineLineBreaks; +protected $ignoreEmptyContextAndExtra; +protected $includeStacktraces; +public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false) +{ +$this->format = $format ?: static::SIMPLE_FORMAT; +$this->allowInlineLineBreaks = $allowInlineLineBreaks; +$this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; +parent::__construct($dateFormat); +} +public function includeStacktraces($include = true) +{ +$this->includeStacktraces = $include; +if ($this->includeStacktraces) { +$this->allowInlineLineBreaks = true; +} +} +public function allowInlineLineBreaks($allow = true) +{ +$this->allowInlineLineBreaks = $allow; +} +public function ignoreEmptyContextAndExtra($ignore = true) +{ +$this->ignoreEmptyContextAndExtra = $ignore; +} +public function format(array $record) +{ +$vars = parent::format($record); +$output = $this->format; +foreach ($vars['extra'] as $var => $val) { +if (false !== strpos($output,'%extra.'.$var.'%')) { +$output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output); +unset($vars['extra'][$var]); +} +} +foreach ($vars['context'] as $var => $val) { +if (false !== strpos($output,'%context.'.$var.'%')) { +$output = str_replace('%context.'.$var.'%', $this->stringify($val), $output); +unset($vars['context'][$var]); +} +} +if ($this->ignoreEmptyContextAndExtra) { +if (empty($vars['context'])) { +unset($vars['context']); +$output = str_replace('%context%','', $output); +} +if (empty($vars['extra'])) { +unset($vars['extra']); +$output = str_replace('%extra%','', $output); +} +} +foreach ($vars as $var => $val) { +if (false !== strpos($output,'%'.$var.'%')) { +$output = str_replace('%'.$var.'%', $this->stringify($val), $output); +} +} +if (false !== strpos($output,'%')) { +$output = preg_replace('/%(?:extra|context)\..+?%/','', $output); +} +return $output; +} +public function formatBatch(array $records) +{ +$message =''; +foreach ($records as $record) { +$message .= $this->format($record); +} +return $message; +} +public function stringify($value) +{ +return $this->replaceNewlines($this->convertToString($value)); +} +protected function normalizeException($e) +{ +if (!$e instanceof \Exception && !$e instanceof \Throwable) { +throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e)); +} +$previousText =''; +if ($previous = $e->getPrevious()) { +do { +$previousText .=', '.get_class($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine(); +} while ($previous = $previous->getPrevious()); +} +$str ='[object] ('.get_class($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')'; +if ($this->includeStacktraces) { +$str .="\n[stacktrace]\n".$e->getTraceAsString(); +} +return $str; +} +protected function convertToString($data) +{ +if (null === $data || is_bool($data)) { +return var_export($data, true); +} +if (is_scalar($data)) { +return (string) $data; +} +if (version_compare(PHP_VERSION,'5.4.0','>=')) { +return $this->toJson($data, true); +} +return str_replace('\\/','/', @json_encode($data)); +} +protected function replaceNewlines($str) +{ +if ($this->allowInlineLineBreaks) { +return $str; +} +return str_replace(array("\r\n","\r","\n"),' ', $str); +} +} +} +namespace Monolog\Handler +{ +use Monolog\Formatter\FormatterInterface; +interface HandlerInterface +{ +public function isHandling(array $record); +public function handle(array $record); +public function handleBatch(array $records); +public function pushProcessor($callback); +public function popProcessor(); +public function setFormatter(FormatterInterface $formatter); +public function getFormatter(); +} +} +namespace Monolog\Handler +{ +use Monolog\Logger; +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\LineFormatter; +abstract class AbstractHandler implements HandlerInterface +{ +protected $level = Logger::DEBUG; +protected $bubble = true; +protected $formatter; +protected $processors = array(); +public function __construct($level = Logger::DEBUG, $bubble = true) +{ +$this->setLevel($level); +$this->bubble = $bubble; +} +public function isHandling(array $record) +{ +return $record['level'] >= $this->level; +} +public function handleBatch(array $records) +{ +foreach ($records as $record) { +$this->handle($record); +} +} +public function close() +{ +} +public function pushProcessor($callback) +{ +if (!is_callable($callback)) { +throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); +} +array_unshift($this->processors, $callback); +return $this; +} +public function popProcessor() +{ +if (!$this->processors) { +throw new \LogicException('You tried to pop from an empty processor stack.'); +} +return array_shift($this->processors); +} +public function setFormatter(FormatterInterface $formatter) +{ +$this->formatter = $formatter; +return $this; +} +public function getFormatter() +{ +if (!$this->formatter) { +$this->formatter = $this->getDefaultFormatter(); +} +return $this->formatter; +} +public function setLevel($level) +{ +$this->level = Logger::toMonologLevel($level); +return $this; +} +public function getLevel() +{ +return $this->level; +} +public function setBubble($bubble) +{ +$this->bubble = $bubble; +return $this; +} +public function getBubble() +{ +return $this->bubble; +} +public function __destruct() +{ +try { +$this->close(); +} catch (\Exception $e) { +} catch (\Throwable $e) { +} +} +protected function getDefaultFormatter() +{ +return new LineFormatter(); +} +} +} +namespace Monolog\Handler +{ +abstract class AbstractProcessingHandler extends AbstractHandler +{ +public function handle(array $record) +{ +if (!$this->isHandling($record)) { +return false; +} +$record = $this->processRecord($record); +$record['formatted'] = $this->getFormatter()->format($record); +$this->write($record); +return false === $this->bubble; +} +abstract protected function write(array $record); +protected function processRecord(array $record) +{ +if ($this->processors) { +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +} +return $record; +} +} +} +namespace Monolog\Handler +{ +use Monolog\Logger; +class StreamHandler extends AbstractProcessingHandler +{ +protected $stream; +protected $url; +private $errorMessage; +protected $filePermission; +protected $useLocking; +private $dirCreated; +public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) +{ +parent::__construct($level, $bubble); +if (is_resource($stream)) { +$this->stream = $stream; +} elseif (is_string($stream)) { +$this->url = $stream; +} else { +throw new \InvalidArgumentException('A stream must either be a resource or a string.'); +} +$this->filePermission = $filePermission; +$this->useLocking = $useLocking; +} +public function close() +{ +if ($this->url && is_resource($this->stream)) { +fclose($this->stream); +} +$this->stream = null; +} +public function getStream() +{ +return $this->stream; +} +public function getUrl() +{ +return $this->url; +} +protected function write(array $record) +{ +if (!is_resource($this->stream)) { +if (null === $this->url ||''=== $this->url) { +throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); +} +$this->createDir(); +$this->errorMessage = null; +set_error_handler(array($this,'customErrorHandler')); +$this->stream = fopen($this->url,'a'); +if ($this->filePermission !== null) { +@chmod($this->url, $this->filePermission); +} +restore_error_handler(); +if (!is_resource($this->stream)) { +$this->stream = null; +throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url)); +} +} +if ($this->useLocking) { +flock($this->stream, LOCK_EX); +} +$this->streamWrite($this->stream, $record); +if ($this->useLocking) { +flock($this->stream, LOCK_UN); +} +} +protected function streamWrite($stream, array $record) +{ +fwrite($stream, (string) $record['formatted']); +} +private function customErrorHandler($code, $msg) +{ +$this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }','', $msg); +} +private function getDirFromStream($stream) +{ +$pos = strpos($stream,'://'); +if ($pos === false) { +return dirname($stream); +} +if ('file://'=== substr($stream, 0, 7)) { +return dirname(substr($stream, 7)); +} +return; +} +private function createDir() +{ +if ($this->dirCreated) { +return; +} +$dir = $this->getDirFromStream($this->url); +if (null !== $dir && !is_dir($dir)) { +$this->errorMessage = null; +set_error_handler(array($this,'customErrorHandler')); +$status = mkdir($dir, 0777, true); +restore_error_handler(); +if (false === $status) { +throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir)); +} +} +$this->dirCreated = true; +} +} +} +namespace Monolog\Handler +{ +use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; +use Monolog\Handler\FingersCrossed\ActivationStrategyInterface; +use Monolog\Logger; +class FingersCrossedHandler extends AbstractHandler +{ +protected $handler; +protected $activationStrategy; +protected $buffering = true; +protected $bufferSize; +protected $buffer = array(); +protected $stopBuffering; +protected $passthruLevel; +public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null) +{ +if (null === $activationStrategy) { +$activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING); +} +if (!$activationStrategy instanceof ActivationStrategyInterface) { +$activationStrategy = new ErrorLevelActivationStrategy($activationStrategy); +} +$this->handler = $handler; +$this->activationStrategy = $activationStrategy; +$this->bufferSize = $bufferSize; +$this->bubble = $bubble; +$this->stopBuffering = $stopBuffering; +if ($passthruLevel !== null) { +$this->passthruLevel = Logger::toMonologLevel($passthruLevel); +} +if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { +throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); +} +} +public function isHandling(array $record) +{ +return true; +} +public function activate() +{ +if ($this->stopBuffering) { +$this->buffering = false; +} +if (!$this->handler instanceof HandlerInterface) { +$record = end($this->buffer) ?: null; +$this->handler = call_user_func($this->handler, $record, $this); +if (!$this->handler instanceof HandlerInterface) { +throw new \RuntimeException("The factory callable should return a HandlerInterface"); +} +} +$this->handler->handleBatch($this->buffer); +$this->buffer = array(); +} +public function handle(array $record) +{ +if ($this->processors) { +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +} +if ($this->buffering) { +$this->buffer[] = $record; +if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) { +array_shift($this->buffer); +} +if ($this->activationStrategy->isHandlerActivated($record)) { +$this->activate(); +} +} else { +$this->handler->handle($record); +} +return false === $this->bubble; +} +public function close() +{ +if (null !== $this->passthruLevel) { +$level = $this->passthruLevel; +$this->buffer = array_filter($this->buffer, function ($record) use ($level) { +return $record['level'] >= $level; +}); +if (count($this->buffer) > 0) { +$this->handler->handleBatch($this->buffer); +$this->buffer = array(); +} +} +} +public function reset() +{ +$this->buffering = true; +} +public function clear() +{ +$this->buffer = array(); +$this->reset(); +} +} +} +namespace Monolog\Handler +{ +use Monolog\Logger; +class FilterHandler extends AbstractHandler +{ +protected $handler; +protected $acceptedLevels; +protected $bubble; +public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true) +{ +$this->handler = $handler; +$this->bubble = $bubble; +$this->setAcceptedLevels($minLevelOrList, $maxLevel); +if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { +throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); +} +} +public function getAcceptedLevels() +{ +return array_flip($this->acceptedLevels); +} +public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY) +{ +if (is_array($minLevelOrList)) { +$acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList); +} else { +$minLevelOrList = Logger::toMonologLevel($minLevelOrList); +$maxLevel = Logger::toMonologLevel($maxLevel); +$acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) { +return $level >= $minLevelOrList && $level <= $maxLevel; +})); +} +$this->acceptedLevels = array_flip($acceptedLevels); +} +public function isHandling(array $record) +{ +return isset($this->acceptedLevels[$record['level']]); +} +public function handle(array $record) +{ +if (!$this->isHandling($record)) { +return false; +} +if (!$this->handler instanceof HandlerInterface) { +$this->handler = call_user_func($this->handler, $record, $this); +if (!$this->handler instanceof HandlerInterface) { +throw new \RuntimeException("The factory callable should return a HandlerInterface"); +} +} +if ($this->processors) { +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +} +$this->handler->handle($record); +return false === $this->bubble; +} +public function handleBatch(array $records) +{ +$filtered = array(); +foreach ($records as $record) { +if ($this->isHandling($record)) { +$filtered[] = $record; +} +} +$this->handler->handleBatch($filtered); +} +} +} +namespace Monolog\Handler +{ +class TestHandler extends AbstractProcessingHandler +{ +protected $records = array(); +protected $recordsByLevel = array(); +public function getRecords() +{ +return $this->records; +} +public function clear() +{ +$this->records = array(); +$this->recordsByLevel = array(); +} +public function hasRecords($level) +{ +return isset($this->recordsByLevel[$level]); +} +public function hasRecord($record, $level) +{ +if (is_array($record)) { +$record = $record['message']; +} +return $this->hasRecordThatPasses(function ($rec) use ($record) { +return $rec['message'] === $record; +}, $level); +} +public function hasRecordThatContains($message, $level) +{ +return $this->hasRecordThatPasses(function ($rec) use ($message) { +return strpos($rec['message'], $message) !== false; +}, $level); +} +public function hasRecordThatMatches($regex, $level) +{ +return $this->hasRecordThatPasses(function ($rec) use ($regex) { +return preg_match($regex, $rec['message']) > 0; +}, $level); +} +public function hasRecordThatPasses($predicate, $level) +{ +if (!is_callable($predicate)) { +throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds"); +} +if (!isset($this->recordsByLevel[$level])) { +return false; +} +foreach ($this->recordsByLevel[$level] as $i => $rec) { +if (call_user_func($predicate, $rec, $i)) { +return true; +} +} +return false; +} +protected function write(array $record) +{ +$this->recordsByLevel[$record['level']][] = $record; +$this->records[] = $record; +} +public function __call($method, $args) +{ +if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { +$genericMethod = $matches[1] . ('Records'!== $matches[3] ?'Record':'') . $matches[3]; +$level = constant('Monolog\Logger::'. strtoupper($matches[2])); +if (method_exists($this, $genericMethod)) { +$args[] = $level; +return call_user_func_array(array($this, $genericMethod), $args); +} +} +throw new \BadMethodCallException('Call to undefined method '. get_class($this) .'::'. $method .'()'); +} +} +} +namespace Monolog +{ +use Monolog\Handler\HandlerInterface; +use Monolog\Handler\StreamHandler; +use Psr\Log\LoggerInterface; +use Psr\Log\InvalidArgumentException; +class Logger implements LoggerInterface +{ +const DEBUG = 100; +const INFO = 200; +const NOTICE = 250; +const WARNING = 300; +const ERROR = 400; +const CRITICAL = 500; +const ALERT = 550; +const EMERGENCY = 600; +const API = 1; +protected static $levels = array( +self::DEBUG =>'DEBUG', +self::INFO =>'INFO', +self::NOTICE =>'NOTICE', +self::WARNING =>'WARNING', +self::ERROR =>'ERROR', +self::CRITICAL =>'CRITICAL', +self::ALERT =>'ALERT', +self::EMERGENCY =>'EMERGENCY', +); +protected static $timezone; +protected $name; +protected $handlers; +protected $processors; +protected $microsecondTimestamps = true; +public function __construct($name, array $handlers = array(), array $processors = array()) +{ +$this->name = $name; +$this->handlers = $handlers; +$this->processors = $processors; +} +public function getName() +{ +return $this->name; +} +public function withName($name) +{ +$new = clone $this; +$new->name = $name; +return $new; +} +public function pushHandler(HandlerInterface $handler) +{ +array_unshift($this->handlers, $handler); +return $this; +} +public function popHandler() +{ +if (!$this->handlers) { +throw new \LogicException('You tried to pop from an empty handler stack.'); +} +return array_shift($this->handlers); +} +public function setHandlers(array $handlers) +{ +$this->handlers = array(); +foreach (array_reverse($handlers) as $handler) { +$this->pushHandler($handler); +} +return $this; +} +public function getHandlers() +{ +return $this->handlers; +} +public function pushProcessor($callback) +{ +if (!is_callable($callback)) { +throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); +} +array_unshift($this->processors, $callback); +return $this; +} +public function popProcessor() +{ +if (!$this->processors) { +throw new \LogicException('You tried to pop from an empty processor stack.'); +} +return array_shift($this->processors); +} +public function getProcessors() +{ +return $this->processors; +} +public function useMicrosecondTimestamps($micro) +{ +$this->microsecondTimestamps = (bool) $micro; +} +public function addRecord($level, $message, array $context = array()) +{ +if (!$this->handlers) { +$this->pushHandler(new StreamHandler('php://stderr', static::DEBUG)); +} +$levelName = static::getLevelName($level); +$handlerKey = null; +reset($this->handlers); +while ($handler = current($this->handlers)) { +if ($handler->isHandling(array('level'=> $level))) { +$handlerKey = key($this->handlers); +break; +} +next($this->handlers); +} +if (null === $handlerKey) { +return false; +} +if (!static::$timezone) { +static::$timezone = new \DateTimeZone(date_default_timezone_get() ?:'UTC'); +} +if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) { +$ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone); +} else { +$ts = new \DateTime(null, static::$timezone); +} +$ts->setTimezone(static::$timezone); +$record = array('message'=> (string) $message,'context'=> $context,'level'=> $level,'level_name'=> $levelName,'channel'=> $this->name,'datetime'=> $ts,'extra'=> array(), +); +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +while ($handler = current($this->handlers)) { +if (true === $handler->handle($record)) { +break; +} +next($this->handlers); +} +return true; +} +public function addDebug($message, array $context = array()) +{ +return $this->addRecord(static::DEBUG, $message, $context); +} +public function addInfo($message, array $context = array()) +{ +return $this->addRecord(static::INFO, $message, $context); +} +public function addNotice($message, array $context = array()) +{ +return $this->addRecord(static::NOTICE, $message, $context); +} +public function addWarning($message, array $context = array()) +{ +return $this->addRecord(static::WARNING, $message, $context); +} +public function addError($message, array $context = array()) +{ +return $this->addRecord(static::ERROR, $message, $context); +} +public function addCritical($message, array $context = array()) +{ +return $this->addRecord(static::CRITICAL, $message, $context); +} +public function addAlert($message, array $context = array()) +{ +return $this->addRecord(static::ALERT, $message, $context); +} +public function addEmergency($message, array $context = array()) +{ +return $this->addRecord(static::EMERGENCY, $message, $context); +} +public static function getLevels() +{ +return array_flip(static::$levels); +} +public static function getLevelName($level) +{ +if (!isset(static::$levels[$level])) { +throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels))); +} +return static::$levels[$level]; +} +public static function toMonologLevel($level) +{ +if (is_string($level) && defined(__CLASS__.'::'.strtoupper($level))) { +return constant(__CLASS__.'::'.strtoupper($level)); +} +return $level; +} +public function isHandling($level) +{ +$record = array('level'=> $level, +); +foreach ($this->handlers as $handler) { +if ($handler->isHandling($record)) { +return true; +} +} +return false; +} +public function log($level, $message, array $context = array()) +{ +$level = static::toMonologLevel($level); +return $this->addRecord($level, $message, $context); +} +public function debug($message, array $context = array()) +{ +return $this->addRecord(static::DEBUG, $message, $context); +} +public function info($message, array $context = array()) +{ +return $this->addRecord(static::INFO, $message, $context); +} +public function notice($message, array $context = array()) +{ +return $this->addRecord(static::NOTICE, $message, $context); +} +public function warn($message, array $context = array()) +{ +return $this->addRecord(static::WARNING, $message, $context); +} +public function warning($message, array $context = array()) +{ +return $this->addRecord(static::WARNING, $message, $context); +} +public function err($message, array $context = array()) +{ +return $this->addRecord(static::ERROR, $message, $context); +} +public function error($message, array $context = array()) +{ +return $this->addRecord(static::ERROR, $message, $context); +} +public function crit($message, array $context = array()) +{ +return $this->addRecord(static::CRITICAL, $message, $context); +} +public function critical($message, array $context = array()) +{ +return $this->addRecord(static::CRITICAL, $message, $context); +} +public function alert($message, array $context = array()) +{ +return $this->addRecord(static::ALERT, $message, $context); +} +public function emerg($message, array $context = array()) +{ +return $this->addRecord(static::EMERGENCY, $message, $context); +} +public function emergency($message, array $context = array()) +{ +return $this->addRecord(static::EMERGENCY, $message, $context); +} +public static function setTimezone(\DateTimeZone $tz) +{ +self::$timezone = $tz; +} +} +} +namespace Symfony\Component\HttpKernel\Log +{ +interface DebugLoggerInterface +{ +public function getLogs(); +public function countErrors(); +} +} +namespace Symfony\Bridge\Monolog +{ +use Monolog\Logger as BaseLogger; +use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; +class Logger extends BaseLogger implements DebugLoggerInterface +{ +public function getLogs() +{ +if ($logger = $this->getDebugLogger()) { +return $logger->getLogs(); +} +return array(); +} +public function countErrors() +{ +if ($logger = $this->getDebugLogger()) { +return $logger->countErrors(); +} +return 0; +} +private function getDebugLogger() +{ +foreach ($this->processors as $processor) { +if ($processor instanceof DebugLoggerInterface) { +return $processor; +} +} +foreach ($this->handlers as $handler) { +if ($handler instanceof DebugLoggerInterface) { +return $handler; +} +} +} +} +} +namespace Monolog\Handler\FingersCrossed +{ +interface ActivationStrategyInterface +{ +public function isHandlerActivated(array $record); +} +} +namespace Monolog\Handler\FingersCrossed +{ +use Monolog\Logger; +class ErrorLevelActivationStrategy implements ActivationStrategyInterface +{ +private $actionLevel; +public function __construct($actionLevel) +{ +$this->actionLevel = Logger::toMonologLevel($actionLevel); +} +public function isHandlerActivated(array $record) +{ +return $record['level'] >= $this->actionLevel; +} +} +} +namespace Doctrine\Common\Lexer +{ +abstract class AbstractLexer +{ +private $input; +private $tokens = array(); +private $position = 0; +private $peek = 0; +public $lookahead; +public $token; +public function setInput($input) +{ +$this->input = $input; +$this->tokens = array(); +$this->reset(); +$this->scan($input); +} +public function reset() +{ +$this->lookahead = null; +$this->token = null; +$this->peek = 0; +$this->position = 0; +} +public function resetPeek() +{ +$this->peek = 0; +} +public function resetPosition($position = 0) +{ +$this->position = $position; +} +public function getInputUntilPosition($position) +{ +return substr($this->input, 0, $position); +} +public function isNextToken($token) +{ +return null !== $this->lookahead && $this->lookahead['type'] === $token; +} +public function isNextTokenAny(array $tokens) +{ +return null !== $this->lookahead && in_array($this->lookahead['type'], $tokens, true); +} +public function moveNext() +{ +$this->peek = 0; +$this->token = $this->lookahead; +$this->lookahead = (isset($this->tokens[$this->position])) +? $this->tokens[$this->position++] : null; +return $this->lookahead !== null; +} +public function skipUntil($type) +{ +while ($this->lookahead !== null && $this->lookahead['type'] !== $type) { +$this->moveNext(); +} +} +public function isA($value, $token) +{ +return $this->getType($value) === $token; +} +public function peek() +{ +if (isset($this->tokens[$this->position + $this->peek])) { +return $this->tokens[$this->position + $this->peek++]; +} else { +return null; +} +} +public function glimpse() +{ +$peek = $this->peek(); +$this->peek = 0; +return $peek; +} +protected function scan($input) +{ +static $regex; +if ( ! isset($regex)) { +$regex = sprintf('/(%s)|%s/%s', +implode(')|(', $this->getCatchablePatterns()), +implode('|', $this->getNonCatchablePatterns()), +$this->getModifiers() +); +} +$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE; +$matches = preg_split($regex, $input, -1, $flags); +foreach ($matches as $match) { +$type = $this->getType($match[0]); +$this->tokens[] = array('value'=> $match[0],'type'=> $type,'position'=> $match[1], +); +} +} +public function getLiteral($token) +{ +$className = get_class($this); +$reflClass = new \ReflectionClass($className); +$constants = $reflClass->getConstants(); +foreach ($constants as $name => $value) { +if ($value === $token) { +return $className .'::'. $name; +} +} +return $token; +} +protected function getModifiers() +{ +return'i'; +} +abstract protected function getCatchablePatterns(); +abstract protected function getNonCatchablePatterns(); +abstract protected function getType(&$value); +} +} +namespace Doctrine\Common\Annotations +{ +use Doctrine\Common\Lexer\AbstractLexer; +final class DocLexer extends AbstractLexer +{ +const T_NONE = 1; +const T_INTEGER = 2; +const T_STRING = 3; +const T_FLOAT = 4; +const T_IDENTIFIER = 100; +const T_AT = 101; +const T_CLOSE_CURLY_BRACES = 102; +const T_CLOSE_PARENTHESIS = 103; +const T_COMMA = 104; +const T_EQUALS = 105; +const T_FALSE = 106; +const T_NAMESPACE_SEPARATOR = 107; +const T_OPEN_CURLY_BRACES = 108; +const T_OPEN_PARENTHESIS = 109; +const T_TRUE = 110; +const T_NULL = 111; +const T_COLON = 112; +protected $noCase = array('@'=> self::T_AT,','=> self::T_COMMA,'('=> self::T_OPEN_PARENTHESIS,')'=> self::T_CLOSE_PARENTHESIS,'{'=> self::T_OPEN_CURLY_BRACES,'}'=> self::T_CLOSE_CURLY_BRACES,'='=> self::T_EQUALS,':'=> self::T_COLON,'\\'=> self::T_NAMESPACE_SEPARATOR +); +protected $withCase = array('true'=> self::T_TRUE,'false'=> self::T_FALSE,'null'=> self::T_NULL +); +protected function getCatchablePatterns() +{ +return array('[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*','(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?','"(?:""|[^"])*+"', +); +} +protected function getNonCatchablePatterns() +{ +return array('\s+','\*+','(.)'); +} +protected function getType(&$value) +{ +$type = self::T_NONE; +if ($value[0] ==='"') { +$value = str_replace('""','"', substr($value, 1, strlen($value) - 2)); +return self::T_STRING; +} +if (isset($this->noCase[$value])) { +return $this->noCase[$value]; +} +if ($value[0] ==='_'|| $value[0] ==='\\'|| ctype_alpha($value[0])) { +return self::T_IDENTIFIER; +} +$lowerValue = strtolower($value); +if (isset($this->withCase[$lowerValue])) { +return $this->withCase[$lowerValue]; +} +if (is_numeric($value)) { +return (strpos($value,'.') !== false || stripos($value,'e') !== false) +? self::T_FLOAT : self::T_INTEGER; +} +return $type; +} +} +} +namespace Doctrine\Common\Annotations +{ +interface Reader +{ +function getClassAnnotations(\ReflectionClass $class); +function getClassAnnotation(\ReflectionClass $class, $annotationName); +function getMethodAnnotations(\ReflectionMethod $method); +function getMethodAnnotation(\ReflectionMethod $method, $annotationName); +function getPropertyAnnotations(\ReflectionProperty $property); +function getPropertyAnnotation(\ReflectionProperty $property, $annotationName); +} +} +namespace Doctrine\Common\Annotations +{ +class FileCacheReader implements Reader +{ +private $reader; +private $dir; +private $debug; +private $loadedAnnotations = array(); +private $classNameHashes = array(); +private $umask; +public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002) +{ +if ( ! is_int($umask)) { +throw new \InvalidArgumentException(sprintf('The parameter umask must be an integer, was: %s', +gettype($umask) +)); +} +$this->reader = $reader; +$this->umask = $umask; +if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777 & (~$this->umask), true)) { +throw new \InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $cacheDir)); +} +$this->dir = rtrim($cacheDir,'\\/'); +$this->debug = $debug; +} +public function getClassAnnotations(\ReflectionClass $class) +{ +if ( ! isset($this->classNameHashes[$class->name])) { +$this->classNameHashes[$class->name] = sha1($class->name); +} +$key = $this->classNameHashes[$class->name]; +if (isset($this->loadedAnnotations[$key])) { +return $this->loadedAnnotations[$key]; +} +$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; +if (!is_file($path)) { +$annot = $this->reader->getClassAnnotations($class); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +if ($this->debug +&& (false !== $filename = $class->getFilename()) +&& filemtime($path) < filemtime($filename)) { +@unlink($path); +$annot = $this->reader->getClassAnnotations($class); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +return $this->loadedAnnotations[$key] = include $path; +} +public function getPropertyAnnotations(\ReflectionProperty $property) +{ +$class = $property->getDeclaringClass(); +if ( ! isset($this->classNameHashes[$class->name])) { +$this->classNameHashes[$class->name] = sha1($class->name); +} +$key = $this->classNameHashes[$class->name].'$'.$property->getName(); +if (isset($this->loadedAnnotations[$key])) { +return $this->loadedAnnotations[$key]; +} +$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; +if (!is_file($path)) { +$annot = $this->reader->getPropertyAnnotations($property); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +if ($this->debug +&& (false !== $filename = $class->getFilename()) +&& filemtime($path) < filemtime($filename)) { +@unlink($path); +$annot = $this->reader->getPropertyAnnotations($property); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +return $this->loadedAnnotations[$key] = include $path; +} +public function getMethodAnnotations(\ReflectionMethod $method) +{ +$class = $method->getDeclaringClass(); +if ( ! isset($this->classNameHashes[$class->name])) { +$this->classNameHashes[$class->name] = sha1($class->name); +} +$key = $this->classNameHashes[$class->name].'#'.$method->getName(); +if (isset($this->loadedAnnotations[$key])) { +return $this->loadedAnnotations[$key]; +} +$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; +if (!is_file($path)) { +$annot = $this->reader->getMethodAnnotations($method); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +if ($this->debug +&& (false !== $filename = $class->getFilename()) +&& filemtime($path) < filemtime($filename)) { +@unlink($path); +$annot = $this->reader->getMethodAnnotations($method); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +return $this->loadedAnnotations[$key] = include $path; +} +private function saveCacheFile($path, $data) +{ +if (!is_writable($this->dir)) { +throw new \InvalidArgumentException(sprintf('The directory "%s" is not writable. Both, the webserver and the console user need access. You can manage access rights for multiple users with "chmod +a". If your system does not support this, check out the acl package.', $this->dir)); +} +$tempfile = tempnam($this->dir, uniqid('', true)); +if (false === $tempfile) { +throw new \RuntimeException(sprintf('Unable to create tempfile in directory: %s', $this->dir)); +} +$written = file_put_contents($tempfile,'umask)); +if (false === rename($tempfile, $path)) { +@unlink($tempfile); +throw new \RuntimeException(sprintf('Unable to rename %s to %s', $tempfile, $path)); +} +} +public function getClassAnnotation(\ReflectionClass $class, $annotationName) +{ +$annotations = $this->getClassAnnotations($class); +foreach ($annotations as $annotation) { +if ($annotation instanceof $annotationName) { +return $annotation; +} +} +return null; +} +public function getMethodAnnotation(\ReflectionMethod $method, $annotationName) +{ +$annotations = $this->getMethodAnnotations($method); +foreach ($annotations as $annotation) { +if ($annotation instanceof $annotationName) { +return $annotation; +} +} +return null; +} +public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName) +{ +$annotations = $this->getPropertyAnnotations($property); +foreach ($annotations as $annotation) { +if ($annotation instanceof $annotationName) { +return $annotation; +} +} +return null; +} +public function clearLoadedAnnotations() +{ +$this->loadedAnnotations = array(); +} +} +} +namespace Doctrine\Common\Annotations +{ +use SplFileObject; +final class PhpParser +{ +public function parseClass(\ReflectionClass $class) +{ +if (method_exists($class,'getUseStatements')) { +return $class->getUseStatements(); +} +if (false === $filename = $class->getFilename()) { +return array(); +} +$content = $this->getFileContent($filename, $class->getStartLine()); +if (null === $content) { +return array(); +} +$namespace = preg_quote($class->getNamespaceName()); +$content = preg_replace('/^.*?(\bnamespace\s+'. $namespace .'\s*[;{].*)$/s','\\1', $content); +$tokenizer = new TokenParser('parseUseStatements($class->getNamespaceName()); +return $statements; +} +private function getFileContent($filename, $lineNumber) +{ +if ( ! is_file($filename)) { +return null; +} +$content =''; +$lineCnt = 0; +$file = new SplFileObject($filename); +while (!$file->eof()) { +if ($lineCnt++ == $lineNumber) { +break; +} +$content .= $file->fgets(); +} +return $content; +} +} +} +namespace Doctrine\Common +{ +use Doctrine\Common\Lexer\AbstractLexer; +abstract class Lexer extends AbstractLexer +{ +} +} +namespace Doctrine\Common\Persistence +{ +interface ConnectionRegistry +{ +public function getDefaultConnectionName(); +public function getConnection($name = null); +public function getConnections(); +public function getConnectionNames(); +} +} +namespace Doctrine\Common\Persistence +{ +interface Proxy +{ +const MARKER ='__CG__'; +const MARKER_LENGTH = 6; +public function __load(); +public function __isInitialized(); +} +} +namespace Doctrine\Common\Util +{ +use Doctrine\Common\Persistence\Proxy; +class ClassUtils +{ +public static function getRealClass($class) +{ +if (false === $pos = strrpos($class,'\\'.Proxy::MARKER.'\\')) { +return $class; +} +return substr($class, $pos + Proxy::MARKER_LENGTH + 2); +} +public static function getClass($object) +{ +return self::getRealClass(get_class($object)); +} +public static function getParentClass($className) +{ +return get_parent_class( self::getRealClass( $className ) ); +} +public static function newReflectionClass($class) +{ +return new \ReflectionClass( self::getRealClass( $class ) ); +} +public static function newReflectionObject($object) +{ +return self::newReflectionClass( self::getClass( $object ) ); +} +public static function generateProxyClassName($className, $proxyNamespace) +{ +return rtrim($proxyNamespace,'\\') .'\\'.Proxy::MARKER.'\\'. ltrim($className,'\\'); +} +} +} +namespace Doctrine\Common\Persistence +{ +interface ManagerRegistry extends ConnectionRegistry +{ +public function getDefaultManagerName(); +public function getManager($name = null); +public function getManagers(); +public function resetManager($name = null); +public function getAliasNamespace($alias); +public function getManagerNames(); +public function getRepository($persistentObject, $persistentManagerName = null); +public function getManagerForClass($class); +} +} +namespace Symfony\Bridge\Doctrine +{ +use Doctrine\Common\Persistence\ManagerRegistry as ManagerRegistryInterface; +use Doctrine\ORM\EntityManager; +interface RegistryInterface extends ManagerRegistryInterface +{ +public function getDefaultEntityManagerName(); +public function getEntityManager($name = null); +public function getEntityManagers(); +public function resetEntityManager($name = null); +public function getEntityNamespace($alias); +public function getEntityManagerNames(); +public function getEntityManagerForClass($class); +} +} +namespace Doctrine\Common\Persistence +{ +abstract class AbstractManagerRegistry implements ManagerRegistry +{ +private $name; +private $connections; +private $managers; +private $defaultConnection; +private $defaultManager; +private $proxyInterfaceName; +public function __construct($name, array $connections, array $managers, $defaultConnection, $defaultManager, $proxyInterfaceName) +{ +$this->name = $name; +$this->connections = $connections; +$this->managers = $managers; +$this->defaultConnection = $defaultConnection; +$this->defaultManager = $defaultManager; +$this->proxyInterfaceName = $proxyInterfaceName; +} +abstract protected function getService($name); +abstract protected function resetService($name); +public function getName() +{ +return $this->name; +} +public function getConnection($name = null) +{ +if (null === $name) { +$name = $this->defaultConnection; +} +if (!isset($this->connections[$name])) { +throw new \InvalidArgumentException(sprintf('Doctrine %s Connection named "%s" does not exist.', $this->name, $name)); +} +return $this->getService($this->connections[$name]); +} +public function getConnectionNames() +{ +return $this->connections; +} +public function getConnections() +{ +$connections = []; +foreach ($this->connections as $name => $id) { +$connections[$name] = $this->getService($id); +} +return $connections; +} +public function getDefaultConnectionName() +{ +return $this->defaultConnection; +} +public function getDefaultManagerName() +{ +return $this->defaultManager; +} +public function getManager($name = null) +{ +if (null === $name) { +$name = $this->defaultManager; +} +if (!isset($this->managers[$name])) { +throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name)); +} +return $this->getService($this->managers[$name]); +} +public function getManagerForClass($class) +{ +if (strpos($class,':') !== false) { +list($namespaceAlias, $simpleClassName) = explode(':', $class, 2); +$class = $this->getAliasNamespace($namespaceAlias) .'\\'. $simpleClassName; +} +$proxyClass = new \ReflectionClass($class); +if ($proxyClass->implementsInterface($this->proxyInterfaceName)) { +if (! $parentClass = $proxyClass->getParentClass()) { +return null; +} +$class = $parentClass->getName(); +} +foreach ($this->managers as $id) { +$manager = $this->getService($id); +if (!$manager->getMetadataFactory()->isTransient($class)) { +return $manager; +} +} +} +public function getManagerNames() +{ +return $this->managers; +} +public function getManagers() +{ +$dms = []; +foreach ($this->managers as $name => $id) { +$dms[$name] = $this->getService($id); +} +return $dms; +} +public function getRepository($persistentObjectName, $persistentManagerName = null) +{ +return $this->getManager($persistentManagerName)->getRepository($persistentObjectName); +} +public function resetManager($name = null) +{ +if (null === $name) { +$name = $this->defaultManager; +} +if (!isset($this->managers[$name])) { +throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name)); +} +$this->resetService($this->managers[$name]); +return $this->getManager($name); +} +} +} +namespace Symfony\Bridge\Doctrine +{ +use ProxyManager\Proxy\LazyLoadingInterface; +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Doctrine\Common\Persistence\AbstractManagerRegistry; +abstract class ManagerRegistry extends AbstractManagerRegistry implements ContainerAwareInterface +{ +use ContainerAwareTrait; +protected function getService($name) +{ +return $this->container->get($name); +} +protected function resetService($name) +{ +if (!$this->container->initialized($name)) { +return; +} +$manager = $this->container->get($name); +if (!$manager instanceof LazyLoadingInterface) { +@trigger_error(sprintf('Resetting a non-lazy manager service is deprecated since Symfony 3.2 and will throw an exception in version 4.0. Set the "%s" service as lazy and require "symfony/proxy-manager-bridge" in your composer.json file instead.', $name), E_USER_DEPRECATED); +$this->container->set($name, null); +return; +} +$manager->setProxyInitializer(\Closure::bind( +function (&$wrappedInstance, LazyLoadingInterface $manager) use ($name) { +if (isset($this->aliases[$name = strtolower($name)])) { +$name = $this->aliases[$name]; +} +$method = !isset($this->methodMap[$name]) ?'get'.strtr($name, $this->underscoreMap).'Service': $this->methodMap[$name]; +$wrappedInstance = $this->{$method}(false); +$manager->setProxyInitializer(null); +return true; +}, +$this->container, +Container::class +)); +} +} +} +namespace Doctrine\Bundle\DoctrineBundle +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Bridge\Doctrine\RegistryInterface; +use Symfony\Bridge\Doctrine\ManagerRegistry; +use Doctrine\ORM\ORMException; +use Doctrine\ORM\EntityManager; +class Registry extends ManagerRegistry implements RegistryInterface +{ +public function __construct(ContainerInterface $container, array $connections, array $entityManagers, $defaultConnection, $defaultEntityManager) +{ +$this->setContainer($container); +parent::__construct('ORM', $connections, $entityManagers, $defaultConnection, $defaultEntityManager,'Doctrine\ORM\Proxy\Proxy'); +} +public function getDefaultEntityManagerName() +{ +@trigger_error('getDefaultEntityManagerName is deprecated since Symfony 2.1. Use getDefaultManagerName instead', E_USER_DEPRECATED); +return $this->getDefaultManagerName(); +} +public function getEntityManager($name = null) +{ +@trigger_error('getEntityManager is deprecated since Symfony 2.1. Use getManager instead', E_USER_DEPRECATED); +return $this->getManager($name); +} +public function getEntityManagers() +{ +@trigger_error('getEntityManagers is deprecated since Symfony 2.1. Use getManagers instead', E_USER_DEPRECATED); +return $this->getManagers(); +} +public function resetEntityManager($name = null) +{ +@trigger_error('resetEntityManager is deprecated since Symfony 2.1. Use resetManager instead', E_USER_DEPRECATED); +$this->resetManager($name); +} +public function getEntityNamespace($alias) +{ +@trigger_error('getEntityNamespace is deprecated since Symfony 2.1. Use getAliasNamespace instead', E_USER_DEPRECATED); +return $this->getAliasNamespace($alias); +} +public function getAliasNamespace($alias) +{ +foreach (array_keys($this->getManagers()) as $name) { +try { +return $this->getManager($name)->getConfiguration()->getEntityNamespace($alias); +} catch (ORMException $e) { +} +} +throw ORMException::unknownEntityNamespace($alias); +} +public function getEntityManagerNames() +{ +@trigger_error('getEntityManagerNames is deprecated since Symfony 2.1. Use getManagerNames instead', E_USER_DEPRECATED); +return $this->getManagerNames(); +} +public function getEntityManagerForClass($class) +{ +@trigger_error('getEntityManagerForClass is deprecated since Symfony 2.1. Use getManagerForClass instead', E_USER_DEPRECATED); +return $this->getManagerForClass($class); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Doctrine\Common\Annotations\Reader; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; +use Doctrine\Common\Util\ClassUtils; +class ControllerListener implements EventSubscriberInterface +{ +protected $reader; +public function __construct(Reader $reader) +{ +$this->reader = $reader; +} +public function onKernelController(FilterControllerEvent $event) +{ +$controller = $event->getController(); +if (!is_array($controller) && method_exists($controller,'__invoke')) { +$controller = array($controller,'__invoke'); +} +if (!is_array($controller)) { +return; +} +$className = class_exists('Doctrine\Common\Util\ClassUtils') ? ClassUtils::getClass($controller[0]) : get_class($controller[0]); +$object = new \ReflectionClass($className); +$method = $object->getMethod($controller[1]); +$classConfigurations = $this->getConfigurations($this->reader->getClassAnnotations($object)); +$methodConfigurations = $this->getConfigurations($this->reader->getMethodAnnotations($method)); +$configurations = array(); +foreach (array_merge(array_keys($classConfigurations), array_keys($methodConfigurations)) as $key) { +if (!array_key_exists($key, $classConfigurations)) { +$configurations[$key] = $methodConfigurations[$key]; +} elseif (!array_key_exists($key, $methodConfigurations)) { +$configurations[$key] = $classConfigurations[$key]; +} else { +if (is_array($classConfigurations[$key])) { +if (!is_array($methodConfigurations[$key])) { +throw new \UnexpectedValueException('Configurations should both be an array or both not be an array'); +} +$configurations[$key] = array_merge($classConfigurations[$key], $methodConfigurations[$key]); +} else { +$configurations[$key] = $methodConfigurations[$key]; +} +} +} +$request = $event->getRequest(); +foreach ($configurations as $key => $attributes) { +$request->attributes->set($key, $attributes); +} +} +protected function getConfigurations(array $annotations) +{ +$configurations = array(); +foreach ($annotations as $configuration) { +if ($configuration instanceof ConfigurationInterface) { +if ($configuration->allowArray()) { +$configurations['_'.$configuration->getAliasName()][] = $configuration; +} elseif (!isset($configurations['_'.$configuration->getAliasName()])) { +$configurations['_'.$configuration->getAliasName()] = $configuration; +} else { +throw new \LogicException(sprintf('Multiple "%s" annotations are not allowed.', $configuration->getAliasName())); +} +} +} +return $configurations; +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER =>'onKernelController', +); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +class ParamConverterListener implements EventSubscriberInterface +{ +protected $manager; +protected $autoConvert; +private $isParameterTypeSupported; +public function __construct(ParamConverterManager $manager, $autoConvert = true) +{ +$this->manager = $manager; +$this->autoConvert = $autoConvert; +$this->isParameterTypeSupported = method_exists('ReflectionParameter','getType'); +} +public function onKernelController(FilterControllerEvent $event) +{ +$controller = $event->getController(); +$request = $event->getRequest(); +$configurations = array(); +if ($configuration = $request->attributes->get('_converters')) { +foreach (is_array($configuration) ? $configuration : array($configuration) as $configuration) { +$configurations[$configuration->getName()] = $configuration; +} +} +if (is_array($controller)) { +$r = new \ReflectionMethod($controller[0], $controller[1]); +} elseif (is_object($controller) && is_callable($controller,'__invoke')) { +$r = new \ReflectionMethod($controller,'__invoke'); +} else { +$r = new \ReflectionFunction($controller); +} +if ($this->autoConvert) { +$configurations = $this->autoConfigure($r, $request, $configurations); +} +$this->manager->apply($request, $configurations); +} +private function autoConfigure(\ReflectionFunctionAbstract $r, Request $request, $configurations) +{ +foreach ($r->getParameters() as $param) { +if ($param->getClass() && $param->getClass()->isInstance($request)) { +continue; +} +$name = $param->getName(); +$class = $param->getClass(); +$hasType = $this->isParameterTypeSupported && $param->hasType(); +if ($class || $hasType) { +if (!isset($configurations[$name])) { +$configuration = new ParamConverter(array()); +$configuration->setName($name); +$configurations[$name] = $configuration; +} +if ($class && null === $configurations[$name]->getClass()) { +$configurations[$name]->setClass($class->getName()); +} +} +if (isset($configurations[$name])) { +$configurations[$name]->setIsOptional($param->isOptional() || $param->isDefaultValueAvailable() || $hasType && $param->getType()->allowsNull()); +} +} +return $configurations; +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER =>'onKernelController', +); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Symfony\Component\HttpFoundation\Request; +interface ParamConverterInterface +{ +public function apply(Request $request, ParamConverter $configuration); +public function supports(ParamConverter $configuration); +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use DateTime; +class DateTimeParamConverter implements ParamConverterInterface +{ +public function apply(Request $request, ParamConverter $configuration) +{ +$param = $configuration->getName(); +if (!$request->attributes->has($param)) { +return false; +} +$options = $configuration->getOptions(); +$value = $request->attributes->get($param); +if (!$value && $configuration->isOptional()) { +return false; +} +if (isset($options['format'])) { +$date = DateTime::createFromFormat($options['format'], $value); +if (!$date) { +throw new NotFoundHttpException(sprintf('Invalid date given for parameter "%s".', $param)); +} +} else { +if (false === strtotime($value)) { +throw new NotFoundHttpException(sprintf('Invalid date given for parameter "%s".', $param)); +} +$date = new DateTime($value); +} +$request->attributes->set($param, $date); +return true; +} +public function supports(ParamConverter $configuration) +{ +if (null === $configuration->getClass()) { +return false; +} +return'DateTime'=== $configuration->getClass(); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpFoundation\Request; +use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\ORM\NoResultException; +class DoctrineParamConverter implements ParamConverterInterface +{ +protected $registry; +public function __construct(ManagerRegistry $registry = null) +{ +$this->registry = $registry; +} +public function apply(Request $request, ParamConverter $configuration) +{ +$name = $configuration->getName(); +$class = $configuration->getClass(); +$options = $this->getOptions($configuration); +if (null === $request->attributes->get($name, false)) { +$configuration->setIsOptional(true); +} +if (false === $object = $this->find($class, $request, $options, $name)) { +if (false === $object = $this->findOneBy($class, $request, $options)) { +if ($configuration->isOptional()) { +$object = null; +} else { +throw new \LogicException(sprintf('Unable to guess how to get a Doctrine instance from the request information for parameter "%s".', $name)); +} +} +} +if (null === $object && false === $configuration->isOptional()) { +throw new NotFoundHttpException(sprintf('%s object not found.', $class)); +} +$request->attributes->set($name, $object); +return true; +} +protected function find($class, Request $request, $options, $name) +{ +if ($options['mapping'] || $options['exclude']) { +return false; +} +$id = $this->getIdentifier($request, $options, $name); +if (false === $id || null === $id) { +return false; +} +if (isset($options['repository_method'])) { +$method = $options['repository_method']; +} else { +$method ='find'; +} +try { +return $this->getManager($options['entity_manager'], $class)->getRepository($class)->$method($id); +} catch (NoResultException $e) { +return; +} +} +protected function getIdentifier(Request $request, $options, $name) +{ +if (isset($options['id'])) { +if (!is_array($options['id'])) { +$name = $options['id']; +} elseif (is_array($options['id'])) { +$id = array(); +foreach ($options['id'] as $field) { +$id[$field] = $request->attributes->get($field); +} +return $id; +} +} +if ($request->attributes->has($name)) { +return $request->attributes->get($name); +} +if ($request->attributes->has('id') && !isset($options['id'])) { +return $request->attributes->get('id'); +} +return false; +} +protected function findOneBy($class, Request $request, $options) +{ +if (!$options['mapping']) { +$keys = $request->attributes->keys(); +$options['mapping'] = $keys ? array_combine($keys, $keys) : array(); +} +foreach ($options['exclude'] as $exclude) { +unset($options['mapping'][$exclude]); +} +if (!$options['mapping']) { +return false; +} +if (isset($options['id']) && null === $request->attributes->get($options['id'])) { +return false; +} +$criteria = array(); +$em = $this->getManager($options['entity_manager'], $class); +$metadata = $em->getClassMetadata($class); +$mapMethodSignature = isset($options['repository_method']) +&& isset($options['map_method_signature']) +&& $options['map_method_signature'] === true; +foreach ($options['mapping'] as $attribute => $field) { +if ($metadata->hasField($field) +|| ($metadata->hasAssociation($field) && $metadata->isSingleValuedAssociation($field)) +|| $mapMethodSignature) { +$criteria[$field] = $request->attributes->get($attribute); +} +} +if ($options['strip_null']) { +$criteria = array_filter($criteria, function ($value) { return !is_null($value); }); +} +if (!$criteria) { +return false; +} +if (isset($options['repository_method'])) { +$repositoryMethod = $options['repository_method']; +} else { +$repositoryMethod ='findOneBy'; +} +try { +if ($mapMethodSignature) { +return $this->findDataByMapMethodSignature($em, $class, $repositoryMethod, $criteria); +} +return $em->getRepository($class)->$repositoryMethod($criteria); +} catch (NoResultException $e) { +return; +} +} +private function findDataByMapMethodSignature($em, $class, $repositoryMethod, $criteria) +{ +$arguments = array(); +$repository = $em->getRepository($class); +$ref = new \ReflectionMethod($repository, $repositoryMethod); +foreach ($ref->getParameters() as $parameter) { +if (array_key_exists($parameter->name, $criteria)) { +$arguments[] = $criteria[$parameter->name]; +} elseif ($parameter->isDefaultValueAvailable()) { +$arguments[] = $parameter->getDefaultValue(); +} else { +throw new \InvalidArgumentException(sprintf('Repository method "%s::%s" requires that you provide a value for the "$%s" argument.', get_class($repository), $repositoryMethod, $parameter->name)); +} +} +return $ref->invokeArgs($repository, $arguments); +} +public function supports(ParamConverter $configuration) +{ +if (null === $this->registry || !count($this->registry->getManagers())) { +return false; +} +if (null === $configuration->getClass()) { +return false; +} +$options = $this->getOptions($configuration); +$em = $this->getManager($options['entity_manager'], $configuration->getClass()); +if (null === $em) { +return false; +} +return !$em->getMetadataFactory()->isTransient($configuration->getClass()); +} +protected function getOptions(ParamConverter $configuration) +{ +return array_replace(array('entity_manager'=> null,'exclude'=> array(),'mapping'=> array(),'strip_null'=> false, +), $configuration->getOptions()); +} +private function getManager($name, $class) +{ +if (null === $name) { +return $this->registry->getManagerForClass($class); +} +return $this->registry->getManager($name); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Symfony\Component\HttpFoundation\Request; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; +class ParamConverterManager +{ +protected $converters = array(); +protected $namedConverters = array(); +public function apply(Request $request, $configurations) +{ +if (is_object($configurations)) { +$configurations = array($configurations); +} +foreach ($configurations as $configuration) { +$this->applyConverter($request, $configuration); +} +} +protected function applyConverter(Request $request, ConfigurationInterface $configuration) +{ +$value = $request->attributes->get($configuration->getName()); +$className = $configuration->getClass(); +if (is_object($value) && $value instanceof $className) { +return; +} +if ($converterName = $configuration->getConverter()) { +if (!isset($this->namedConverters[$converterName])) { +throw new \RuntimeException(sprintf("No converter named '%s' found for conversion of parameter '%s'.", +$converterName, $configuration->getName() +)); +} +$converter = $this->namedConverters[$converterName]; +if (!$converter->supports($configuration)) { +throw new \RuntimeException(sprintf("Converter '%s' does not support conversion of parameter '%s'.", +$converterName, $configuration->getName() +)); +} +$converter->apply($request, $configuration); +return; +} +foreach ($this->all() as $converter) { +if ($converter->supports($configuration)) { +if ($converter->apply($request, $configuration)) { +return; +} +} +} +} +public function add(ParamConverterInterface $converter, $priority = 0, $name = null) +{ +if ($priority !== null) { +if (!isset($this->converters[$priority])) { +$this->converters[$priority] = array(); +} +$this->converters[$priority][] = $converter; +} +if (null !== $name) { +$this->namedConverters[$name] = $converter; +} +} +public function all() +{ +krsort($this->converters); +$converters = array(); +foreach ($this->converters as $all) { +$converters = array_merge($converters, $all); +} +return $converters; +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\StreamedResponse; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; +class TemplateListener implements EventSubscriberInterface +{ +protected $container; +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +public function onKernelController(FilterControllerEvent $event) +{ +$request = $event->getRequest(); +$template = $request->attributes->get('_template'); +if (null === $template) { +return; +} +if (!$template instanceof Template) { +return; +} +$template->setOwner($controller = $event->getController()); +if (null === $template->getTemplate()) { +$guesser = $this->container->get('sensio_framework_extra.view.guesser'); +$template->setTemplate($guesser->guessTemplateName($controller, $request, $template->getEngine())); +} +} +public function onKernelView(GetResponseForControllerResultEvent $event) +{ +$request = $event->getRequest(); +$template = $request->attributes->get('_template'); +if (null === $template) { +return; +} +$parameters = $event->getControllerResult(); +$owner = $template->getOwner(); +list($controller, $action) = $owner; +if (null === $parameters) { +$parameters = $this->resolveDefaultParameters($request, $template, $controller, $action); +} +$templating = $this->container->get('templating'); +if ($template->isStreamable()) { +$callback = function () use ($templating, $template, $parameters) { +return $templating->stream($template->getTemplate(), $parameters); +}; +$event->setResponse(new StreamedResponse($callback)); +} +$template->setOwner(array()); +$event->setResponse($templating->renderResponse($template->getTemplate(), $parameters)); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER => array('onKernelController', -128), +KernelEvents::VIEW =>'onKernelView', +); +} +private function resolveDefaultParameters(Request $request, Template $template, $controller, $action) +{ +$parameters = array(); +$arguments = $template->getVars(); +if (0 === count($arguments)) { +$r = new \ReflectionObject($controller); +$arguments = array(); +foreach ($r->getMethod($action)->getParameters() as $param) { +$arguments[] = $param; +} +} +foreach ($arguments as $argument) { +if ($argument instanceof \ReflectionParameter) { +$parameters[$name = $argument->getName()] = !$request->attributes->has($name) && $argument->isDefaultValueAvailable() ? $argument->getDefaultValue() : $request->attributes->get($name); +} else { +$parameters[$argument] = $request->attributes->get($argument); +} +} +return $parameters; +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\ExpressionLanguage\ExpressionLanguage; +class HttpCacheListener implements EventSubscriberInterface +{ +private $lastModifiedDates; +private $etags; +private $expressionLanguage; +public function __construct() +{ +$this->lastModifiedDates = new \SplObjectStorage(); +$this->etags = new \SplObjectStorage(); +} +public function onKernelController(FilterControllerEvent $event) +{ +$request = $event->getRequest(); +if (!$configuration = $request->attributes->get('_cache')) { +return; +} +$response = new Response(); +$lastModifiedDate =''; +if ($configuration->getLastModified()) { +$lastModifiedDate = $this->getExpressionLanguage()->evaluate($configuration->getLastModified(), $request->attributes->all()); +$response->setLastModified($lastModifiedDate); +} +$etag =''; +if ($configuration->getETag()) { +$etag = hash('sha256', $this->getExpressionLanguage()->evaluate($configuration->getETag(), $request->attributes->all())); +$response->setETag($etag); +} +if ($response->isNotModified($request)) { +$event->setController(function () use ($response) { +return $response; +}); +$event->stopPropagation(); +} else { +if ($etag) { +$this->etags[$request] = $etag; +} +if ($lastModifiedDate) { +$this->lastModifiedDates[$request] = $lastModifiedDate; +} +} +} +public function onKernelResponse(FilterResponseEvent $event) +{ +$request = $event->getRequest(); +if (!$configuration = $request->attributes->get('_cache')) { +return; +} +$response = $event->getResponse(); +if (!in_array($response->getStatusCode(), array(200, 203, 300, 301, 302, 304, 404, 410))) { +return; +} +if (null !== $age = $configuration->getSMaxAge()) { +if (!is_numeric($age)) { +$now = microtime(true); +$age = ceil(strtotime($configuration->getSMaxAge(), $now) - $now); +} +$response->setSharedMaxAge($age); +} +if (null !== $age = $configuration->getMaxAge()) { +if (!is_numeric($age)) { +$now = microtime(true); +$age = ceil(strtotime($configuration->getMaxAge(), $now) - $now); +} +$response->setMaxAge($age); +} +if (null !== $configuration->getExpires()) { +$date = \DateTime::createFromFormat('U', strtotime($configuration->getExpires()), new \DateTimeZone('UTC')); +$response->setExpires($date); +} +if (null !== $configuration->getVary()) { +$response->setVary($configuration->getVary()); +} +if ($configuration->isPublic()) { +$response->setPublic(); +} +if ($configuration->isPrivate()) { +$response->setPrivate(); +} +if (isset($this->lastModifiedDates[$request])) { +$response->setLastModified($this->lastModifiedDates[$request]); +unset($this->lastModifiedDates[$request]); +} +if (isset($this->etags[$request])) { +$response->setETag($this->etags[$request]); +unset($this->etags[$request]); +} +$event->setResponse($response); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER =>'onKernelController', +KernelEvents::RESPONSE =>'onKernelResponse', +); +} +private function getExpressionLanguage() +{ +if (null === $this->expressionLanguage) { +if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { +throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); +} +$this->expressionLanguage = new ExpressionLanguage(); +} +return $this->expressionLanguage; +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; +use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Exception\AccessDeniedException; +use Symfony\Component\Security\Core\Role\RoleHierarchyInterface; +class SecurityListener implements EventSubscriberInterface +{ +private $tokenStorage; +private $authChecker; +private $language; +private $trustResolver; +private $roleHierarchy; +public function __construct(SecurityContextInterface $securityContext = null, ExpressionLanguage $language = null, AuthenticationTrustResolverInterface $trustResolver = null, RoleHierarchyInterface $roleHierarchy = null, TokenStorageInterface $tokenStorage = null, AuthorizationCheckerInterface $authChecker = null) +{ +$this->tokenStorage = $tokenStorage ?: $securityContext; +$this->authChecker = $authChecker ?: $securityContext; +$this->language = $language; +$this->trustResolver = $trustResolver; +$this->roleHierarchy = $roleHierarchy; +} +public function onKernelController(FilterControllerEvent $event) +{ +$request = $event->getRequest(); +if (!$configuration = $request->attributes->get('_security')) { +return; +} +if (null === $this->tokenStorage || null === $this->trustResolver) { +throw new \LogicException('To use the @Security tag, you need to install the Symfony Security bundle.'); +} +if (null === $this->tokenStorage->getToken()) { +throw new \LogicException('To use the @Security tag, your controller needs to be behind a firewall.'); +} +if (null === $this->language) { +throw new \LogicException('To use the @Security tag, you need to use the Security component 2.4 or newer and install the ExpressionLanguage component.'); +} +if (!$this->language->evaluate($configuration->getExpression(), $this->getVariables($request))) { +throw new AccessDeniedException(sprintf('Expression "%s" denied access.', $configuration->getExpression())); +} +} +private function getVariables(Request $request) +{ +$token = $this->tokenStorage->getToken(); +if (null !== $this->roleHierarchy) { +$roles = $this->roleHierarchy->getReachableRoles($token->getRoles()); +} else { +$roles = $token->getRoles(); +} +$variables = array('token'=> $token,'user'=> $token->getUser(),'object'=> $request,'request'=> $request,'roles'=> array_map(function ($role) { return $role->getRole(); }, $roles),'trust_resolver'=> $this->trustResolver,'auth_checker'=> $this->authChecker, +); +return array_merge($request->attributes->all(), $variables); +} +public static function getSubscribedEvents() +{ +return array(KernelEvents::CONTROLLER =>'onKernelController'); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Configuration +{ +interface ConfigurationInterface +{ +public function getAliasName(); +public function allowArray(); +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Configuration +{ +abstract class ConfigurationAnnotation implements ConfigurationInterface +{ +public function __construct(array $values) +{ +foreach ($values as $k => $v) { +if (!method_exists($this, $name ='set'.$k)) { +throw new \RuntimeException(sprintf('Unknown key "%s" for annotation "@%s".', $k, get_class($this))); +} +$this->$name($v); +} +} +} +} \ No newline at end of file diff --git a/var/cache/dev/classes.php.meta b/var/cache/dev/classes.php.meta new file mode 100644 index 00000000..bc62a257 --- /dev/null +++ b/var/cache/dev/classes.php.meta @@ -0,0 +1 @@ +a:2:{i:0;a:156:{i:0;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php";i:1;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SessionListener.php";i:2;s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php";i:3;s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/SessionStorageInterface.php";i:4;s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php";i:5;s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/PhpBridgeSessionStorage.php";i:6;s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSessionHandler.php";i:7;s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php";i:8;s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php";i:9;s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/SessionHandlerProxy.php";i:10;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/SessionInterface.php";i:11;s:106:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Session.php";i:12;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/GlobalVariables.php";i:13;s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateReferenceInterface.php";i:14;s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateReference.php";i:15;s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php";i:16;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateNameParserInterface.php";i:17;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateNameParser.php";i:18;s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php";i:19;s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocatorInterface.php";i:20;s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/Loader/TemplateLocator.php";i:21;s:74:"/home/c2i/git/Symphony_S_A/vendor/psr/log/Psr/Log/LoggerAwareInterface.php";i:22;s:74:"/home/c2i/git/Symphony_S_A/vendor/psr/cache/src/CacheItemPoolInterface.php";i:23;s:106:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/AdapterInterface.php";i:24;s:70:"/home/c2i/git/Symphony_S_A/vendor/psr/log/Psr/Log/LoggerAwareTrait.php";i:25;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php";i:26;s:101:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php";i:27;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/FilesystemAdapterTrait.php";i:28;s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/FilesystemAdapter.php";i:29;s:70:"/home/c2i/git/Symphony_S_A/vendor/psr/cache/src/CacheItemInterface.php";i:30;s:91:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/CacheItem.php";i:31;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/RequestContextAwareInterface.php";i:32;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php";i:33;s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/ConfigurableRequirementsInterface.php";i:34;s:106:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/UrlGenerator.php";i:35;s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/RequestContext.php";i:36;s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php";i:37;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/RouterInterface.php";i:38;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RequestMatcherInterface.php";i:39;s:90:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Router.php";i:40;s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php";i:41;s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/UrlMatcher.php";i:42;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php";i:43;s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/RedirectableUrlMatcher.php";i:44;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php";i:45;s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php";i:46;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php";i:47;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php";i:48;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php";i:49;s:93:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php";i:50;s:93:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php";i:51;s:84:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php";i:52;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php";i:53;s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/DoctrineProvider.php";i:54;s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/ConfigCacheInterface.php";i:55;s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/ResourceCheckerConfigCache.php";i:56;s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/ConfigCache.php";i:57;s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocator.php";i:58;s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerAwareInterface.php";i:59;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerInterface.php";i:60;s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ResettableContainerInterface.php";i:61;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php";i:62;s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Event.php";i:63;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcherInterface.php";i:64;s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php";i:65;s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php";i:66;s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php";i:67;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php";i:68;s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/BundleInterface.php";i:69;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerAwareTrait.php";i:70;s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";i:71;s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ArgumentResolverInterface.php";i:72;s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php";i:73;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php";i:74;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver.php";i:75;s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadata.php";i:76;s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php";i:77;s:129:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactory.php";i:78;s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/KernelEvent.php";i:79;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php";i:80;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php";i:81;s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseEvent.php";i:82;s:128:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php";i:83;s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php";i:84;s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php";i:85;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/KernelEvents.php";i:86;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Config/FileLocator.php";i:87;s:120:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerNameParser.php";i:88;s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php";i:89;s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall.php";i:90;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/User/UserProviderInterface.php";i:91;s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/AuthenticationManagerInterface.php";i:92;s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/AuthenticationProviderManager.php";i:93;s:140:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/Storage/TokenStorageInterface.php";i:94;s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/Storage/TokenStorage.php";i:95;s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManagerInterface.php";i:96;s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.php";i:97;s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationCheckerInterface.php";i:98;s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php";i:99;s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php";i:100;s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallConfig.php";i:101;s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Http/FirewallMapInterface.php";i:102;s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallMap.php";i:103;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php";i:104;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/RequestMatcherInterface.php";i:105;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/RequestMatcher.php";i:106;s:68:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Environment.php";i:107;s:75:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/ExtensionInterface.php";i:108;s:66:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension.php";i:109;s:71:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension/Core.php";i:110;s:74:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension/Escaper.php";i:111;s:76:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension/Optimizer.php";i:112;s:72:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/LoaderInterface.php";i:113;s:63:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Markup.php";i:114;s:74:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/TemplateInterface.php";i:115;s:65:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Template.php";i:116;s:94:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php";i:117;s:95:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php";i:118;s:89:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php";i:119;s:90:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php";i:120;s:89:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php";i:121;s:99:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php";i:122;s:87:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php";i:123;s:95:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php";i:124;s:87:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php";i:125;s:85:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php";i:126;s:72:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Logger.php";i:127;s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php";i:128;s:87:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Logger.php";i:129;s:116:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php";i:130;s:117:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php";i:131;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php";i:132;s:99:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php";i:133;s:97:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php";i:134;s:106:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php";i:135;s:100:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php";i:136;s:79:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php";i:137;s:104:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php";i:138;s:91:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php";i:139;s:89:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php";i:140;s:101:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php";i:141;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/RegistryInterface.php";i:142;s:109:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php";i:143;s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php";i:144;s:71:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Registry.php";i:145;s:100:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/ControllerListener.php";i:146;s:104:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/ParamConverterListener.php";i:147;s:114:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/ParamConverterInterface.php";i:148;s:113:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DateTimeParamConverter.php";i:149;s:113:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DoctrineParamConverter.php";i:150;s:112:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/ParamConverterManager.php";i:151;s:98:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/TemplateListener.php";i:152;s:99:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/HttpCacheListener.php";i:153;s:98:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/SecurityListener.php";i:154;s:104:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Configuration/ConfigurationInterface.php";i:155;s:105:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Configuration/ConfigurationAnnotation.php";}i:1;a:97:{i:0;s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";i:1;s:69:"Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage";i:2;s:72:"Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage";i:3;s:81:"Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler";i:4;s:68:"Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy";i:5;s:74:"Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy";i:6;s:48:"Symfony\Component\HttpFoundation\Session\Session";i:8;s:57:"Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables";i:9;s:59:"Symfony\Bundle\FrameworkBundle\Templating\TemplateReference";i:10;s:60:"Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser";i:11;s:64:"Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator";i:12;s:43:"Symfony\Component\Cache\Adapter\ApcuAdapter";i:13;s:49:"Symfony\Component\Cache\Adapter\FilesystemAdapter";i:14;s:33:"Symfony\Component\Cache\CacheItem";i:15;s:48:"Symfony\Component\Routing\Generator\UrlGenerator";i:16;s:40:"Symfony\Component\Routing\RequestContext";i:17;s:32:"Symfony\Component\Routing\Router";i:18;s:61:"Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher";i:19;s:45:"Symfony\Bundle\FrameworkBundle\Routing\Router";i:20;s:47:"Symfony\Component\Cache\Adapter\PhpArrayAdapter";i:21;s:40:"Symfony\Component\Cache\DoctrineProvider";i:22;s:36:"Symfony\Component\Config\ConfigCache";i:23;s:36:"Symfony\Component\Config\FileLocator";i:24;s:36:"Symfony\Component\Debug\ErrorHandler";i:25;s:61:"Symfony\Component\DependencyInjection\ContainerAwareInterface";i:26;s:47:"Symfony\Component\DependencyInjection\Container";i:27;s:39:"Symfony\Component\EventDispatcher\Event";i:28;s:63:"Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher";i:29;s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";i:30;s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";i:31;s:42:"Symfony\Component\HttpKernel\Bundle\Bundle";i:32;s:58:"Symfony\Component\HttpKernel\Controller\ControllerResolver";i:33;s:56:"Symfony\Component\HttpKernel\Controller\ArgumentResolver";i:34;s:64:"Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata";i:35;s:71:"Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory";i:36;s:46:"Symfony\Component\HttpKernel\Event\KernelEvent";i:37;s:56:"Symfony\Component\HttpKernel\Event\FilterControllerEvent";i:38;s:54:"Symfony\Component\HttpKernel\Event\FilterResponseEvent";i:39;s:51:"Symfony\Component\HttpKernel\Event\GetResponseEvent";i:40;s:70:"Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent";i:41;s:63:"Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent";i:42;s:39:"Symfony\Component\HttpKernel\HttpKernel";i:43;s:41:"Symfony\Component\HttpKernel\KernelEvents";i:44;s:47:"Symfony\Component\HttpKernel\Config\FileLocator";i:45;s:62:"Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser";i:46;s:60:"Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver";i:47;s:40:"Symfony\Component\Security\Http\Firewall";i:48;s:58:"Symfony\Component\Security\Core\User\UserProviderInterface";i:49;s:76:"Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager";i:50;s:73:"Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage";i:51;s:67:"Symfony\Component\Security\Core\Authorization\AccessDecisionManager";i:52;s:66:"Symfony\Component\Security\Core\Authorization\AuthorizationChecker";i:53;s:66:"Symfony\Component\Security\Core\Authorization\Voter\VoterInterface";i:54;s:53:"Symfony\Bundle\SecurityBundle\Security\FirewallConfig";i:55;s:50:"Symfony\Bundle\SecurityBundle\Security\FirewallMap";i:56;s:54:"Symfony\Bundle\SecurityBundle\Security\FirewallContext";i:57;s:47:"Symfony\Component\HttpFoundation\RequestMatcher";i:58;s:16:"Twig_Environment";i:59;s:14:"Twig_Extension";i:60;s:19:"Twig_Extension_Core";i:61;s:22:"Twig_Extension_Escaper";i:62;s:24:"Twig_Extension_Optimizer";i:63;s:20:"Twig_LoaderInterface";i:64;s:11:"Twig_Markup";i:65;s:13:"Twig_Template";i:66;s:36:"Monolog\Formatter\FormatterInterface";i:67;s:31:"Monolog\Formatter\LineFormatter";i:68;s:32:"Monolog\Handler\HandlerInterface";i:69;s:31:"Monolog\Handler\AbstractHandler";i:70;s:41:"Monolog\Handler\AbstractProcessingHandler";i:71;s:29:"Monolog\Handler\StreamHandler";i:72;s:37:"Monolog\Handler\FingersCrossedHandler";i:73;s:29:"Monolog\Handler\FilterHandler";i:74;s:27:"Monolog\Handler\TestHandler";i:75;s:14:"Monolog\Logger";i:76;s:29:"Symfony\Bridge\Monolog\Logger";i:77;s:58:"Monolog\Handler\FingersCrossed\ActivationStrategyInterface";i:78;s:59:"Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy";i:79;s:36:"Doctrine\Common\Annotations\DocLexer";i:80;s:43:"Doctrine\Common\Annotations\FileCacheReader";i:81;s:37:"Doctrine\Common\Annotations\PhpParser";i:82;s:34:"Doctrine\Common\Annotations\Reader";i:83;s:21:"Doctrine\Common\Lexer";i:84;s:46:"Doctrine\Common\Persistence\ConnectionRegistry";i:85;s:33:"Doctrine\Common\Persistence\Proxy";i:86;s:31:"Doctrine\Common\Util\ClassUtils";i:87;s:39:"Doctrine\Bundle\DoctrineBundle\Registry";i:88;s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";i:89;s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";i:90;s:80:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter";i:91;s:80:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter";i:92;s:81:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface";i:93;s:79:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager";i:94;s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";i:95;s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";i:96;s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";i:97;s:72:"Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationAnnotation";}} \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI b/var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu b/var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 b/var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- b/var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- new file mode 100644 index 00000000..57071cbc --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489323783, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h b/var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE b/var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q b/var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q new file mode 100644 index 00000000..57071cbc --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489323783, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A b/var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd b/var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI b/var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ b/var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U b/var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f b/var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt b/var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 b/var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr b/var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm b/var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k b/var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R b/var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV b/var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY b/var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF b/var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK b/var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol b/var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 b/var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X b/var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X new file mode 100644 index 00000000..37b0bc6d --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 'a:1:{i:0;O:54:"Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route":10:{s:10:"' . "\0" . '*' . "\0" . 'service";N;s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'path";s:1:"/";s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'name";s:8:"homepage";s:56:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'requirements";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'options";a:0:{}s:52:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'defaults";a:0:{}s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'host";N;s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'methods";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'schemes";a:0:{}s:53:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'condition";N;}}', +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh b/var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX b/var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 b/var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S b/var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX b/var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG b/var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj b/var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ b/var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N b/var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 b/var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe b/var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD b/var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU b/var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J b/var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a b/var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG b/var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy b/var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e b/var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 b/var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk b/var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum b/var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi b/var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE b/var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul b/var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA b/var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC b/var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 b/var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 b/var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y b/var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E b/var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n b/var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 b/var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 new file mode 100644 index 00000000..8e2ebfe2 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/profiler/23/64/246423 b/var/cache/dev/profiler/23/64/246423 new file mode 100644 index 0000000000000000000000000000000000000000..53d557d550cc5f92e8326f81766d74e026c3ed39 GIT binary patch literal 131116 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 literal 0 HcmV?d00001 diff --git a/var/cache/dev/profiler/26/46/d94626 b/var/cache/dev/profiler/26/46/d94626 new file mode 100644 index 0000000000000000000000000000000000000000..86b0476e593968cea0adfd79410e7767f1435c14 GIT binary patch literal 289405 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
  • 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 e&mparent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59->enter($__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/symfony.svg")); + + $__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249->enter($__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/symfony.svg")); + + // line 1 + echo " + + +"; + + $__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59->leave($__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59_prof); + + + $__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249->leave($__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/symfony.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/symfony.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/symfony.svg"); + } +} diff --git a/var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php b/var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php new file mode 100644 index 00000000..9a407d31 --- /dev/null +++ b/var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php @@ -0,0 +1,405 @@ +parent = $this->loadTemplate("@Twig/layout.html.twig", "@Twig/Exception/exception_full.html.twig", 1); + $this->blocks = array( + 'head' => array($this, 'block_head'), + 'title' => array($this, 'block_title'), + 'body' => array($this, 'block_body'), + ); + } + + protected function doGetParent(array $context) + { + return "@Twig/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44->enter($__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception_full.html.twig")); + + $__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e->enter($__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception_full.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44->leave($__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44_prof); + + + $__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e->leave($__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e_prof); + + } + + // line 3 + public function block_head($context, array $blocks = array()) + { + $__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1->enter($__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e->enter($__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 4 + echo " +"; + + $__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e->leave($__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e_prof); + + + $__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1->leave($__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1_prof); + + } + + // line 136 + public function block_title($context, array $blocks = array()) + { + $__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7->enter($__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01->enter($__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + // line 137 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true); + echo " ("; + echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, (isset($context["status_text"]) ? $context["status_text"] : $this->getContext($context, "status_text")), "html", null, true); + echo ") +"; + + $__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01->leave($__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01_prof); + + + $__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7->leave($__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7_prof); + + } + + // line 140 + public function block_body($context, array $blocks = array()) + { + $__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e->enter($__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa->enter($__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 141 + echo " "; + $this->loadTemplate("@Twig/Exception/exception.html.twig", "@Twig/Exception/exception_full.html.twig", 141)->display($context); + + $__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa->leave($__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa_prof); + + + $__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e->leave($__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/exception_full.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 226 => 141, 217 => 140, 200 => 137, 191 => 136, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@Twig/layout.html.twig' %} + +{% block head %} + +{% endblock %} + +{% block title %} + {{ exception.message }} ({{ status_code }} {{ status_text }}) +{% endblock %} + +{% block body %} + {% include '@Twig/Exception/exception.html.twig' %} +{% endblock %} +", "@Twig/Exception/exception_full.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception_full.html.twig"); + } +} diff --git a/var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php b/var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php new file mode 100644 index 00000000..cd4fd655 --- /dev/null +++ b/var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php @@ -0,0 +1,1119 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9->enter($__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.css.twig")); + + $__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13->enter($__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.css.twig")); + + // line 2 + $context["colors"] = array("success" => "#4F805D", "warning" => "#A46A1F", "error" => "#B0413E"); + // line 3 + echo " +.sf-minitoolbar { + background-color: #222; + border-top-left-radius: 4px; + bottom: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; + height: 36px; + padding: 6px; + position: fixed; + right: 0; + z-index: 99999; +} + +.sf-minitoolbar a { + display: block; +} +.sf-minitoolbar svg, +.sf-minitoolbar img { + max-height: 24px; + max-width: 24px; + display: inline; +} + +.sf-toolbar-clearer { + clear: both; + height: 36px; +} + +.sf-display-none { + display: none; +} + +.sf-toolbarreset * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + vertical-align: baseline; +} + +.sf-toolbarreset { + background-color: #222; + bottom: 0; + box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + color: #EEE; + font: 11px Arial, sans-serif; + left: 0; + margin: 0; + padding: 0 36px 0 0; + position: fixed; + right: 0; + text-align: left; + text-transform: none; + z-index: 99999; + + /* neutralize the aliasing defined by external CSS styles */ + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; +} +.sf-toolbarreset abbr { + border: dashed #777; + border-width: 0 0 1px; +} +.sf-toolbarreset svg, +.sf-toolbarreset img { + height: 20px; + display: inline-block; +} + +.sf-toolbarreset .hide-button { + background: #444; + display: block; + position: absolute; + top: 0; + right: 0; + width: 36px; + height: 36px; + cursor: pointer; + text-align: center; +} +.sf-toolbarreset .hide-button svg { + max-height: 18px; + margin-top: 10px; +} + +.sf-toolbar-block { + cursor: default; + display: block; + float: left; + height: 36px; + margin-right: 0; + white-space: nowrap; +} +.sf-toolbar-block > a, +.sf-toolbar-block > a:hover { + display: block; + text-decoration: none; +} + +.sf-toolbar-block span { + display: inline-block; +} +.sf-toolbar-block .sf-toolbar-value { + color: #F5F5F5; + font-size: 13px; + line-height: 36px; + padding: 0; +} +.sf-toolbar-block .sf-toolbar-label, +.sf-toolbar-block .sf-toolbar-class-separator { + color: #AAA; + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + border-collapse: collapse; + display: table; + z-index: 100000; +} +.sf-toolbar-block hr { + border-top: 1px solid #777; + margin: 4px 0; + padding-top: 4px; +} +.sf-toolbar-block .sf-toolbar-info-piece { + /* this 'border-bottom' trick is needed because 'margin-bottom' doesn't work for table rows */ + border-bottom: solid transparent 3px; + display: table-row; +} +.sf-toolbar-block .sf-toolbar-info-piece-additional, +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: none; +} +.sf-toolbar-block .sf-toolbar-info-group { + margin-bottom: 4px; + padding-bottom: 2px; + border-bottom: 1px solid #333333; +} +.sf-toolbar-block .sf-toolbar-info-group:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status { + padding: 2px 5px; + margin-bottom: 0; +} +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status + .sf-toolbar-status { + margin-left: 4px; +} + +.sf-toolbar-block .sf-toolbar-info-piece:last-child { + margin-bottom: 0; +} + +.sf-toolbar-block .sf-toolbar-info-piece a { + color: #99CDD8; + text-decoration: underline; +} +.sf-toolbar-block .sf-toolbar-info-piece a:hover { + text-decoration: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece b { + color: #AAA; + display: table-cell; + font-size: 11px; + padding: 4px 8px 4px 0; +} +.sf-toolbar-block:not(.sf-toolbar-block-dump) .sf-toolbar-info-piece span { + color: #F5F5F5; +} +.sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + background-color: #444; + bottom: 36px; + color: #F5F5F5; + display: none; + padding: 9px 0; + position: absolute; +} + +.sf-toolbar-block .sf-toolbar-info:empty { + visibility: hidden; +} + +.sf-toolbar-block .sf-toolbar-status { + display: inline-block; + color: #FFF; + background-color: #666; + padding: 3px 6px; + margin-bottom: 2px; + vertical-align: middle; + min-width: 15px; + min-height: 13px; + text-align: center; +} + +.sf-toolbar-block .sf-toolbar-status-green { + background-color: "; + // line 208 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "success", array()); + echo "; +} +.sf-toolbar-block .sf-toolbar-status-red { + background-color: "; + // line 211 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "error", array()); + echo "; +} +.sf-toolbar-block .sf-toolbar-status-yellow { + background-color: "; + // line 214 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "warning", array()); + echo "; +} + +.sf-toolbar-block.sf-toolbar-status-green { + background-color: "; + // line 218 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "success", array()); + echo "; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-red { + background-color: "; + // line 222 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "error", array()); + echo "; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-yellow { + background-color: "; + // line 226 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "warning", array()); + echo "; + color: #FFF; +} + +.sf-toolbar-block-request .sf-toolbar-status { + color: #FFF; + display: inline-block; + font-size: 14px; + height: 36px; + line-height: 36px; + padding: 0 10px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a { + text-decoration: none; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a:hover { + text-decoration: underline; +} +.sf-toolbar-block-request .sf-toolbar-redirection-status { + font-weight: normal; + padding: 2px 4px; + line-height: 18px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece span.sf-toolbar-redirection-method { + font-size: 12px; + height: 17px; + line-height: 17px; +} + +.sf-toolbar-status-green .sf-toolbar-label, +.sf-toolbar-status-yellow .sf-toolbar-label, +.sf-toolbar-status-red .sf-toolbar-label { + color: #FFF; +} +.sf-toolbar-status-green svg path, +.sf-toolbar-status-red svg path, +.sf-toolbar-status-yellow svg path { + fill: #FFF; +} +.sf-toolbar-block-config svg path { + fill: #FFF; +} + +.sf-toolbar-block .sf-toolbar-icon { + display: block; + height: 36px; + padding: 0 7px; +} +.sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; +} + +.sf-toolbar-block .sf-toolbar-icon img, +.sf-toolbar-block .sf-toolbar-icon svg { + border-width: 0; + position: relative; + top: 8px; +} + +.sf-toolbar-block .sf-toolbar-icon img + span, +.sf-toolbar-block .sf-toolbar-icon svg + span { + margin-left: 4px; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-value { + margin-left: 4px; +} + +.sf-toolbar-block:hover { + position: relative; +} +.sf-toolbar-block:hover .sf-toolbar-icon { + background-color: #444; + position: relative; + z-index: 10002; +} +.sf-toolbar-block:hover .sf-toolbar-info { + display: block; + padding: 10px; + max-width: 480px; + max-height: 480px; + word-wrap: break-word; + overflow: hidden; + overflow-y: auto; +} +.sf-toolbar-info-piece b.sf-toolbar-ajax-info { + color: #F5F5F5; +} +.sf-toolbar-ajax-requests { + table-layout: auto; + width: 100%; +} +.sf-toolbar-ajax-requests td { + background-color: #444; + border-bottom: 1px solid #777; + color: #F5F5F5; + font-size: 12px; + padding: 4px; +} +.sf-toolbar-ajax-requests tr:last-child td { + border-bottom: 0; +} +.sf-toolbar-ajax-requests th { + background-color: #222; + border-bottom: 0; + color: #AAA; + font-size: 11px; + padding: 4px; +} +.sf-ajax-request-url { + max-width: 250px; + line-height: 9px; + overflow: hidden; + text-overflow: ellipsis; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a { + text-decoration: none; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a:hover { + text-decoration: underline; +} +.sf-ajax-request-duration { + text-align: right; +} +.sf-ajax-request-loading { + -webkit-animation: sf-blink .5s ease-in-out infinite; + -o-animation: sf-blink .5s ease-in-out infinite; + -moz-animation: sf-blink .5s ease-in-out infinite; + animation: sf-blink .5s ease-in-out infinite; +} +@-webkit-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@-moz-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} + +.sf-toolbar-block-dump pre.sf-dump { + background-color: #222; + border-color: #777; + border-radius: 0; + margin: 6px 0 12px 0; +} +.sf-toolbar-block-dump pre.sf-dump:last-child { + margin-bottom: 0; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece { + display: block; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece .sf-toolbar-file-line { + color: #AAA; + margin-left: 4px; +} +.sf-toolbar-block-dump .sf-toolbar-info img { + display: none; +} + +/* Override the setting when the toolbar is on the top */ +"; + // line 393 + if (((isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")) == "top")) { + // line 394 + echo " .sf-minitoolbar { + border-bottom-left-radius: 4px; + border-top-left-radius: 0; + bottom: auto; + right: 0; + top: 0; + } + + .sf-toolbarreset { + bottom: auto; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); + top: 0; + } + + .sf-toolbar-block .sf-toolbar-info { + bottom: auto; + top: 36px; + } +"; + } + // line 413 + echo " +"; + // line 414 + if ( !(isset($context["floatable"]) ? $context["floatable"] : $this->getContext($context, "floatable"))) { + // line 415 + echo " .sf-toolbarreset { + position: static; + } +"; + } + // line 419 + echo " +/* Responsive Design */ +.sf-toolbar-icon .sf-toolbar-label, +.sf-toolbar-icon .sf-toolbar-value { + display: none; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-label { + display: inline-block; +} + +/* Legacy Design - these styles are maintained to make old panels look + a bit better on the new toolbar */ +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + color: #AAA; + font-size: 12px; +} +.sf-toolbar-status-green .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-yellow .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-red .sf-toolbar-info-piece-additional-detail { + color: #FFF; +} + +@media (min-width: 768px) { + + .sf-toolbar-icon .sf-toolbar-label, + .sf-toolbar-icon .sf-toolbar-value { + display: inline; + } + + .sf-toolbar-block .sf-toolbar-icon img, + .sf-toolbar-block .sf-toolbar-icon svg { + top: 6px; + } + .sf-toolbar-block-time .sf-toolbar-icon svg, + .sf-toolbar-block-memory .sf-toolbar-icon svg { + display: none; + } + .sf-toolbar-block-time .sf-toolbar-icon svg + span, + .sf-toolbar-block-memory .sf-toolbar-icon svg + span { + margin-left: 0; + } + + .sf-toolbar-block .sf-toolbar-icon { + padding: 0 10px; + } + .sf-toolbar-block-time .sf-toolbar-icon { + padding-right: 5px; + } + .sf-toolbar-block-memory .sf-toolbar-icon { + padding-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; + } + .sf-toolbar-block-request .sf-toolbar-label { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-status + svg { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon svg + .sf-toolbar-label { + margin-left: 0; + } + .sf-toolbar-block-request .sf-toolbar-label + .sf-toolbar-value { + margin-right: 10px; + } + + .sf-toolbar-block-request:hover .sf-toolbar-info { + max-width: none; + } + + .sf-toolbar-block .sf-toolbar-info-piece b { + font-size: 12px; + } + .sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 13px; + } + + .sf-toolbar-block-right { + float: right; + margin-left: 0; + margin-right: 0; + } +} + +@media (min-width: 1024px) { + .sf-toolbar-block .sf-toolbar-info-piece-additional, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: inline-block; + } + + .sf-toolbar-block .sf-toolbar-info-piece-additional:empty, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail:empty { + display: none; + } +} +"; + + $__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9->leave($__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9_prof); + + + $__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13->leave($__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar.css.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 471 => 419, 465 => 415, 463 => 414, 460 => 413, 439 => 394, 437 => 393, 267 => 226, 260 => 222, 253 => 218, 246 => 214, 240 => 211, 234 => 208, 27 => 3, 25 => 2,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{# when updating any of these colors, do the same in profiler.css.twig #} +{% set colors = { 'success': '#4F805D', 'warning': '#A46A1F', 'error': '#B0413E' } %} + +.sf-minitoolbar { + background-color: #222; + border-top-left-radius: 4px; + bottom: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; + height: 36px; + padding: 6px; + position: fixed; + right: 0; + z-index: 99999; +} + +.sf-minitoolbar a { + display: block; +} +.sf-minitoolbar svg, +.sf-minitoolbar img { + max-height: 24px; + max-width: 24px; + display: inline; +} + +.sf-toolbar-clearer { + clear: both; + height: 36px; +} + +.sf-display-none { + display: none; +} + +.sf-toolbarreset * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + vertical-align: baseline; +} + +.sf-toolbarreset { + background-color: #222; + bottom: 0; + box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + color: #EEE; + font: 11px Arial, sans-serif; + left: 0; + margin: 0; + padding: 0 36px 0 0; + position: fixed; + right: 0; + text-align: left; + text-transform: none; + z-index: 99999; + + /* neutralize the aliasing defined by external CSS styles */ + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; +} +.sf-toolbarreset abbr { + border: dashed #777; + border-width: 0 0 1px; +} +.sf-toolbarreset svg, +.sf-toolbarreset img { + height: 20px; + display: inline-block; +} + +.sf-toolbarreset .hide-button { + background: #444; + display: block; + position: absolute; + top: 0; + right: 0; + width: 36px; + height: 36px; + cursor: pointer; + text-align: center; +} +.sf-toolbarreset .hide-button svg { + max-height: 18px; + margin-top: 10px; +} + +.sf-toolbar-block { + cursor: default; + display: block; + float: left; + height: 36px; + margin-right: 0; + white-space: nowrap; +} +.sf-toolbar-block > a, +.sf-toolbar-block > a:hover { + display: block; + text-decoration: none; +} + +.sf-toolbar-block span { + display: inline-block; +} +.sf-toolbar-block .sf-toolbar-value { + color: #F5F5F5; + font-size: 13px; + line-height: 36px; + padding: 0; +} +.sf-toolbar-block .sf-toolbar-label, +.sf-toolbar-block .sf-toolbar-class-separator { + color: #AAA; + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + border-collapse: collapse; + display: table; + z-index: 100000; +} +.sf-toolbar-block hr { + border-top: 1px solid #777; + margin: 4px 0; + padding-top: 4px; +} +.sf-toolbar-block .sf-toolbar-info-piece { + /* this 'border-bottom' trick is needed because 'margin-bottom' doesn't work for table rows */ + border-bottom: solid transparent 3px; + display: table-row; +} +.sf-toolbar-block .sf-toolbar-info-piece-additional, +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: none; +} +.sf-toolbar-block .sf-toolbar-info-group { + margin-bottom: 4px; + padding-bottom: 2px; + border-bottom: 1px solid #333333; +} +.sf-toolbar-block .sf-toolbar-info-group:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status { + padding: 2px 5px; + margin-bottom: 0; +} +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status + .sf-toolbar-status { + margin-left: 4px; +} + +.sf-toolbar-block .sf-toolbar-info-piece:last-child { + margin-bottom: 0; +} + +.sf-toolbar-block .sf-toolbar-info-piece a { + color: #99CDD8; + text-decoration: underline; +} +.sf-toolbar-block .sf-toolbar-info-piece a:hover { + text-decoration: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece b { + color: #AAA; + display: table-cell; + font-size: 11px; + padding: 4px 8px 4px 0; +} +.sf-toolbar-block:not(.sf-toolbar-block-dump) .sf-toolbar-info-piece span { + color: #F5F5F5; +} +.sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + background-color: #444; + bottom: 36px; + color: #F5F5F5; + display: none; + padding: 9px 0; + position: absolute; +} + +.sf-toolbar-block .sf-toolbar-info:empty { + visibility: hidden; +} + +.sf-toolbar-block .sf-toolbar-status { + display: inline-block; + color: #FFF; + background-color: #666; + padding: 3px 6px; + margin-bottom: 2px; + vertical-align: middle; + min-width: 15px; + min-height: 13px; + text-align: center; +} + +.sf-toolbar-block .sf-toolbar-status-green { + background-color: {{ colors.success|raw }}; +} +.sf-toolbar-block .sf-toolbar-status-red { + background-color: {{ colors.error|raw }}; +} +.sf-toolbar-block .sf-toolbar-status-yellow { + background-color: {{ colors.warning|raw }}; +} + +.sf-toolbar-block.sf-toolbar-status-green { + background-color: {{ colors.success|raw }}; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-red { + background-color: {{ colors.error|raw }}; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-yellow { + background-color: {{ colors.warning|raw }}; + color: #FFF; +} + +.sf-toolbar-block-request .sf-toolbar-status { + color: #FFF; + display: inline-block; + font-size: 14px; + height: 36px; + line-height: 36px; + padding: 0 10px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a { + text-decoration: none; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a:hover { + text-decoration: underline; +} +.sf-toolbar-block-request .sf-toolbar-redirection-status { + font-weight: normal; + padding: 2px 4px; + line-height: 18px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece span.sf-toolbar-redirection-method { + font-size: 12px; + height: 17px; + line-height: 17px; +} + +.sf-toolbar-status-green .sf-toolbar-label, +.sf-toolbar-status-yellow .sf-toolbar-label, +.sf-toolbar-status-red .sf-toolbar-label { + color: #FFF; +} +.sf-toolbar-status-green svg path, +.sf-toolbar-status-red svg path, +.sf-toolbar-status-yellow svg path { + fill: #FFF; +} +.sf-toolbar-block-config svg path { + fill: #FFF; +} + +.sf-toolbar-block .sf-toolbar-icon { + display: block; + height: 36px; + padding: 0 7px; +} +.sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; +} + +.sf-toolbar-block .sf-toolbar-icon img, +.sf-toolbar-block .sf-toolbar-icon svg { + border-width: 0; + position: relative; + top: 8px; +} + +.sf-toolbar-block .sf-toolbar-icon img + span, +.sf-toolbar-block .sf-toolbar-icon svg + span { + margin-left: 4px; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-value { + margin-left: 4px; +} + +.sf-toolbar-block:hover { + position: relative; +} +.sf-toolbar-block:hover .sf-toolbar-icon { + background-color: #444; + position: relative; + z-index: 10002; +} +.sf-toolbar-block:hover .sf-toolbar-info { + display: block; + padding: 10px; + max-width: 480px; + max-height: 480px; + word-wrap: break-word; + overflow: hidden; + overflow-y: auto; +} +.sf-toolbar-info-piece b.sf-toolbar-ajax-info { + color: #F5F5F5; +} +.sf-toolbar-ajax-requests { + table-layout: auto; + width: 100%; +} +.sf-toolbar-ajax-requests td { + background-color: #444; + border-bottom: 1px solid #777; + color: #F5F5F5; + font-size: 12px; + padding: 4px; +} +.sf-toolbar-ajax-requests tr:last-child td { + border-bottom: 0; +} +.sf-toolbar-ajax-requests th { + background-color: #222; + border-bottom: 0; + color: #AAA; + font-size: 11px; + padding: 4px; +} +.sf-ajax-request-url { + max-width: 250px; + line-height: 9px; + overflow: hidden; + text-overflow: ellipsis; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a { + text-decoration: none; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a:hover { + text-decoration: underline; +} +.sf-ajax-request-duration { + text-align: right; +} +.sf-ajax-request-loading { + -webkit-animation: sf-blink .5s ease-in-out infinite; + -o-animation: sf-blink .5s ease-in-out infinite; + -moz-animation: sf-blink .5s ease-in-out infinite; + animation: sf-blink .5s ease-in-out infinite; +} +@-webkit-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@-moz-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} + +.sf-toolbar-block-dump pre.sf-dump { + background-color: #222; + border-color: #777; + border-radius: 0; + margin: 6px 0 12px 0; +} +.sf-toolbar-block-dump pre.sf-dump:last-child { + margin-bottom: 0; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece { + display: block; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece .sf-toolbar-file-line { + color: #AAA; + margin-left: 4px; +} +.sf-toolbar-block-dump .sf-toolbar-info img { + display: none; +} + +/* Override the setting when the toolbar is on the top */ +{% if position == 'top' %} + .sf-minitoolbar { + border-bottom-left-radius: 4px; + border-top-left-radius: 0; + bottom: auto; + right: 0; + top: 0; + } + + .sf-toolbarreset { + bottom: auto; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); + top: 0; + } + + .sf-toolbar-block .sf-toolbar-info { + bottom: auto; + top: 36px; + } +{% endif %} + +{% if not floatable %} + .sf-toolbarreset { + position: static; + } +{% endif %} + +/* Responsive Design */ +.sf-toolbar-icon .sf-toolbar-label, +.sf-toolbar-icon .sf-toolbar-value { + display: none; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-label { + display: inline-block; +} + +/* Legacy Design - these styles are maintained to make old panels look + a bit better on the new toolbar */ +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + color: #AAA; + font-size: 12px; +} +.sf-toolbar-status-green .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-yellow .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-red .sf-toolbar-info-piece-additional-detail { + color: #FFF; +} + +@media (min-width: 768px) { + + .sf-toolbar-icon .sf-toolbar-label, + .sf-toolbar-icon .sf-toolbar-value { + display: inline; + } + + .sf-toolbar-block .sf-toolbar-icon img, + .sf-toolbar-block .sf-toolbar-icon svg { + top: 6px; + } + .sf-toolbar-block-time .sf-toolbar-icon svg, + .sf-toolbar-block-memory .sf-toolbar-icon svg { + display: none; + } + .sf-toolbar-block-time .sf-toolbar-icon svg + span, + .sf-toolbar-block-memory .sf-toolbar-icon svg + span { + margin-left: 0; + } + + .sf-toolbar-block .sf-toolbar-icon { + padding: 0 10px; + } + .sf-toolbar-block-time .sf-toolbar-icon { + padding-right: 5px; + } + .sf-toolbar-block-memory .sf-toolbar-icon { + padding-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; + } + .sf-toolbar-block-request .sf-toolbar-label { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-status + svg { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon svg + .sf-toolbar-label { + margin-left: 0; + } + .sf-toolbar-block-request .sf-toolbar-label + .sf-toolbar-value { + margin-right: 10px; + } + + .sf-toolbar-block-request:hover .sf-toolbar-info { + max-width: none; + } + + .sf-toolbar-block .sf-toolbar-info-piece b { + font-size: 12px; + } + .sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 13px; + } + + .sf-toolbar-block-right { + float: right; + margin-left: 0; + margin-right: 0; + } +} + +@media (min-width: 1024px) { + .sf-toolbar-block .sf-toolbar-info-piece-additional, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: inline-block; + } + + .sf-toolbar-block .sf-toolbar-info-piece-additional:empty, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail:empty { + display: none; + } +} +", "@WebProfiler/Profiler/toolbar.css.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar.css.twig"); + } +} diff --git a/var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php b/var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php new file mode 100644 index 00000000..b28dc798 --- /dev/null +++ b/var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e->enter($__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/twig.svg")); + + $__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3->enter($__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/twig.svg")); + + // line 1 + echo " + + +"; + + $__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e->leave($__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e_prof); + + + $__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3->leave($__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/twig.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/twig.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/twig.svg"); + } +} diff --git a/var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php b/var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php new file mode 100644 index 00000000..bc34578b --- /dev/null +++ b/var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php @@ -0,0 +1,173 @@ +parent = false; + + $this->blocks = array( + 'title' => array($this, 'block_title'), + 'stylesheets' => array($this, 'block_stylesheets'), + 'body' => array($this, 'block_body'), + 'javascripts' => array($this, 'block_javascripts'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962->enter($__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + $__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115->enter($__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + // line 1 + echo " + + + + "; + // line 5 + $this->displayBlock('title', $context, $blocks); + echo " + "; + // line 6 + $this->displayBlock('stylesheets', $context, $blocks); + // line 7 + echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\AssetExtension')->getAssetUrl("favicon.ico"), "html", null, true); + echo "\" /> + + + "; + // line 10 + $this->displayBlock('body', $context, $blocks); + // line 11 + echo " "; + $this->displayBlock('javascripts', $context, $blocks); + // line 12 + echo " + +"; + + $__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962->leave($__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962_prof); + + + $__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115->leave($__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115_prof); + + } + + // line 5 + public function block_title($context, array $blocks = array()) + { + $__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340->enter($__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab->enter($__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + echo "Welcome!"; + + $__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab->leave($__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab_prof); + + + $__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340->leave($__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340_prof); + + } + + // line 6 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167->enter($__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908->enter($__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + + $__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908->leave($__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908_prof); + + + $__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167->leave($__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167_prof); + + } + + // line 10 + public function block_body($context, array $blocks = array()) + { + $__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6->enter($__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6->enter($__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + + $__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6->leave($__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6_prof); + + + $__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6->leave($__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6_prof); + + } + + // line 11 + public function block_javascripts($context, array $blocks = array()) + { + $__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed->enter($__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + $__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79->enter($__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + + $__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79->leave($__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79_prof); + + + $__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed->leave($__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed_prof); + + } + + public function getTemplateName() + { + return "base.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 117 => 11, 100 => 10, 83 => 6, 65 => 5, 53 => 12, 50 => 11, 48 => 10, 41 => 7, 39 => 6, 35 => 5, 29 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + + +", "base.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/base.html.twig"); + } +} diff --git a/var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php b/var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php new file mode 100644 index 00000000..de5b6ecf --- /dev/null +++ b/var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499->enter($__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/time.svg")); + + $__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950->enter($__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/time.svg")); + + // line 1 + echo " + + +"; + + $__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499->leave($__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499_prof); + + + $__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950->leave($__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/time.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/time.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/time.svg"); + } +} diff --git a/var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php b/var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php new file mode 100644 index 00000000..839a99d2 --- /dev/null +++ b/var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php @@ -0,0 +1,386 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/twig.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5->enter($__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/twig.html.twig")); + + $__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863->enter($__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/twig.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5->leave($__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5_prof); + + + $__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863->leave($__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19->enter($__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50->enter($__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + $context["time"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array())) ? (sprintf("%0.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()))) : ("n/a")); + // line 5 + echo " "; + ob_start(); + // line 6 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/twig.svg"); + echo " + "; + // line 7 + echo twig_escape_filter($this->env, (isset($context["time"]) ? $context["time"] : $this->getContext($context, "time")), "html", null, true); + echo " + ms + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 10 + echo " + "; + // line 11 + ob_start(); + // line 12 + echo "
    + Render Time + "; + // line 14 + echo twig_escape_filter($this->env, (isset($context["time"]) ? $context["time"] : $this->getContext($context, "time")), "html", null, true); + echo " ms +
    +
    + Template Calls + "; + // line 18 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true); + echo " +
    +
    + Block Calls + "; + // line 22 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "blockcount", array()), "html", null, true); + echo " +
    +
    + Macro Calls + "; + // line 26 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "macrocount", array()), "html", null, true); + echo " +
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 29 + echo " + "; + // line 30 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")))); + echo " +"; + + $__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50->leave($__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50_prof); + + + $__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19->leave($__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19_prof); + + } + + // line 33 + public function block_menu($context, array $blocks = array()) + { + $__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024->enter($__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1->enter($__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 34 + echo " + "; + // line 35 + echo twig_include($this->env, $context, "@WebProfiler/Icon/twig.svg"); + echo " + Twig + +"; + + $__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1->leave($__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1_prof); + + + $__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024->leave($__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024_prof); + + } + + // line 40 + public function block_panel($context, array $blocks = array()) + { + $__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451->enter($__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f->enter($__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 41 + echo " "; + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()) == 0)) { + // line 42 + echo "

    Twig

    + +
    +

    No Twig templates were rendered for this request.

    +
    + "; + } else { + // line 48 + echo "

    Twig Metrics

    + +
    +
    + "; + // line 52 + echo twig_escape_filter($this->env, sprintf("%0.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array())), "html", null, true); + echo " ms + Render time +
    + +
    + "; + // line 57 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true); + echo " + Template calls +
    + +
    + "; + // line 62 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "blockcount", array()), "html", null, true); + echo " + Block calls +
    + +
    + "; + // line 67 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "macrocount", array()), "html", null, true); + echo " + Macro calls +
    +
    + +

    + Render time includes sub-requests rendering time (if any). +

    + +

    Rendered Templates

    + + + + + + + + + + "; + // line 86 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templates", array())); + foreach ($context['_seq'] as $context["template"] => $context["count"]) { + // line 87 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['template'], $context['count'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 92 + echo " +
    Template NameRender Count
    "; + // line 88 + echo twig_escape_filter($this->env, $context["template"], "html", null, true); + echo ""; + // line 89 + echo twig_escape_filter($this->env, $context["count"], "html", null, true); + echo "
    + +

    Rendering Call Graph

    + +
    + "; + // line 98 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "htmlcallgraph", array()), "html", null, true); + echo " +
    + "; + } + + $__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f->leave($__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f_prof); + + + $__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451->leave($__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/twig.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 245 => 98, 237 => 92, 228 => 89, 224 => 88, 221 => 87, 217 => 86, 195 => 67, 187 => 62, 179 => 57, 171 => 52, 165 => 48, 157 => 42, 154 => 41, 145 => 40, 131 => 35, 128 => 34, 119 => 33, 107 => 30, 104 => 29, 98 => 26, 91 => 22, 84 => 18, 77 => 14, 73 => 12, 71 => 11, 68 => 10, 62 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set time = collector.templatecount ? '%0.0f'|format(collector.time) : 'n/a' %} + {% set icon %} + {{ include('@WebProfiler/Icon/twig.svg') }} + {{ time }} + ms + {% endset %} + + {% set text %} +
    + Render Time + {{ time }} ms +
    +
    + Template Calls + {{ collector.templatecount }} +
    +
    + Block Calls + {{ collector.blockcount }} +
    +
    + Macro Calls + {{ collector.macrocount }} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/twig.svg') }} + Twig + +{% endblock %} + +{% block panel %} + {% if collector.templatecount == 0 %} +

    Twig

    + +
    +

    No Twig templates were rendered for this request.

    +
    + {% else %} +

    Twig Metrics

    + +
    +
    + {{ '%0.0f'|format(collector.time) }} ms + Render time +
    + +
    + {{ collector.templatecount }} + Template calls +
    + +
    + {{ collector.blockcount }} + Block calls +
    + +
    + {{ collector.macrocount }} + Macro calls +
    +
    + +

    + Render time includes sub-requests rendering time (if any). +

    + +

    Rendered Templates

    + + + + + + + + + + {% for template, count in collector.templates %} + + + + + {% endfor %} + +
    Template NameRender Count
    {{ template }}{{ count }}
    + +

    Rendering Call Graph

    + +
    + {{ collector.htmlcallgraph }} +
    + {% endif %} +{% endblock %} +", "@WebProfiler/Collector/twig.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/twig.html.twig"); + } +} diff --git a/var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php b/var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php new file mode 100644 index 00000000..66065d23 --- /dev/null +++ b/var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php @@ -0,0 +1,847 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/logger.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7->enter($__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/logger.html.twig")); + + $__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839->enter($__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/logger.html.twig")); + + // line 3 + $context["helper"] = $this; + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7->leave($__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7_prof); + + + $__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839->leave($__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839_prof); + + } + + // line 5 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c->enter($__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44->enter($__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 6 + echo " "; + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array()))) { + // line 7 + echo " "; + ob_start(); + // line 8 + echo " "; + $context["status_color"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("red") : ("yellow")); + // line 9 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/logger.svg"); + echo " + "; + // line 10 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) : (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())))), "html", null, true); + echo " + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 12 + echo " + "; + // line 13 + ob_start(); + // line 14 + echo "
    + Errors + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("red") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "counterrors", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "counterrors", array()), 0)) : (0)), "html", null, true); + echo " +
    + +
    + Warnings + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())) ? ("yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countwarnings", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countwarnings", array()), 0)) : (0)), "html", null, true); + echo " +
    + +
    + Deprecations + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) ? ("yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array()), 0)) : (0)), "html", null, true); + echo " +
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 29 + echo " + "; + // line 30 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " + "; + } + + $__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44->leave($__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44_prof); + + + $__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c->leave($__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c_prof); + + } + + // line 34 + public function block_menu($context, array $blocks = array()) + { + $__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef->enter($__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f->enter($__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 35 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("error") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array()))) ? ("warning") : ("")))); + echo " "; + echo ((twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array()))) ? ("disabled") : ("")); + echo "\"> + "; + // line 36 + echo twig_include($this->env, $context, "@WebProfiler/Icon/logger.svg"); + echo " + Logs + "; + // line 38 + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array()))) { + // line 39 + echo " + "; + // line 40 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) : (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())))), "html", null, true); + echo " + + "; + } + // line 43 + echo " +"; + + $__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f->leave($__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f_prof); + + + $__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef->leave($__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef_prof); + + } + + // line 46 + public function block_panel($context, array $blocks = array()) + { + $__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a->enter($__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702->enter($__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 47 + echo "

    Log Messages

    + + "; + // line 49 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array()))) { + // line 50 + echo "
    +

    No log messages available.

    +
    + "; + } else { + // line 54 + echo " "; + // line 55 + echo " "; + list($context["deprecation_logs"], $context["debug_logs"], $context["info_and_error_logs"], $context["silenced_logs"]) = array(array(), array(), array(), array()); + // line 56 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array())); + foreach ($context['_seq'] as $context["_key"] => $context["log"]) { + // line 57 + echo " "; + if (($this->getAttribute($context["log"], "scream", array(), "any", true, true) && !$this->getAttribute($context["log"], "scream", array()))) { + // line 58 + echo " "; + $context["deprecation_logs"] = twig_array_merge((isset($context["deprecation_logs"]) ? $context["deprecation_logs"] : $this->getContext($context, "deprecation_logs")), array(0 => $context["log"])); + // line 59 + echo " "; + } elseif (($this->getAttribute($context["log"], "scream", array(), "any", true, true) && $this->getAttribute($context["log"], "scream", array()))) { + // line 60 + echo " "; + $context["silenced_logs"] = twig_array_merge((isset($context["silenced_logs"]) ? $context["silenced_logs"] : $this->getContext($context, "silenced_logs")), array(0 => $context["log"])); + // line 61 + echo " "; + } elseif (($this->getAttribute($context["log"], "priorityName", array()) == "DEBUG")) { + // line 62 + echo " "; + $context["debug_logs"] = twig_array_merge((isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs")), array(0 => $context["log"])); + // line 63 + echo " "; + } else { + // line 64 + echo " "; + $context["info_and_error_logs"] = twig_array_merge((isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs")), array(0 => $context["log"])); + // line 65 + echo " "; + } + // line 66 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 67 + echo " +
    +
    +

    Info. & Errors getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("error") : ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())) ? ("warning") : ("")))); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) : (twig_length_filter($this->env, (isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs"))))), "html", null, true); + echo "

    + +
    + "; + // line 73 + if (twig_test_empty((isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs")))) { + // line 74 + echo "
    +

    There are no log messages of this level.

    +
    + "; + } else { + // line 78 + echo " "; + echo $context["helper"]->getrender_table((isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs")), "info", true); + echo " + "; + } + // line 80 + echo "
    +
    + +
    + "; + // line 86 + echo "

    Deprecations getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) ? ("warning") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array()), 0)) : (0)), "html", null, true); + echo "

    + +
    + "; + // line 89 + if (twig_test_empty((isset($context["deprecation_logs"]) ? $context["deprecation_logs"] : $this->getContext($context, "deprecation_logs")))) { + // line 90 + echo "
    +

    There are no log messages about deprecated features.

    +
    + "; + } else { + // line 94 + echo " "; + echo $context["helper"]->getrender_table((isset($context["deprecation_logs"]) ? $context["deprecation_logs"] : $this->getContext($context, "deprecation_logs")), "deprecation", false, true); + echo " + "; + } + // line 96 + echo "
    +
    + +
    +

    Debug "; + // line 100 + echo twig_escape_filter($this->env, twig_length_filter($this->env, (isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs"))), "html", null, true); + echo "

    + +
    + "; + // line 103 + if (twig_test_empty((isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs")))) { + // line 104 + echo "
    +

    There are no log messages of this level.

    +
    + "; + } else { + // line 108 + echo " "; + echo $context["helper"]->getrender_table((isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs")), "debug"); + echo " + "; + } + // line 110 + echo "
    +
    + +
    +

    Silenced PHP Notices"; + // line 114 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countscreams", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countscreams", array()), 0)) : (0)), "html", null, true); + echo "

    + +
    + "; + // line 117 + if (twig_test_empty((isset($context["silenced_logs"]) ? $context["silenced_logs"] : $this->getContext($context, "silenced_logs")))) { + // line 118 + echo "
    +

    There are no log messages of this level.

    +
    + "; + } else { + // line 122 + echo " "; + echo $context["helper"]->getrender_table((isset($context["silenced_logs"]) ? $context["silenced_logs"] : $this->getContext($context, "silenced_logs")), "silenced"); + echo " + "; + } + // line 124 + echo "
    +
    + +
    + "; + } + + $__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702->leave($__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702_prof); + + + $__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a->leave($__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a_prof); + + } + + // line 131 + public function getrender_table($__logs__ = null, $__category__ = "", $__show_level__ = false, $__is_deprecation__ = false, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "logs" => $__logs__, + "category" => $__category__, + "show_level" => $__show_level__, + "is_deprecation" => $__is_deprecation__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff->enter($__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + $__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f->enter($__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + // line 132 + echo " "; + $context["helper"] = $this; + // line 133 + echo " "; + $context["channel_is_defined"] = $this->getAttribute(twig_first($this->env, (isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))), "channel", array(), "any", true, true); + // line 134 + echo " + + + + + "; + // line 139 + if ((isset($context["channel_is_defined"]) ? $context["channel_is_defined"] : $this->getContext($context, "channel_is_defined"))) { + echo ""; + } + // line 140 + echo " + + + + + "; + // line 145 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["log"]) { + // line 146 + echo " "; + $context["css_class"] = (((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) ? ("") : (((twig_in_filter($this->getAttribute( // line 147 +$context["log"], "priorityName", array()), array(0 => "CRITICAL", 1 => "ERROR", 2 => "ALERT", 3 => "EMERGENCY"))) ? ("status-error") : (((($this->getAttribute( // line 148 +$context["log"], "priorityName", array()) == "WARNING")) ? ("status-warning") : ("")))))); + // line 150 + echo " env, (isset($context["css_class"]) ? $context["css_class"] : $this->getContext($context, "css_class")), "html", null, true); + echo "\"> + + + "; + // line 158 + if ((isset($context["channel_is_defined"]) ? $context["channel_is_defined"] : $this->getContext($context, "channel_is_defined"))) { + // line 159 + echo " + + "; + } + // line 167 + echo " + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 171 + echo " +
    "; + // line 138 + echo (((isset($context["show_level"]) ? $context["show_level"] : $this->getContext($context, "show_level"))) ? ("Level") : ("Time")); + echo "ChannelMessage
    + "; + // line 152 + if ((isset($context["show_level"]) ? $context["show_level"] : $this->getContext($context, "show_level"))) { + // line 153 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "priorityName", array()), "html", null, true); + echo " + "; + } + // line 155 + echo " "; + echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute($context["log"], "timestamp", array()), "H:i:s"), "html", null, true); + echo " + + "; + // line 160 + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "channel", array()), "html", null, true); + echo " + "; + // line 161 + if (($this->getAttribute($context["log"], "errorCount", array(), "any", true, true) && ($this->getAttribute($context["log"], "errorCount", array()) > 1))) { + // line 162 + echo " ("; + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "errorCount", array()), "html", null, true); + echo " times) + "; + } + // line 164 + echo " "; + // line 168 + echo $context["helper"]->getrender_log_message((isset($context["category"]) ? $context["category"] : $this->getContext($context, "category")), $this->getAttribute($context["loop"], "index", array()), $context["log"], (isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))); + echo "
    +"; + + $__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f->leave($__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f_prof); + + + $__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff->leave($__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 175 + public function getrender_log_message($__category__ = null, $__log_index__ = null, $__log__ = null, $__is_deprecation__ = false, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "category" => $__category__, + "log_index" => $__log_index__, + "log" => $__log__, + "is_deprecation" => $__is_deprecation__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4->enter($__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_log_message")); + + $__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e->enter($__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_log_message")); + + // line 176 + echo " "; + if ((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) { + // line 177 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), "html", null, true); + echo " + + "; + // line 179 + $context["context_id"] = ((("context-" . (isset($context["category"]) ? $context["category"] : $this->getContext($context, "category"))) . "-") . (isset($context["log_index"]) ? $context["log_index"] : $this->getContext($context, "log_index"))); + // line 180 + echo " + +
    env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide trace\">Show trace + +
    env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" class=\"context sf-toggle-content sf-toggle-hidden\"> + "; + // line 185 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array()), "seek", array(0 => "exception"), "method"), "seek", array(0 => "\000Exception\000trace"), "method"), 2)); + echo " +
    + + "; + } elseif (($this->getAttribute( // line 188 +(isset($context["log"]) ? $context["log"] : null), "context", array(), "any", true, true) && !twig_test_empty($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array())))) { + // line 189 + echo " "; + echo $this->env->getExtension('Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension')->dumpLog($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array())); + echo " + + "; + // line 191 + $context["context_id"] = ((("context-" . (isset($context["category"]) ? $context["category"] : $this->getContext($context, "category"))) . "-") . (isset($context["log_index"]) ? $context["log_index"] : $this->getContext($context, "log_index"))); + // line 192 + echo " + + env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide context\">Show context + +
    env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" class=\"context sf-toggle-content sf-toggle-hidden\"> + "; + // line 197 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array()), 1)); + echo " +
    +
    + "; + } else { + // line 201 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), "html", null, true); + echo " + "; + } + + $__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e->leave($__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e_prof); + + + $__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4->leave($__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/logger.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 593 => 201, 586 => 197, 582 => 196, 577 => 194, 573 => 192, 571 => 191, 565 => 189, 563 => 188, 557 => 185, 553 => 184, 548 => 182, 544 => 180, 542 => 179, 536 => 177, 533 => 176, 512 => 175, 489 => 171, 472 => 168, 469 => 167, 464 => 164, 458 => 162, 456 => 161, 452 => 160, 449 => 159, 447 => 158, 440 => 155, 434 => 153, 432 => 152, 426 => 150, 424 => 148, 423 => 147, 421 => 146, 404 => 145, 397 => 140, 393 => 139, 389 => 138, 383 => 134, 380 => 133, 377 => 132, 356 => 131, 341 => 124, 335 => 122, 329 => 118, 327 => 117, 321 => 114, 315 => 110, 309 => 108, 303 => 104, 301 => 103, 295 => 100, 289 => 96, 283 => 94, 277 => 90, 275 => 89, 266 => 86, 260 => 80, 254 => 78, 248 => 74, 246 => 73, 238 => 70, 233 => 67, 227 => 66, 224 => 65, 221 => 64, 218 => 63, 215 => 62, 212 => 61, 209 => 60, 206 => 59, 203 => 58, 200 => 57, 195 => 56, 192 => 55, 190 => 54, 184 => 50, 182 => 49, 178 => 47, 169 => 46, 158 => 43, 152 => 40, 149 => 39, 147 => 38, 142 => 36, 135 => 35, 126 => 34, 113 => 30, 110 => 29, 102 => 26, 92 => 21, 82 => 16, 78 => 14, 76 => 13, 73 => 12, 68 => 10, 63 => 9, 60 => 8, 57 => 7, 54 => 6, 45 => 5, 35 => 1, 33 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% import _self as helper %} + +{% block toolbar %} + {% if collector.counterrors or collector.countdeprecations or collector.countwarnings %} + {% set icon %} + {% set status_color = collector.counterrors ? 'red' : 'yellow' %} + {{ include('@WebProfiler/Icon/logger.svg') }} + {{ collector.counterrors ?: (collector.countdeprecations + collector.countwarnings) }} + {% endset %} + + {% set text %} +
    + Errors + {{ collector.counterrors|default(0) }} +
    + +
    + Warnings + {{ collector.countwarnings|default(0) }} +
    + +
    + Deprecations + {{ collector.countdeprecations|default(0) }} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} + {% endif %} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/logger.svg') }} + Logs + {% if collector.counterrors or collector.countdeprecations or collector.countwarnings %} + + {{ collector.counterrors ?: (collector.countdeprecations + collector.countwarnings) }} + + {% endif %} + +{% endblock %} + +{% block panel %} +

    Log Messages

    + + {% if collector.logs is empty %} +
    +

    No log messages available.

    +
    + {% else %} + {# sort collected logs in groups #} + {% set deprecation_logs, debug_logs, info_and_error_logs, silenced_logs = [], [], [], [] %} + {% for log in collector.logs %} + {% if log.scream is defined and not log.scream %} + {% set deprecation_logs = deprecation_logs|merge([log]) %} + {% elseif log.scream is defined and log.scream %} + {% set silenced_logs = silenced_logs|merge([log]) %} + {% elseif log.priorityName == 'DEBUG' %} + {% set debug_logs = debug_logs|merge([log]) %} + {% else %} + {% set info_and_error_logs = info_and_error_logs|merge([log]) %} + {% endif %} + {% endfor %} + +
    +
    +

    Info. & Errors {{ collector.counterrors ?: info_and_error_logs|length }}

    + +
    + {% if info_and_error_logs is empty %} +
    +

    There are no log messages of this level.

    +
    + {% else %} + {{ helper.render_table(info_and_error_logs, 'info', true) }} + {% endif %} +
    +
    + +
    + {# 'deprecation_logs|length' is not used because deprecations are + now grouped and the group count doesn't match the message count #} +

    Deprecations {{ collector.countdeprecations|default(0) }}

    + +
    + {% if deprecation_logs is empty %} +
    +

    There are no log messages about deprecated features.

    +
    + {% else %} + {{ helper.render_table(deprecation_logs, 'deprecation', false, true) }} + {% endif %} +
    +
    + +
    +

    Debug {{ debug_logs|length }}

    + +
    + {% if debug_logs is empty %} +
    +

    There are no log messages of this level.

    +
    + {% else %} + {{ helper.render_table(debug_logs, 'debug') }} + {% endif %} +
    +
    + +
    +

    Silenced PHP Notices{{ collector.countscreams|default(0) }}

    + +
    + {% if silenced_logs is empty %} +
    +

    There are no log messages of this level.

    +
    + {% else %} + {{ helper.render_table(silenced_logs, 'silenced') }} + {% endif %} +
    +
    + +
    + {% endif %} +{% endblock %} + +{% macro render_table(logs, category = '', show_level = false, is_deprecation = false) %} + {% import _self as helper %} + {% set channel_is_defined = (logs|first).channel is defined %} + + + + + + {% if channel_is_defined %}{% endif %} + + + + + + {% for log in logs %} + {% set css_class = is_deprecation ? '' + : log.priorityName in ['CRITICAL', 'ERROR', 'ALERT', 'EMERGENCY'] ? 'status-error' + : log.priorityName == 'WARNING' ? 'status-warning' + %} + + + + {% if channel_is_defined %} + + + {% endif %} + + + + {% endfor %} + +
    {{ show_level ? 'Level' : 'Time' }}ChannelMessage
    + {% if show_level %} + {{ log.priorityName }} + {% endif %} + {{ log.timestamp|date('H:i:s') }} + + {{ log.channel }} + {% if log.errorCount is defined and log.errorCount > 1 %} + ({{ log.errorCount }} times) + {% endif %} + {{ helper.render_log_message(category, loop.index, log, is_deprecation) }}
    +{% endmacro %} + +{% macro render_log_message(category, log_index, log, is_deprecation = false) %} + {% if is_deprecation %} + {{ log.message }} + + {% set context_id = 'context-' ~ category ~ '-' ~ log_index %} + + + Show trace + +
    + {{ profiler_dump(log.context.seek('exception').seek('\\0Exception\\0trace'), maxDepth=2) }} +
    +
    + {% elseif log.context is defined and log.context is not empty %} + {{ profiler_dump_log(log.message, log.context) }} + + {% set context_id = 'context-' ~ category ~ '-' ~ log_index %} + + + Show context + +
    + {{ profiler_dump(log.context, maxDepth=1) }} +
    +
    + {% else %} + {{ log.message }} + {% endif %} +{% endmacro %} +", "@WebProfiler/Collector/logger.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig"); + } +} diff --git a/var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php b/var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php new file mode 100644 index 00000000..c09d0853 --- /dev/null +++ b/var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0->enter($__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/close.svg")); + + $__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055->enter($__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/close.svg")); + + // line 1 + echo " + + +"; + + $__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0->leave($__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0_prof); + + + $__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055->leave($__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/close.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/close.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/close.svg"); + } +} diff --git a/var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php b/var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php new file mode 100644 index 00000000..0dd6b990 --- /dev/null +++ b/var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php @@ -0,0 +1,154 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/memory.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615->enter($__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/memory.html.twig")); + + $__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515->enter($__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/memory.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615->leave($__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615_prof); + + + $__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515->leave($__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b->enter($__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0->enter($__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + ob_start(); + // line 5 + echo " "; + $context["status_color"] = ((((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024) > 50)) ? ("yellow") : ("")); + // line 6 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/memory.svg"); + echo " + "; + // line 7 + echo twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024)), "html", null, true); + echo " + MB + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 10 + echo " + "; + // line 11 + ob_start(); + // line 12 + echo "
    + Peak memory usage + "; + // line 14 + echo twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024)), "html", null, true); + echo " MB +
    + +
    + PHP memory limit + "; + // line 19 + echo twig_escape_filter($this->env, ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memoryLimit", array()) == -1)) ? ("Unlimited") : (sprintf("%.0f MB", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memoryLimit", array()) / 1024) / 1024)))), "html", null, true); + echo " +
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 22 + echo " + "; + // line 23 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "name" => "time", "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " +"; + + $__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0->leave($__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0_prof); + + + $__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b->leave($__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/memory.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 92 => 23, 89 => 22, 83 => 19, 75 => 14, 71 => 12, 69 => 11, 66 => 10, 60 => 7, 55 => 6, 52 => 5, 49 => 4, 40 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + {% set status_color = (collector.memory / 1024 / 1024) > 50 ? 'yellow' : '' %} + {{ include('@WebProfiler/Icon/memory.svg') }} + {{ '%.1f'|format(collector.memory / 1024 / 1024) }} + MB + {% endset %} + + {% set text %} +
    + Peak memory usage + {{ '%.1f'|format(collector.memory / 1024 / 1024) }} MB +
    + +
    + PHP memory limit + {{ collector.memoryLimit == -1 ? 'Unlimited' : '%.0f MB'|format(collector.memoryLimit / 1024 / 1024) }} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, name: 'time', status: status_color }) }} +{% endblock %} +", "@WebProfiler/Collector/memory.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/memory.html.twig"); + } +} diff --git a/var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php b/var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php new file mode 100644 index 00000000..e68665e5 --- /dev/null +++ b/var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php @@ -0,0 +1,219 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f->enter($__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.html.twig")); + + $__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2->enter($__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.html.twig")); + + // line 1 + echo " +"; + // line 2 + if (("normal" != (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")))) { + // line 3 + echo "
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-minitoolbar\" data-no-turbolink> + env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" accesskey=\"D\"> + "; + // line 5 + echo twig_include($this->env, $context, "@WebProfiler/Icon/symfony.svg"); + echo " + +
    + getContext($context, "csp_style_nonce"))) { + echo " nonce=\""; + echo twig_escape_filter($this->env, (isset($context["csp_style_nonce"]) ? $context["csp_style_nonce"] : $this->getContext($context, "csp_style_nonce")), "html", null, true); + echo "\""; + } + echo "> + "; + // line 9 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar.css.twig", array("position" => (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "floatable" => true)); + echo " + +
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-toolbar-clearer\">
    +"; + } + // line 13 + echo " +
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-toolbarreset clear-fix\" data-no-turbolink> + "; + // line 15 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["templates"]) ? $context["templates"] : $this->getContext($context, "templates"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["name"] => $context["template"]) { + // line 16 + echo " "; + if ( $this->loadTemplate($context["template"], "@WebProfiler/Profiler/toolbar.html.twig", 16)->hasBlock("toolbar", $context)) { + // line 17 + echo " "; + $__internal_5b604d56220bc0d6353c1b14327d35bc9fd3ab85a1db1b55d7f76e5d62ad7a3e = array("collector" => $this->getAttribute( // line 18 +(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => $context["name"]), "method"), "profiler_url" => // line 19 +(isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "token" => $this->getAttribute( // line 20 +(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "token", array()), "name" => // line 21 +$context["name"], "profiler_markup_version" => // line 22 +(isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), "csp_script_nonce" => // line 23 +(isset($context["csp_script_nonce"]) ? $context["csp_script_nonce"] : $this->getContext($context, "csp_script_nonce")), "csp_style_nonce" => // line 24 +(isset($context["csp_style_nonce"]) ? $context["csp_style_nonce"] : $this->getContext($context, "csp_style_nonce"))); + if (!is_array($__internal_5b604d56220bc0d6353c1b14327d35bc9fd3ab85a1db1b55d7f76e5d62ad7a3e)) { + throw new Twig_Error_Runtime('Variables passed to the "with" tag must be a hash.'); + } + $context['_parent'] = $context; + $context = array_merge($context, $__internal_5b604d56220bc0d6353c1b14327d35bc9fd3ab85a1db1b55d7f76e5d62ad7a3e); + // line 26 + echo " "; + $this->loadTemplate($context["template"], "@WebProfiler/Profiler/toolbar.html.twig", 26)->displayBlock("toolbar", $context); + echo " + "; + $context = $context['_parent']; + // line 28 + echo " "; + } + // line 29 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['name'], $context['template'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 30 + echo " + "; + // line 31 + if (("normal" != (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")))) { + // line 32 + echo " env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" title=\"Close Toolbar\" tabindex=\"-1\" accesskey=\"D\"> + "; + // line 33 + echo twig_include($this->env, $context, "@WebProfiler/Icon/close.svg"); + echo " + + "; + } + // line 36 + echo "
    + +"; + + $__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f->leave($__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f_prof); + + + $__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2->leave($__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 144 => 36, 138 => 33, 133 => 32, 131 => 31, 128 => 30, 114 => 29, 111 => 28, 105 => 26, 98 => 24, 97 => 23, 96 => 22, 95 => 21, 94 => 20, 93 => 19, 92 => 18, 90 => 17, 87 => 16, 70 => 15, 66 => 14, 63 => 13, 58 => 11, 53 => 9, 45 => 8, 39 => 5, 35 => 4, 30 => 3, 28 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" +{% if 'normal' != position %} + + + {{ include('@WebProfiler/Profiler/toolbar.css.twig', { 'position': position, 'floatable': true }) }} + +
    +{% endif %} + +
    + {% for name, template in templates %} + {% if block('toolbar', template) is defined %} + {% with { + collector: profile.getcollector(name), + profiler_url: profiler_url, + token: profile.token, + name: name, + profiler_markup_version: profiler_markup_version, + csp_script_nonce: csp_script_nonce, + csp_style_nonce: csp_style_nonce + } %} + {{ block('toolbar', template) }} + {% endwith %} + {% endif %} + {% endfor %} + + {% if 'normal' != position %} + + {{ include('@WebProfiler/Icon/close.svg') }} + + {% endif %} +
    + +", "@WebProfiler/Profiler/toolbar.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar.html.twig"); + } +} diff --git a/var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php b/var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php new file mode 100644 index 00000000..8058317d --- /dev/null +++ b/var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php @@ -0,0 +1,1019 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/request.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c->enter($__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/request.html.twig")); + + $__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2->enter($__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/request.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c->leave($__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c_prof); + + + $__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2->leave($__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c->enter($__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5->enter($__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + ob_start(); + // line 5 + echo " "; + $context["helper"] = $this; + // line 6 + echo " "; + echo $context["helper"]->getset_handler($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array())); + echo " + "; + $context["request_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 8 + echo " + "; + // line 9 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array())) { + // line 10 + echo " "; + ob_start(); + // line 11 + echo " "; + $context["helper"] = $this; + // line 12 + echo " "; + echo $context["helper"]->getset_handler($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "controller", array()), $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "route", array()), ((("GET" != $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "method", array()))) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "method", array())) : (""))); + echo " + "; + $context["redirect_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 14 + echo " "; + } + // line 15 + echo " + "; + // line 16 + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array()), false)) : (false))) { + // line 17 + echo " "; + ob_start(); + // line 18 + echo " "; + $context["helper"] = $this; + // line 19 + echo " "; + echo $context["helper"]->getset_handler($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "forward", array()), "controller", array())); + echo " + "; + $context["forward_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 21 + echo " "; + } + // line 22 + echo " + "; + // line 23 + $context["request_status_code_color"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()) >= 400)) ? ("red") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()) >= 300)) ? ("yellow") : ("green")))); + // line 24 + echo " + "; + // line 25 + ob_start(); + // line 26 + echo " env, (isset($context["request_status_code_color"]) ? $context["request_status_code_color"] : $this->getContext($context, "request_status_code_color")), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()), "html", null, true); + echo " + "; + // line 27 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "route", array())) { + // line 28 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array())) { + echo twig_include($this->env, $context, "@WebProfiler/Icon/redirect.svg"); + } + // line 29 + echo " "; + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array()), false)) : (false))) { + echo twig_include($this->env, $context, "@WebProfiler/Icon/forward.svg"); + } + // line 30 + echo " "; + echo twig_escape_filter($this->env, ((("GET" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array()))) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array())) : ("")), "html", null, true); + echo " @ + "; + // line 31 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "route", array()), "html", null, true); + echo " + "; + } + // line 33 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 34 + echo " + "; + // line 35 + ob_start(); + // line 36 + echo "
    +
    + HTTP status + "; + // line 39 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statustext", array()), "html", null, true); + echo " +
    + + "; + // line 42 + if (("GET" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array()))) { + // line 43 + echo "
    + Method + "; + // line 45 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array()), "html", null, true); + echo " +
    "; + } + // line 48 + echo " +
    + Controller + "; + // line 51 + echo twig_escape_filter($this->env, (isset($context["request_handler"]) ? $context["request_handler"] : $this->getContext($context, "request_handler")), "html", null, true); + echo " +
    + + "; + // line 54 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "controller", array(), "any", false, true), "class", array(), "any", true, true)) { + // line 55 + echo "
    + Controller class + "; + // line 57 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "class", array()), "html", null, true); + echo " +
    "; + } + // line 60 + echo " +
    + Route name + "; + // line 63 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "route", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "route", array()), "NONE")) : ("NONE")), "html", null, true); + echo " +
    + +
    + Has session + "; + // line 68 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) { + echo "yes"; + } else { + echo "no"; + } + echo " +
    +
    + + "; + // line 72 + if (array_key_exists("redirect_handler", $context)) { + // line 73 + echo "
    +
    + + "; + // line 76 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "status_code", array()), "html", null, true); + echo " + Redirect from + + + "; + // line 80 + echo twig_escape_filter($this->env, (isset($context["redirect_handler"]) ? $context["redirect_handler"] : $this->getContext($context, "redirect_handler")), "html", null, true); + echo " + (env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "token", array()))), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "token", array()), "html", null, true); + echo ") + +
    +
    + "; + } + // line 86 + echo " + "; + // line 87 + if (array_key_exists("forward_handler", $context)) { + // line 88 + echo " + "; + } + // line 98 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 99 + echo " + "; + // line 100 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")))); + echo " +"; + + $__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5->leave($__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5_prof); + + + $__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c->leave($__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c_prof); + + } + + // line 103 + public function block_menu($context, array $blocks = array()) + { + $__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2->enter($__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc->enter($__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 104 + echo " + "; + // line 105 + echo twig_include($this->env, $context, "@WebProfiler/Icon/request.svg"); + echo " + Request / Response + +"; + + $__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc->leave($__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc_prof); + + + $__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2->leave($__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2_prof); + + } + + // line 110 + public function block_panel($context, array $blocks = array()) + { + $__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905->enter($__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6->enter($__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 111 + echo "
    +
    +

    Request

    + +
    +

    GET Parameters

    + + "; + // line 118 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestquery", array()), "all", array()))) { + // line 119 + echo "
    +

    No GET parameters

    +
    + "; + } else { + // line 123 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestquery", array()), "maxDepth" => 1), false); + echo " + "; + } + // line 125 + echo " +

    POST Parameters

    + + "; + // line 128 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestrequest", array()), "all", array()))) { + // line 129 + echo "
    +

    No POST parameters

    +
    + "; + } else { + // line 133 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestrequest", array()), "maxDepth" => 1), false); + echo " + "; + } + // line 135 + echo " +

    Request Attributes

    + + "; + // line 138 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestattributes", array()), "all", array()))) { + // line 139 + echo "
    +

    No attributes

    +
    + "; + } else { + // line 143 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestattributes", array())), false); + echo " + "; + } + // line 145 + echo " +

    Cookies

    + + "; + // line 148 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestcookies", array()), "all", array()))) { + // line 149 + echo "
    +

    No cookies

    +
    + "; + } else { + // line 153 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestcookies", array())), false); + echo " + "; + } + // line 155 + echo " +

    Request Headers

    + "; + // line 157 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestheaders", array()), "labels" => array(0 => "Header", 1 => "Value"), "maxDepth" => 1), false); + echo " + +

    Request Content

    + + "; + // line 161 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array()) == false)) { + // line 162 + echo "
    +

    Request content not available (it was retrieved as a resource).

    +
    + "; + } elseif ($this->getAttribute( // line 165 +(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array())) { + // line 166 + echo "
    +
    ";
    +            // line 167
    +            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array()), "html", null, true);
    +            echo "
    +
    + "; + } else { + // line 170 + echo "
    +

    No content

    +
    + "; + } + // line 174 + echo " +

    Server Parameters

    + "; + // line 176 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestserver", array())), false); + echo " +
    +
    + +
    +

    Response

    + +
    +

    Response Headers

    + + "; + // line 186 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "responseheaders", array()), "labels" => array(0 => "Header", 1 => "Value"), "maxDepth" => 1), false); + echo " +
    +
    + +
    getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) ? ("disabled") : ("")); + echo "\"> +

    Session

    + +
    +

    Session Metadata

    + + "; + // line 196 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) { + // line 197 + echo "
    +

    No session metadata

    +
    + "; + } else { + // line 201 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array())), false); + echo " + "; + } + // line 203 + echo " +

    Session Attributes

    + + "; + // line 206 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionattributes", array()))) { + // line 207 + echo "
    +

    No session attributes

    +
    + "; + } else { + // line 211 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionattributes", array()), "labels" => array(0 => "Attribute", 1 => "Value")), false); + echo " + "; + } + // line 213 + echo "
    +
    + +
    getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array()))) ? ("disabled") : ("")); + echo "\"> +

    Flashes

    + +
    +

    Flashes

    + + "; + // line 222 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array()))) { + // line 223 + echo "
    +

    No flash messages were created.

    +
    + "; + } else { + // line 227 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array())), false); + echo " + "; + } + // line 229 + echo "
    +
    + + "; + // line 232 + if ($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) { + // line 233 + echo "
    +

    Parent Request

    + +
    +

    + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()))), "html", null, true); + echo "\">Return to parent request + (token = "; + // line 239 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()), "html", null, true); + echo ") +

    + + "; + // line 242 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "getcollector", array(0 => "request"), "method"), "requestattributes", array())), false); + echo " +
    +
    + "; + } + // line 246 + echo " + "; + // line 247 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array()))) { + // line 248 + echo "
    +

    Sub Requests "; + // line 249 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())), "html", null, true); + echo "

    + +
    + "; + // line 252 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["child"]) { + // line 253 + echo "

    + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($context["child"], "token", array()))), "html", null, true); + echo "\">"; + // line 255 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "identifier", array()), "html", null, true); + // line 256 + echo " + (token = "; + // line 257 + echo twig_escape_filter($this->env, $this->getAttribute($context["child"], "token", array()), "html", null, true); + echo ") +

    + + "; + // line 260 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "requestattributes", array())), false); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 262 + echo "
    +
    + "; + } + // line 265 + echo "
    +"; + + $__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6->leave($__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6_prof); + + + $__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905->leave($__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905_prof); + + } + + // line 268 + public function getset_handler($__controller__ = null, $__route__ = null, $__method__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "controller" => $__controller__, + "route" => $__route__, + "method" => $__method__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916->enter($__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "set_handler")); + + $__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d->enter($__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "set_handler")); + + // line 269 + echo " "; + if ($this->getAttribute((isset($context["controller"]) ? $context["controller"] : null), "class", array(), "any", true, true)) { + // line 270 + if (((array_key_exists("method", $context)) ? (_twig_default_filter((isset($context["method"]) ? $context["method"] : $this->getContext($context, "method")), false)) : (false))) { + echo ""; + echo twig_escape_filter($this->env, (isset($context["method"]) ? $context["method"] : $this->getContext($context, "method")), "html", null, true); + echo ""; + } + // line 271 + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "line", array())); + // line 272 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), "html", null, true); + echo "\">"; + } else { + echo ""; + } + // line 274 + if (((array_key_exists("route", $context)) ? (_twig_default_filter((isset($context["route"]) ? $context["route"] : $this->getContext($context, "route")), false)) : (false))) { + // line 275 + echo "@"; + echo twig_escape_filter($this->env, (isset($context["route"]) ? $context["route"] : $this->getContext($context, "route")), "html", null, true); + } else { + // line 277 + echo twig_escape_filter($this->env, strip_tags($this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "class", array()))), "html", null, true); + // line 278 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array())) ? ((" :: " . $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array()))) : ("")), "html", null, true); + } + // line 281 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo ""; + } else { + echo ""; + } + } else { + // line 283 + echo ""; + echo twig_escape_filter($this->env, ((array_key_exists("route", $context)) ? (_twig_default_filter((isset($context["route"]) ? $context["route"] : $this->getContext($context, "route")), (isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")))) : ((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")))), "html", null, true); + echo ""; + } + + $__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d->leave($__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d_prof); + + + $__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916->leave($__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/request.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 684 => 283, 677 => 281, 674 => 278, 672 => 277, 668 => 275, 666 => 274, 656 => 272, 654 => 271, 648 => 270, 645 => 269, 625 => 268, 614 => 265, 609 => 262, 601 => 260, 595 => 257, 592 => 256, 590 => 255, 587 => 254, 584 => 253, 580 => 252, 574 => 249, 571 => 248, 569 => 247, 566 => 246, 559 => 242, 553 => 239, 549 => 238, 542 => 233, 540 => 232, 535 => 229, 529 => 227, 523 => 223, 521 => 222, 512 => 216, 507 => 213, 501 => 211, 495 => 207, 493 => 206, 488 => 203, 482 => 201, 476 => 197, 474 => 196, 465 => 190, 458 => 186, 445 => 176, 441 => 174, 435 => 170, 429 => 167, 426 => 166, 424 => 165, 419 => 162, 417 => 161, 410 => 157, 406 => 155, 400 => 153, 394 => 149, 392 => 148, 387 => 145, 381 => 143, 375 => 139, 373 => 138, 368 => 135, 362 => 133, 356 => 129, 354 => 128, 349 => 125, 343 => 123, 337 => 119, 335 => 118, 326 => 111, 317 => 110, 303 => 105, 300 => 104, 291 => 103, 279 => 100, 276 => 99, 273 => 98, 263 => 93, 259 => 92, 253 => 88, 251 => 87, 248 => 86, 238 => 81, 234 => 80, 227 => 76, 222 => 73, 220 => 72, 209 => 68, 201 => 63, 196 => 60, 191 => 57, 187 => 55, 185 => 54, 179 => 51, 174 => 48, 169 => 45, 165 => 43, 163 => 42, 155 => 39, 150 => 36, 148 => 35, 145 => 34, 142 => 33, 137 => 31, 132 => 30, 127 => 29, 122 => 28, 120 => 27, 113 => 26, 111 => 25, 108 => 24, 106 => 23, 103 => 22, 100 => 21, 94 => 19, 91 => 18, 88 => 17, 86 => 16, 83 => 15, 80 => 14, 74 => 12, 71 => 11, 68 => 10, 66 => 9, 63 => 8, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set request_handler %} + {% import _self as helper %} + {{ helper.set_handler(collector.controller) }} + {% endset %} + + {% if collector.redirect %} + {% set redirect_handler %} + {% import _self as helper %} + {{ helper.set_handler(collector.redirect.controller, collector.redirect.route, 'GET' != collector.redirect.method ? collector.redirect.method) }} + {% endset %} + {% endif %} + + {% if collector.forward|default(false) %} + {% set forward_handler %} + {% import _self as helper %} + {{ helper.set_handler(collector.forward.controller) }} + {% endset %} + {% endif %} + + {% set request_status_code_color = (collector.statuscode >= 400) ? 'red' : (collector.statuscode >= 300) ? 'yellow' : 'green' %} + + {% set icon %} + {{ collector.statuscode }} + {% if collector.route %} + {% if collector.redirect %}{{ include('@WebProfiler/Icon/redirect.svg') }}{% endif %} + {% if collector.forward|default(false) %}{{ include('@WebProfiler/Icon/forward.svg') }}{% endif %} + {{ 'GET' != collector.method ? collector.method }} @ + {{ collector.route }} + {% endif %} + {% endset %} + + {% set text %} +
    +
    + HTTP status + {{ collector.statuscode }} {{ collector.statustext }} +
    + + {% if 'GET' != collector.method -%} +
    + Method + {{ collector.method }} +
    + {%- endif %} + +
    + Controller + {{ request_handler }} +
    + + {% if collector.controller.class is defined -%} +
    + Controller class + {{ collector.controller.class }} +
    + {%- endif %} + +
    + Route name + {{ collector.route|default('NONE') }} +
    + +
    + Has session + {% if collector.sessionmetadata|length %}yes{% else %}no{% endif %} +
    +
    + + {% if redirect_handler is defined -%} +
    +
    + + {{ collector.redirect.status_code }} + Redirect from + + + {{ redirect_handler }} + ({{ collector.redirect.token }}) + +
    +
    + {% endif %} + + {% if forward_handler is defined %} +
    +
    + Forwarded to + + {{ forward_handler }} + ({{ collector.forward.token }}) + +
    +
    + {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/request.svg') }} + Request / Response + +{% endblock %} + +{% block panel %} +
    +
    +

    Request

    + +
    +

    GET Parameters

    + + {% if collector.requestquery.all is empty %} +
    +

    No GET parameters

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestquery, maxDepth: 1 }, with_context = false) }} + {% endif %} + +

    POST Parameters

    + + {% if collector.requestrequest.all is empty %} +
    +

    No POST parameters

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestrequest, maxDepth: 1 }, with_context = false) }} + {% endif %} + +

    Request Attributes

    + + {% if collector.requestattributes.all is empty %} +
    +

    No attributes

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestattributes }, with_context = false) }} + {% endif %} + +

    Cookies

    + + {% if collector.requestcookies.all is empty %} +
    +

    No cookies

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestcookies }, with_context = false) }} + {% endif %} + +

    Request Headers

    + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestheaders, labels: ['Header', 'Value'], maxDepth: 1 }, with_context = false) }} + +

    Request Content

    + + {% if collector.content == false %} +
    +

    Request content not available (it was retrieved as a resource).

    +
    + {% elseif collector.content %} +
    +
    {{ collector.content }}
    +
    + {% else %} +
    +

    No content

    +
    + {% endif %} + +

    Server Parameters

    + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestserver }, with_context = false) }} +
    +
    + +
    +

    Response

    + +
    +

    Response Headers

    + + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.responseheaders, labels: ['Header', 'Value'], maxDepth: 1 }, with_context = false) }} +
    +
    + +
    +

    Session

    + +
    +

    Session Metadata

    + + {% if collector.sessionmetadata is empty %} +
    +

    No session metadata

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.sessionmetadata }, with_context = false) }} + {% endif %} + +

    Session Attributes

    + + {% if collector.sessionattributes is empty %} +
    +

    No session attributes

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.sessionattributes, labels: ['Attribute', 'Value'] }, with_context = false) }} + {% endif %} +
    +
    + +
    +

    Flashes

    + +
    +

    Flashes

    + + {% if collector.flashes is empty %} +
    +

    No flash messages were created.

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.flashes }, with_context = false) }} + {% endif %} +
    +
    + + {% if profile.parent %} +
    +

    Parent Request

    + +
    +

    + Return to parent request + (token = {{ profile.parent.token }}) +

    + + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: profile.parent.getcollector('request').requestattributes }, with_context = false) }} +
    +
    + {% endif %} + + {% if profile.children|length %} +
    +

    Sub Requests {{ profile.children|length }}

    + +
    + {% for child in profile.children %} +

    + + {{- child.getcollector('request').identifier -}} + + (token = {{ child.token }}) +

    + + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: child.getcollector('request').requestattributes }, with_context = false) }} + {% endfor %} +
    +
    + {% endif %} +
    +{% endblock %} + +{% macro set_handler(controller, route, method) %} + {% if controller.class is defined -%} + {%- if method|default(false) %}{{ method }}{% endif -%} + {%- set link = controller.file|file_link(controller.line) %} + {%- if link %}{% else %}{% endif %} + + {%- if route|default(false) -%} + @{{ route }} + {%- else -%} + {{- controller.class|abbr_class|striptags -}} + {{- controller.method ? ' :: ' ~ controller.method -}} + {%- endif -%} + + {%- if link %}{% else %}{% endif %} + {%- else -%} + {{ route|default(controller) }} + {%- endif %} +{% endmacro %} +", "@WebProfiler/Collector/request.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig"); + } +} diff --git a/var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php b/var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php new file mode 100644 index 00000000..779880a2 --- /dev/null +++ b/var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php @@ -0,0 +1,70 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b->enter($__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/logger.svg")); + + $__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1->enter($__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/logger.svg")); + + // line 1 + echo " + + +"; + + $__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b->leave($__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b_prof); + + + $__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1->leave($__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/logger.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/logger.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/logger.svg"); + } +} diff --git a/var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php b/var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php new file mode 100644 index 00000000..345d0fa0 --- /dev/null +++ b/var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php @@ -0,0 +1,940 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Security/Collector/security.html.twig", 1); + $this->blocks = array( + 'page_title' => array($this, 'block_page_title'), + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129->enter($__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig")); + + $__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398->enter($__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129->leave($__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129_prof); + + + $__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398->leave($__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398_prof); + + } + + // line 3 + public function block_page_title($context, array $blocks = array()) + { + $__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd->enter($__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "page_title")); + + $__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271->enter($__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "page_title")); + + echo "Security"; + + $__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271->leave($__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271_prof); + + + $__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd->leave($__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd_prof); + + } + + // line 5 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e->enter($__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37->enter($__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 6 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 7 + echo " "; + $context["is_authenticated"] = ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array())); + // line 8 + echo " "; + $context["color_code"] = (((isset($context["is_authenticated"]) ? $context["is_authenticated"] : $this->getContext($context, "is_authenticated"))) ? ("") : ("yellow")); + // line 9 + echo " "; + } else { + // line 10 + echo " "; + $context["color_code"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) ? ("red") : ("")); + // line 11 + echo " "; + } + // line 12 + echo " + "; + // line 13 + ob_start(); + // line 14 + echo " "; + echo twig_include($this->env, $context, "@Security/Collector/icon.svg"); + echo " + "; + // line 15 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "user", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "user", array()), "n/a")) : ("n/a")), "html", null, true); + echo " + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 17 + echo " + "; + // line 18 + ob_start(); + // line 19 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 20 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 21 + echo "
    + Logged in as + "; + // line 23 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()), "html", null, true); + echo " +
    + +
    + Authenticated + getContext($context, "is_authenticated"))) ? ("green") : ("red")); + echo "\">"; + echo (((isset($context["is_authenticated"]) ? $context["is_authenticated"] : $this->getContext($context, "is_authenticated"))) ? ("Yes") : ("No")); + echo " +
    + +
    + Token class + "; + // line 33 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array())); + echo " +
    + "; + } else { + // line 36 + echo "
    + Authenticated + No +
    + "; + } + // line 41 + echo " + "; + // line 42 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array())) { + // line 43 + echo "
    + Firewall name + "; + // line 45 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "name", array()), "html", null, true); + echo " +
    + "; + } + // line 48 + echo " + "; + // line 49 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logoutUrl", array()))) { + // line 50 + echo " + "; + } + // line 55 + echo " "; + } else { + // line 56 + echo "
    + The security is disabled. +
    + "; + } + // line 60 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 61 + echo " + "; + // line 62 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["color_code"]) ? $context["color_code"] : $this->getContext($context, "color_code")))); + echo " +"; + + $__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37->leave($__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37_prof); + + + $__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e->leave($__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e_prof); + + } + + // line 65 + public function block_menu($context, array $blocks = array()) + { + $__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b->enter($__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483->enter($__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 66 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) || !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()))) ? ("disabled") : ("")); + echo "\"> + "; + // line 67 + echo twig_include($this->env, $context, "@Security/Collector/icon.svg"); + echo " + Security + +"; + + $__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483->leave($__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483_prof); + + + $__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b->leave($__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b_prof); + + } + + // line 72 + public function block_panel($context, array $blocks = array()) + { + $__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a->enter($__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29->enter($__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 73 + echo "

    Security Token

    + + "; + // line 75 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 76 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 77 + echo "
    +
    + "; + // line 79 + echo twig_escape_filter($this->env, ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()) == "anon.")) ? ("Anonymous") : ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()))), "html", null, true); + echo " + Username +
    + +
    + "; + // line 84 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Authenticated +
    +
    + + + + + + + + + + + + + + + "; + // line 108 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "supportsRoleHierarchy", array())) { + // line 109 + echo " + + + + "; + } + // line 114 + echo " + "; + // line 115 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 116 + echo " + + + + "; + } + // line 121 + echo " +
    PropertyValue
    Roles + "; + // line 100 + echo ((twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array()))) ? ("none") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array()), 1)))); + echo " + + "; + // line 102 + if (( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array()) && twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array())))) { + // line 103 + echo "

    User is not authenticated probably because they have no roles.

    + "; + } + // line 105 + echo "
    Inherited Roles"; + // line 111 + echo ((twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inheritedRoles", array()))) ? ("none") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inheritedRoles", array()), 1)))); + echo "
    Token"; + // line 118 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()))); + echo "
    + "; + } elseif ($this->getAttribute( // line 123 +(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 124 + echo "
    +

    There is no security token.

    +
    + "; + } + // line 128 + echo " + +

    Security Firewall

    + + "; + // line 132 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array())) { + // line 133 + echo "
    +
    + "; + // line 135 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "name", array()), "html", null, true); + echo " + Name +
    +
    + "; + // line 139 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "security_enabled", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Security enabled +
    +
    + "; + // line 143 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "stateless", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Stateless +
    +
    + "; + // line 147 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "allows_anonymous", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Allows anonymous +
    +
    + + "; + // line 152 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "security_enabled", array())) { + // line 153 + echo " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyValue
    provider"; + // line 163 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "provider", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "provider", array())) : ("(none)")), "html", null, true); + echo "
    context"; + // line 167 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "context", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "context", array())) : ("(none)")), "html", null, true); + echo "
    entry_point"; + // line 171 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "entry_point", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "entry_point", array())) : ("(none)")), "html", null, true); + echo "
    user_checker"; + // line 175 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "user_checker", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "user_checker", array())) : ("(none)")), "html", null, true); + echo "
    access_denied_handler"; + // line 179 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_handler", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_handler", array())) : ("(none)")), "html", null, true); + echo "
    access_denied_url"; + // line 183 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_url", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_url", array())) : ("(none)")), "html", null, true); + echo "
    listeners"; + // line 187 + echo ((twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "listeners", array()))) ? ("(none)") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "listeners", array()), 1)))); + echo "
    + "; + } + // line 192 + echo " "; + } elseif ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 193 + echo "
    +

    This request was not covered by any firewall.

    +
    + "; + } + // line 197 + echo " "; + } else { + // line 198 + echo "
    +

    The security component is disabled.

    +
    + "; + } + // line 202 + echo " + "; + // line 203 + if ( !twig_test_empty((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voters", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voters", array()), array())) : (array())))) { + // line 204 + echo "

    Security Voters ("; + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "voters", array())), "html", null, true); + echo ")

    + +
    +
    + "; + // line 208 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voterStrategy", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voterStrategy", array()), "unknown")) : ("unknown")), "html", null, true); + echo " + Strategy +
    +
    + + + + + + + + + + + "; + // line 222 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "voters", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["voter"]) { + // line 223 + echo " + + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['voter'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 228 + echo " +
    #Voter class
    "; + // line 224 + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo ""; + // line 225 + echo twig_escape_filter($this->env, $context["voter"], "html", null, true); + echo "
    + "; + } + // line 231 + echo " + "; + // line 232 + if ( !twig_test_empty((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "accessDecisionLog", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "accessDecisionLog", array()), array())) : (array())))) { + // line 233 + echo "

    Access decision log

    + + + + + + + + + + + + + + + + + + "; + // line 251 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "accessDecisionLog", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["decision"]) { + // line 252 + echo " + + + + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['decision'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 270 + echo " +
    #ResultAttributesObject
    "; + // line 253 + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo " + "; + // line 255 + echo (($this->getAttribute($context["decision"], "result", array())) ? ("GRANTED") : ("DENIED")); + // line 258 + echo " + + "; + // line 261 + if ((twig_length_filter($this->env, $this->getAttribute($context["decision"], "attributes", array())) == 1)) { + // line 262 + echo " "; + echo twig_escape_filter($this->env, twig_first($this->env, $this->getAttribute($context["decision"], "attributes", array())), "html", null, true); + echo " + "; + } else { + // line 264 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["decision"], "attributes", array()))); + echo " + "; + } + // line 266 + echo " "; + // line 267 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["decision"], "object", array()))); + echo "
    + "; + } + + $__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29->leave($__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29_prof); + + + $__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a->leave($__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a_prof); + + } + + public function getTemplateName() + { + return "@Security/Collector/security.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 628 => 270, 611 => 267, 608 => 266, 602 => 264, 596 => 262, 594 => 261, 589 => 258, 587 => 255, 582 => 253, 579 => 252, 562 => 251, 542 => 233, 540 => 232, 537 => 231, 532 => 228, 515 => 225, 511 => 224, 508 => 223, 491 => 222, 474 => 208, 466 => 204, 464 => 203, 461 => 202, 455 => 198, 452 => 197, 446 => 193, 443 => 192, 435 => 187, 428 => 183, 421 => 179, 414 => 175, 407 => 171, 400 => 167, 393 => 163, 381 => 153, 379 => 152, 371 => 147, 364 => 143, 357 => 139, 350 => 135, 346 => 133, 344 => 132, 338 => 128, 332 => 124, 330 => 123, 326 => 121, 320 => 118, 316 => 116, 314 => 115, 311 => 114, 305 => 111, 301 => 109, 299 => 108, 294 => 105, 290 => 103, 288 => 102, 283 => 100, 264 => 84, 256 => 79, 252 => 77, 249 => 76, 247 => 75, 243 => 73, 234 => 72, 220 => 67, 215 => 66, 206 => 65, 194 => 62, 191 => 61, 188 => 60, 182 => 56, 179 => 55, 173 => 52, 169 => 50, 167 => 49, 164 => 48, 158 => 45, 154 => 43, 152 => 42, 149 => 41, 142 => 36, 136 => 33, 126 => 28, 118 => 23, 114 => 21, 111 => 20, 108 => 19, 106 => 18, 103 => 17, 98 => 15, 93 => 14, 91 => 13, 88 => 12, 85 => 11, 82 => 10, 79 => 9, 76 => 8, 73 => 7, 70 => 6, 61 => 5, 43 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block page_title 'Security' %} + +{% block toolbar %} + {% if collector.token %} + {% set is_authenticated = collector.enabled and collector.authenticated %} + {% set color_code = is_authenticated ? '' : 'yellow' %} + {% else %} + {% set color_code = collector.enabled ? 'red' : '' %} + {% endif %} + + {% set icon %} + {{ include('@Security/Collector/icon.svg') }} + {{ collector.user|default('n/a') }} + {% endset %} + + {% set text %} + {% if collector.enabled %} + {% if collector.token %} +
    + Logged in as + {{ collector.user }} +
    + +
    + Authenticated + {{ is_authenticated ? 'Yes' : 'No' }} +
    + +
    + Token class + {{ collector.tokenClass|abbr_class }} +
    + {% else %} +
    + Authenticated + No +
    + {% endif %} + + {% if collector.firewall %} +
    + Firewall name + {{ collector.firewall.name }} +
    + {% endif %} + + {% if collector.token and collector.logoutUrl %} +
    + Actions + Logout +
    + {% endif %} + {% else %} +
    + The security is disabled. +
    + {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: color_code }) }} +{% endblock %} + +{% block menu %} + + {{ include('@Security/Collector/icon.svg') }} + Security + +{% endblock %} + +{% block panel %} +

    Security Token

    + + {% if collector.enabled %} + {% if collector.token %} +
    +
    + {{ collector.user == 'anon.' ? 'Anonymous' : collector.user }} + Username +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.authenticated ? 'yes' : 'no') ~ '.svg') }} + Authenticated +
    +
    + + + + + + + + + + + + + + + {% if collector.supportsRoleHierarchy %} + + + + + {% endif %} + + {% if collector.token %} + + + + + {% endif %} + +
    PropertyValue
    Roles + {{ collector.roles is empty ? 'none' : profiler_dump(collector.roles, maxDepth=1) }} + + {% if not collector.authenticated and collector.roles is empty %} +

    User is not authenticated probably because they have no roles.

    + {% endif %} +
    Inherited Roles{{ collector.inheritedRoles is empty ? 'none' : profiler_dump(collector.inheritedRoles, maxDepth=1) }}
    Token{{ profiler_dump(collector.token) }}
    + {% elseif collector.enabled %} +
    +

    There is no security token.

    +
    + {% endif %} + + +

    Security Firewall

    + + {% if collector.firewall %} +
    +
    + {{ collector.firewall.name }} + Name +
    +
    + {{ include('@WebProfiler/Icon/' ~ (collector.firewall.security_enabled ? 'yes' : 'no') ~ '.svg') }} + Security enabled +
    +
    + {{ include('@WebProfiler/Icon/' ~ (collector.firewall.stateless ? 'yes' : 'no') ~ '.svg') }} + Stateless +
    +
    + {{ include('@WebProfiler/Icon/' ~ (collector.firewall.allows_anonymous ? 'yes' : 'no') ~ '.svg') }} + Allows anonymous +
    +
    + + {% if collector.firewall.security_enabled %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyValue
    provider{{ collector.firewall.provider ?: '(none)' }}
    context{{ collector.firewall.context ?: '(none)' }}
    entry_point{{ collector.firewall.entry_point ?: '(none)' }}
    user_checker{{ collector.firewall.user_checker ?: '(none)' }}
    access_denied_handler{{ collector.firewall.access_denied_handler ?: '(none)' }}
    access_denied_url{{ collector.firewall.access_denied_url ?: '(none)' }}
    listeners{{ collector.firewall.listeners is empty ? '(none)' : profiler_dump(collector.firewall.listeners, maxDepth=1) }}
    + {% endif %} + {% elseif collector.enabled %} +
    +

    This request was not covered by any firewall.

    +
    + {% endif %} + {% else %} +
    +

    The security component is disabled.

    +
    + {% endif %} + + {% if collector.voters|default([]) is not empty %} +

    Security Voters ({{ collector.voters|length }})

    + +
    +
    + {{ collector.voterStrategy|default('unknown') }} + Strategy +
    +
    + + + + + + + + + + + {% for voter in collector.voters %} + + + + + {% endfor %} + +
    #Voter class
    {{ loop.index }}{{ voter }}
    + {% endif %} + + {% if collector.accessDecisionLog|default([]) is not empty %} +

    Access decision log

    + + + + + + + + + + + + + + + + + + {% for decision in collector.accessDecisionLog %} + + + + + + + {% endfor %} + +
    #ResultAttributesObject
    {{ loop.index }} + {{ decision.result + ? 'GRANTED' + : 'DENIED' + }} + + {% if decision.attributes|length == 1 %} + {{ decision.attributes|first }} + {% else %} + {{ profiler_dump(decision.attributes) }} + {% endif %} + {{ profiler_dump(decision.object) }}
    + {% endif %} +{% endblock %} +", "@Security/Collector/security.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views/Collector/security.html.twig"); + } +} diff --git a/var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php b/var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php new file mode 100644 index 00000000..3102f634 --- /dev/null +++ b/var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php @@ -0,0 +1,1571 @@ +blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + 'queries' => array($this, 'block_queries'), + ); + } + + protected function doGetParent(array $context) + { + // line 1 + return $this->loadTemplate((($this->getAttribute($this->getAttribute((isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "isXmlHttpRequest", array())) ? ("@WebProfiler/Profiler/ajax_layout.html.twig") : ("@WebProfiler/Profiler/layout.html.twig")), "@Doctrine/Collector/db.html.twig", 1); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8->enter($__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig")); + + $__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3->enter($__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig")); + + $this->getParent($context)->display($context, array_merge($this->blocks, $blocks)); + + $__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8->leave($__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8_prof); + + + $__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3->leave($__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40->enter($__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781->enter($__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 0) || ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0))) { + // line 5 + echo " + "; + // line 6 + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 7 + echo " + "; + // line 8 + ob_start(); + // line 9 + echo " "; + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 10 + echo " + \"Database\" + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) { + echo "sf-toolbar-status-yellow"; + } + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + "; + // line 13 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 0)) { + // line 14 + echo " in "; + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms + "; + } + // line 16 + echo " "; + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) { + // line 17 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + "; + } + // line 19 + echo " + "; + } else { + // line 21 + echo " + "; + // line 22 + $context["status"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("red") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) ? ("yellow") : ("")))); + // line 23 + echo " + "; + // line 24 + echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg"); + echo " + + "; + // line 26 + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) == 0) && ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0))) { + // line 27 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + errors + "; + } else { + // line 30 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + + in + "; + // line 33 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " + ms + + "; + } + // line 37 + echo " + "; + } + // line 39 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 40 + echo " + "; + // line 41 + ob_start(); + // line 42 + echo "
    + Database Queries + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) ? ("sf-toolbar-status-yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " +
    +
    + Query time + "; + // line 48 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms +
    +
    + Invalid entities + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("sf-toolbar-status-red") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " +
    + "; + // line 54 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { + // line 55 + echo "
    + Cache hits + "; + // line 57 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheHitsCount", array()), "html", null, true); + echo " +
    +
    + Cache misses + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()) > 0)) ? ("sf-toolbar-status-yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()), "html", null, true); + echo " +
    +
    + Cache puts + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()) > 0)) ? ("sf-toolbar-status-yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()), "html", null, true); + echo " +
    + "; + } else { + // line 68 + echo "
    + Second Level Cache + disabled +
    + "; + } + // line 73 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 74 + echo " + "; + // line 75 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => ((array_key_exists("status", $context)) ? (_twig_default_filter((isset($context["status"]) ? $context["status"] : $this->getContext($context, "status")), "")) : ("")))); + echo " + + "; + } + + $__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781->leave($__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781_prof); + + + $__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40->leave($__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40_prof); + + } + + // line 80 + public function block_menu($context, array $blocks = array()) + { + $__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2->enter($__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf->enter($__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 81 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 82 + echo " + "; + // line 83 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 84 + echo " + + \"\" + Doctrine + + "; + // line 89 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + "; + // line 90 + echo twig_escape_filter($this->env, sprintf("%0.0f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms + + + + "; + } else { + // line 95 + echo " + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("label-status-error") : ("")); + echo " "; + echo ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) == 0)) ? ("disabled") : ("")); + echo "\"> + "; + // line 97 + echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg"); + echo " + Doctrine + "; + // line 99 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array())) { + // line 100 + echo " + "; + // line 101 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + + "; + } + // line 104 + echo " + + "; + } + + $__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf->leave($__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf_prof); + + + $__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2->leave($__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2_prof); + + } + + // line 109 + public function block_panel($context, array $blocks = array()) + { + $__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e->enter($__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12->enter($__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 110 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 111 + echo " + "; + // line 112 + if (("explain" == (isset($context["page"]) ? $context["page"] : $this->getContext($context, "page")))) { + // line 113 + echo " "; + echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment(Symfony\Bridge\Twig\Extension\HttpKernelExtension::controller("DoctrineBundle:Profiler:explain", array("token" => // line 114 +(isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => "db", "connectionName" => $this->getAttribute($this->getAttribute($this->getAttribute( // line 116 +(isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "query", array()), "get", array(0 => "connection"), "method"), "query" => $this->getAttribute($this->getAttribute($this->getAttribute( // line 117 +(isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "query", array()), "get", array(0 => "query"), "method")))); + // line 118 + echo " + "; + } else { + // line 120 + echo " "; + $this->displayBlock("queries", $context, $blocks); + echo " + "; + } + + $__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12->leave($__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12_prof); + + + $__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e->leave($__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e_prof); + + } + + // line 124 + public function block_queries($context, array $blocks = array()) + { + $__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196->enter($__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "queries")); + + $__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8->enter($__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "queries")); + + // line 125 + echo " + + "; + // line 147 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) > 1)) { + // line 148 + echo "

    Query Metrics

    + +
    +
    + "; + // line 152 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + Database Queries +
    + +
    + "; + // line 157 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "groupedQueryCount", array()), "html", null, true); + echo " + Different statements +
    + +
    + "; + // line 162 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms + Query time +
    + +
    + "; + // line 167 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + Invalid entities +
    + + "; + // line 171 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { + // line 172 + echo "
    + \t"; + // line 173 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheHitsCount", array()), "html", null, true); + echo " + \tCache hits +
    +
    + \t"; + // line 177 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()), "html", null, true); + echo " + \tCache misses +
    +
    + \t"; + // line 181 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()), "html", null, true); + echo " + \tCache puts +
    + "; + } + // line 185 + echo "
    + "; + } + // line 187 + echo " + "; + // line 188 + $context["group_queries"] = $this->getAttribute($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "query", array()), "getBoolean", array(0 => "group"), "method"); + // line 189 + echo " "; + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 190 + echo "

    Grouped Statements

    +

    env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))), "html", null, true); + echo "\">Show all queries

    + "; + } else { + // line 193 + echo "

    Queries

    +

    env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "group" => true)), "html", null, true); + echo "\">Group similar statements

    + "; + } + // line 196 + echo " + "; + // line 197 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "queries", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["connection"] => $context["queries"]) { + // line 198 + echo " "; + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array())) > 1)) { + // line 199 + echo "

    "; + echo twig_escape_filter($this->env, $context["connection"], "html", null, true); + echo " connection

    + "; + } + // line 201 + echo " + "; + // line 202 + if (twig_test_empty($context["queries"])) { + // line 203 + echo "
    +

    No database queries were performed.

    +
    + "; + } else { + // line 207 + echo " "; + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 208 + echo " "; + $context["queries"] = $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "groupedQueries", array()), $context["connection"], array(), "array"); + // line 209 + echo " "; + } + // line 210 + echo " + + + "; + // line 213 + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 214 + echo " + + "; + } else { + // line 217 + echo " + + "; + } + // line 220 + echo " + + + env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "\"> + "; + // line 224 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($context["queries"]); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["i"] => $context["query"]) { + // line 225 + echo " "; + $context["i"] = (((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) ? ($this->getAttribute($context["query"], "index", array())) : ($context["i"])); + // line 226 + echo " env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\"> + "; + // line 227 + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 228 + echo " + + "; + } else { + // line 234 + echo " + + "; + } + // line 237 + echo " + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['i'], $context['query'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 271 + echo " +
    env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" data-sort-direction=\"1\" style=\"cursor: pointer;\">Timeenv, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" style=\"cursor: pointer;\">Countenv, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" data-sort-direction=\"-1\" style=\"cursor: pointer;\">#env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" style=\"cursor: pointer;\">TimeInfo
    + env, sprintf("%0.2f", $this->getAttribute($context["query"], "executionPercent", array())), "html", null, true); + echo "%\"> + "; + // line 230 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", array()) * 1000)), "html", null, true); + echo " ms
    ("; + echo twig_escape_filter($this->env, sprintf("%0.2f", $this->getAttribute($context["query"], "executionPercent", array())), "html", null, true); + echo "%)
    +
    "; + // line 232 + echo twig_escape_filter($this->env, $this->getAttribute($context["query"], "count", array()), "html", null, true); + echo ""; + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo ""; + // line 235 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", array()) * 1000)), "html", null, true); + echo " ms + "; + // line 238 + echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->getAttribute($context["query"], "sql", array()), true); + echo " + +
    + Parameters: "; + // line 241 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["query"], "params", array()))); + echo " +
    + +
    + getContext($context, "profiler_markup_version")) == 1)) ? ("onclick=\"return toggleRunnableQuery(this);\"") : ("")); + echo " class=\"sf-toggle link-inverse\" data-toggle-selector=\"#formatted-query-"; + echo twig_escape_filter($this->env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide formatted query\">View formatted query + +    + + getContext($context, "profiler_markup_version")) == 1)) ? ("onclick=\"return toggleRunnableQuery(this);\"") : ("")); + echo " class=\"sf-toggle link-inverse\" data-toggle-selector=\"#original-query-"; + echo twig_escape_filter($this->env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide runnable query\">View runnable query + + "; + // line 251 + if ($this->getAttribute($context["query"], "explainable", array())) { + // line 252 + echo "    + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "page" => "explain", "connection" => $context["connection"], "query" => $context["i"])), "html", null, true); + echo "\" onclick=\"return explain(this);\" data-target-id=\"explain-"; + echo twig_escape_filter($this->env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\">Explain query + "; + } + // line 255 + echo "
    + +
    env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" class=\"sql-runnable hidden\"> + "; + // line 258 + echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->getAttribute($context["query"], "sql", array())); + echo " +
    + +
    env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" class=\"sql-runnable hidden\"> + "; + // line 262 + echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->replaceQueryParameters(($this->getAttribute($context["query"], "sql", array()) . ";"), $this->getAttribute($context["query"], "params", array())), true); + echo " +
    + + "; + // line 265 + if ($this->getAttribute($context["query"], "explainable", array())) { + // line 266 + echo "
    env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\">
    + "; + } + // line 268 + echo "
    + "; + } + // line 274 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['connection'], $context['queries'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 275 + echo " +

    Database Connections

    + + "; + // line 278 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array())) { + // line 279 + echo "
    +

    There are no configured database connections.

    +
    + "; + } else { + // line 283 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array()), "labels" => array(0 => "Name", 1 => "Service")), false); + echo " + "; + } + // line 285 + echo " +

    Entity Managers

    + + "; + // line 288 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array())) { + // line 289 + echo "
    +

    There are no configured entity managers.

    +
    + "; + } else { + // line 293 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array()), "labels" => array(0 => "Name", 1 => "Service")), false); + echo " + "; + } + // line 295 + echo " +

    Second Level Cache

    + + "; + // line 298 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { + // line 299 + echo "
    +

    Second Level Cache is not enabled.

    +
    + "; + } else { + // line 303 + echo " "; + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array())) { + // line 304 + echo "
    +

    Second level cache information is not available.

    +
    + "; + } else { + // line 308 + echo " "; + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 309 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array())), false); + echo " + "; + } else { + // line 311 + echo "
    +
    + "; + // line 313 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()), "hits", array()), "html", null, true); + echo " + Hits +
    + +
    + "; + // line 318 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()), "misses", array()), "html", null, true); + echo " + Misses +
    + +
    + "; + // line 323 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()), "puts", array()), "html", null, true); + echo " + Puts +
    +
    + "; + } + // line 328 + echo " + "; + // line 329 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "hits", array())) { + // line 330 + echo "

    Number of cache hits

    + "; + // line 331 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "hits", array())), false); + echo " + "; + } + // line 333 + echo " + "; + // line 334 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "misses", array())) { + // line 335 + echo "

    Number of cache misses

    + "; + // line 336 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "misses", array())), false); + echo " + "; + } + // line 338 + echo " + "; + // line 339 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "puts", array())) { + // line 340 + echo "

    Number of cache puts

    + "; + // line 341 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "puts", array())), false); + echo " + "; + } + // line 343 + echo " "; + } + // line 344 + echo " "; + } + // line 345 + echo " +

    Entities Mapping

    + + "; + // line 348 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "entities", array())); + foreach ($context['_seq'] as $context["manager"] => $context["classes"]) { + // line 349 + echo " "; + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array())) > 1)) { + // line 350 + echo "

    "; + echo twig_escape_filter($this->env, $context["manager"], "html", null, true); + echo " entity manager

    + "; + } + // line 352 + echo " + "; + // line 353 + if (twig_test_empty($context["classes"])) { + // line 354 + echo "
    +

    No loaded entities.

    +
    + "; + } else { + // line 358 + echo " + + + + + + + + "; + // line 366 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($context["classes"]); + foreach ($context['_seq'] as $context["_key"] => $context["class"]) { + // line 367 + echo " "; + $context["contains_errors"] = ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "mappingErrors", array(), "any", false, true), $context["manager"], array(), "array", true, true) && $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "mappingErrors", array(), "any", false, true), $context["manager"], array(), "array", false, true), $context["class"], array(), "array", true, true)); + // line 368 + echo " getContext($context, "contains_errors"))) ? ("status-error") : ("")); + echo "\"> + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['class'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 383 + echo " +
    ClassMapping errors
    "; + // line 369 + echo twig_escape_filter($this->env, $context["class"], "html", null, true); + echo " + "; + // line 371 + if ((isset($context["contains_errors"]) ? $context["contains_errors"] : $this->getContext($context, "contains_errors"))) { + // line 372 + echo "
      + "; + // line 373 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mappingErrors", array()), $context["manager"], array(), "array"), $context["class"], array(), "array")); + foreach ($context['_seq'] as $context["_key"] => $context["error"]) { + // line 374 + echo "
    • "; + echo twig_escape_filter($this->env, $context["error"], "html", null, true); + echo "
    • + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 376 + echo "
    + "; + } else { + // line 378 + echo " No errors. + "; + } + // line 380 + echo "
    + "; + } + // line 386 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['manager'], $context['classes'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 387 + echo " + +"; + + $__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8->leave($__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8_prof); + + + $__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196->leave($__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196_prof); + + } + + public function getTemplateName() + { + return "@Doctrine/Collector/db.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 1068 => 463, 1049 => 446, 1047 => 445, 987 => 387, 981 => 386, 976 => 383, 968 => 380, 964 => 378, 960 => 376, 951 => 374, 947 => 373, 944 => 372, 942 => 371, 937 => 369, 932 => 368, 929 => 367, 925 => 366, 915 => 358, 909 => 354, 907 => 353, 904 => 352, 898 => 350, 895 => 349, 891 => 348, 886 => 345, 883 => 344, 880 => 343, 875 => 341, 872 => 340, 870 => 339, 867 => 338, 862 => 336, 859 => 335, 857 => 334, 854 => 333, 849 => 331, 846 => 330, 844 => 329, 841 => 328, 833 => 323, 825 => 318, 817 => 313, 813 => 311, 807 => 309, 804 => 308, 798 => 304, 795 => 303, 789 => 299, 787 => 298, 782 => 295, 776 => 293, 770 => 289, 768 => 288, 763 => 285, 757 => 283, 751 => 279, 749 => 278, 744 => 275, 730 => 274, 725 => 271, 709 => 268, 701 => 266, 699 => 265, 693 => 262, 687 => 261, 681 => 258, 675 => 257, 671 => 255, 662 => 253, 659 => 252, 657 => 251, 648 => 249, 637 => 245, 630 => 241, 624 => 238, 621 => 237, 616 => 235, 611 => 234, 606 => 232, 599 => 230, 595 => 229, 592 => 228, 590 => 227, 583 => 226, 580 => 225, 563 => 224, 559 => 223, 554 => 220, 549 => 218, 544 => 217, 539 => 215, 534 => 214, 532 => 213, 527 => 210, 524 => 209, 521 => 208, 518 => 207, 512 => 203, 510 => 202, 507 => 201, 501 => 199, 498 => 198, 481 => 197, 478 => 196, 473 => 194, 470 => 193, 465 => 191, 462 => 190, 459 => 189, 457 => 188, 454 => 187, 450 => 185, 443 => 181, 436 => 177, 429 => 173, 426 => 172, 424 => 171, 417 => 167, 409 => 162, 401 => 157, 393 => 152, 387 => 148, 385 => 147, 377 => 141, 361 => 127, 359 => 126, 356 => 125, 347 => 124, 333 => 120, 329 => 118, 327 => 117, 326 => 116, 325 => 114, 323 => 113, 321 => 112, 318 => 111, 315 => 110, 306 => 109, 293 => 104, 287 => 101, 284 => 100, 282 => 99, 277 => 97, 271 => 96, 268 => 95, 260 => 90, 256 => 89, 249 => 84, 247 => 83, 244 => 82, 241 => 81, 232 => 80, 218 => 75, 215 => 74, 212 => 73, 205 => 68, 197 => 65, 188 => 61, 181 => 57, 177 => 55, 175 => 54, 168 => 52, 161 => 48, 152 => 44, 148 => 42, 146 => 41, 143 => 40, 140 => 39, 136 => 37, 129 => 33, 122 => 30, 115 => 27, 113 => 26, 108 => 24, 105 => 23, 103 => 22, 100 => 21, 96 => 19, 90 => 17, 87 => 16, 81 => 14, 79 => 13, 71 => 12, 67 => 10, 64 => 9, 62 => 8, 59 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 21 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends app.request.isXmlHttpRequest ? '@WebProfiler/Profiler/ajax_layout.html.twig' : '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% if collector.querycount > 0 or collector.invalidEntityCount > 0 %} + + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% set icon %} + {% if profiler_markup_version == 1 %} + + \"Database\" + 50 %}sf-toolbar-status-yellow{% endif %}\">{{ collector.querycount }} + {% if collector.querycount > 0 %} + in {{ '%0.2f'|format(collector.time * 1000) }} ms + {% endif %} + {% if collector.invalidEntityCount > 0 %} + {{ collector.invalidEntityCount }} + {% endif %} + + {% else %} + + {% set status = collector.invalidEntityCount > 0 ? 'red' : collector.querycount > 50 ? 'yellow' %} + + {{ include('@Doctrine/Collector/icon.svg') }} + + {% if collector.querycount == 0 and collector.invalidEntityCount > 0 %} + {{ collector.invalidEntityCount }} + errors + {% else %} + {{ collector.querycount }} + + in + {{ '%0.2f'|format(collector.time * 1000) }} + ms + + {% endif %} + + {% endif %} + {% endset %} + + {% set text %} +
    + Database Queries + 50 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.querycount }} +
    +
    + Query time + {{ '%0.2f'|format(collector.time * 1000) }} ms +
    +
    + Invalid entities + 0 ? 'sf-toolbar-status-red' : '' }}\">{{ collector.invalidEntityCount }} +
    + {% if collector.cacheEnabled %} +
    + Cache hits + {{ collector.cacheHitsCount }} +
    +
    + Cache misses + 0 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.cacheMissesCount }} +
    +
    + Cache puts + 0 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.cachePutsCount }} +
    + {% else %} +
    + Second Level Cache + disabled +
    + {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status|default('') }) }} + + {% endif %} +{% endblock %} + +{% block menu %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if profiler_markup_version == 1 %} + + + \"\" + Doctrine + + {{ collector.querycount }} + {{ '%0.0f'|format(collector.time * 1000) }} ms + + + + {% else %} + + 0 ? 'label-status-error' }} {{ collector.querycount == 0 ? 'disabled' }}\"> + {{ include('@Doctrine/Collector/icon.svg') }} + Doctrine + {% if collector.invalidEntityCount %} + + {{ collector.invalidEntityCount }} + + {% endif %} + + + {% endif %} +{% endblock %} + +{% block panel %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if 'explain' == page %} + {{ render(controller('DoctrineBundle:Profiler:explain', { + token: token, + panel: 'db', + connectionName: app.request.query.get('connection'), + query: app.request.query.get('query') + })) }} + {% else %} + {{ block('queries') }} + {% endif %} +{% endblock %} + +{% block queries %} + + + {% if profiler_markup_version > 1 %} +

    Query Metrics

    + +
    +
    + {{ collector.querycount }} + Database Queries +
    + +
    + {{ collector.groupedQueryCount }} + Different statements +
    + +
    + {{ '%0.2f'|format(collector.time * 1000) }} ms + Query time +
    + +
    + {{ collector.invalidEntityCount }} + Invalid entities +
    + + {% if collector.cacheEnabled %} +
    + \t{{ collector.cacheHitsCount }} + \tCache hits +
    +
    + \t{{ collector.cacheMissesCount }} + \tCache misses +
    +
    + \t{{ collector.cachePutsCount }} + \tCache puts +
    + {% endif %} +
    + {% endif %} + + {% set group_queries = request.query.getBoolean('group') %} + {% if group_queries %} +

    Grouped Statements

    +

    Show all queries

    + {% else %} +

    Queries

    +

    Group similar statements

    + {% endif %} + + {% for connection, queries in collector.queries %} + {% if collector.connections|length > 1 %} +

    {{ connection }} connection

    + {% endif %} + + {% if queries is empty %} +
    +

    No database queries were performed.

    +
    + {% else %} + {% if group_queries %} + {% set queries = collector.groupedQueries[connection] %} + {% endif %} + + + + {% if group_queries %} + + + {% else %} + + + {% endif %} + + + + + {% for i, query in queries %} + {% set i = group_queries ? query.index : i %} + + {% if group_queries %} + + + {% else %} + + + {% endif %} + + + {% endfor %} + +
    TimeCount#TimeInfo
    + + {{ '%0.2f'|format(query.executionMS * 1000) }} ms
    ({{ '%0.2f'|format(query.executionPercent) }}%)
    +
    {{ query.count }}{{ loop.index }}{{ '%0.2f'|format(query.executionMS * 1000) }} ms + {{ query.sql|doctrine_pretty_query(highlight_only = true) }} + +
    + Parameters: {{ profiler_dump(query.params) }} +
    + +
    + View formatted query + +    + + View runnable query + + {% if query.explainable %} +    + Explain query + {% endif %} +
    + +
    + {{ query.sql|doctrine_pretty_query }} +
    + +
    + {{ (query.sql ~ ';')|doctrine_replace_query_parameters(query.params)|doctrine_pretty_query(highlight_only = true) }} +
    + + {% if query.explainable %} +
    + {% endif %} +
    + {% endif %} + {% endfor %} + +

    Database Connections

    + + {% if not collector.connections %} +
    +

    There are no configured database connections.

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.connections, labels: ['Name', 'Service'] }, with_context = false ) }} + {% endif %} + +

    Entity Managers

    + + {% if not collector.managers %} +
    +

    There are no configured entity managers.

    +
    + {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.managers, labels: ['Name', 'Service'] }, with_context = false ) }} + {% endif %} + +

    Second Level Cache

    + + {% if not collector.cacheEnabled %} +
    +

    Second Level Cache is not enabled.

    +
    + {% else %} + {% if not collector.cacheCounts %} +
    +

    Second level cache information is not available.

    +
    + {% else %} + {% if profiler_markup_version == 1 %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheCounts }, with_context = false) }} + {% else %} +
    +
    + {{ collector.cacheCounts.hits }} + Hits +
    + +
    + {{ collector.cacheCounts.misses }} + Misses +
    + +
    + {{ collector.cacheCounts.puts }} + Puts +
    +
    + {% endif %} + + {% if collector.cacheRegions.hits %} +

    Number of cache hits

    + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheRegions.hits }, with_context = false) }} + {% endif %} + + {% if collector.cacheRegions.misses %} +

    Number of cache misses

    + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheRegions.misses }, with_context = false) }} + {% endif %} + + {% if collector.cacheRegions.puts %} +

    Number of cache puts

    + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheRegions.puts }, with_context = false) }} + {% endif %} + {% endif %} + {% endif %} + +

    Entities Mapping

    + + {% for manager, classes in collector.entities %} + {% if collector.managers|length > 1 %} +

    {{ manager }} entity manager

    + {% endif %} + + {% if classes is empty %} +
    +

    No loaded entities.

    +
    + {% else %} + + + + + + + + + {% for class in classes %} + {% set contains_errors = collector.mappingErrors[manager] is defined and collector.mappingErrors[manager][class] is defined %} + + + + + {% endfor %} + +
    ClassMapping errors
    {{ class }} + {% if contains_errors %} +
      + {% for error in collector.mappingErrors[manager][class] %} +
    • {{ error }}
    • + {% endfor %} +
    + {% else %} + No errors. + {% endif %} +
    + {% endif %} + {% endfor %} + + +{% endblock %} +", "@Doctrine/Collector/db.html.twig", "/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views/Collector/db.html.twig"); + } +} diff --git a/var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php b/var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php new file mode 100644 index 00000000..914ab7ea --- /dev/null +++ b/var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php @@ -0,0 +1,395 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437->enter($__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.html.twig")); + + $__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f->enter($__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.html.twig")); + + // line 1 + echo "
    +
    + +
    + "; + // line 7 + echo twig_include($this->env, $context, "@Twig/Exception/exception.svg"); + echo " +
    +
    +
    + +

    "; + // line 12 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatFileFromText(nl2br(twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true))); + echo "

    + +
    + "; + // line 15 + echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, (isset($context["status_text"]) ? $context["status_text"] : $this->getContext($context, "status_text")), "html", null, true); + echo " - "; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "class", array())); + echo " +
    + + "; + // line 18 + $context["previous_count"] = twig_length_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "allPrevious", array())); + // line 19 + echo " "; + if ((isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count"))) { + // line 20 + echo "
    "; + echo twig_escape_filter($this->env, (isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")), "html", null, true); + echo " linked Exception"; + echo ((((isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")) > 1)) ? ("s") : ("")); + echo ": + +
    + "; + } + // line 30 + echo " +
    +
    +
    +
    + +"; + // line 36 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "toarray", array())); + foreach ($context['_seq'] as $context["position"] => $context["e"]) { + // line 37 + echo " "; + $this->loadTemplate("@Twig/Exception/traces.html.twig", "@Twig/Exception/exception.html.twig", 37)->display(array("exception" => $context["e"], "position" => $context["position"], "count" => (isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")))); + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['position'], $context['e'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 39 + echo " +"; + // line 40 + if ((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger"))) { + // line 41 + echo "
    +
    + "; + // line 43 + ob_start(); + // line 44 + echo "

    + Logs  + + \"+\" + \"-\" + +

    + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 52 + echo " + "; + // line 53 + if ($this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array())) { + // line 54 + echo "
    + + "; + // line 56 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array()), "html", null, true); + echo " error"; + echo ((($this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array()) > 1)) ? ("s") : ("")); + echo " + +
    + "; + } + // line 60 + echo "
    + +
    + "; + // line 63 + $this->loadTemplate("@Twig/Exception/logs.html.twig", "@Twig/Exception/exception.html.twig", 63)->display(array("logs" => $this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "logs", array()))); + // line 64 + echo "
    +
    +"; + } + // line 67 + echo " +"; + // line 68 + if ((isset($context["currentContent"]) ? $context["currentContent"] : $this->getContext($context, "currentContent"))) { + // line 69 + echo "
    + "; + // line 70 + ob_start(); + // line 71 + echo "

    + Content of the Output  + + \"-\" + \"+\" + +

    + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 79 + echo " +
    + "; + // line 81 + echo twig_escape_filter($this->env, (isset($context["currentContent"]) ? $context["currentContent"] : $this->getContext($context, "currentContent")), "html", null, true); + echo " +
    + +
    +
    +"; + } + // line 87 + echo " +"; + // line 88 + $this->loadTemplate("@Twig/Exception/traces_text.html.twig", "@Twig/Exception/exception.html.twig", 88)->display(array("exception" => (isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")))); + // line 89 + echo " + +"; + + $__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437->leave($__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437_prof); + + + $__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f->leave($__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/exception.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 207 => 89, 205 => 88, 202 => 87, 193 => 81, 189 => 79, 179 => 71, 177 => 70, 174 => 69, 172 => 68, 169 => 67, 164 => 64, 162 => 63, 157 => 60, 148 => 56, 144 => 54, 142 => 53, 139 => 52, 129 => 44, 127 => 43, 123 => 41, 121 => 40, 118 => 39, 111 => 37, 107 => 36, 99 => 30, 94 => 27, 77 => 24, 74 => 23, 70 => 22, 62 => 20, 59 => 19, 57 => 18, 47 => 15, 41 => 12, 33 => 7, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    +
    + +
    + {{ include('@Twig/Exception/exception.svg') }} +
    +
    +
    + +

    {{ exception.message|nl2br|format_file_from_text }}

    + +
    + {{ status_code }} {{ status_text }} - {{ exception.class|abbr_class }} +
    + + {% set previous_count = exception.allPrevious|length %} + {% if previous_count %} +
    {{ previous_count }} linked Exception{{ previous_count > 1 ? 's' : '' }}: +
      + {% for i, previous in exception.allPrevious %} +
    • + {{ previous.class|abbr_class }} » +
    • + {% endfor %} +
    +
    + {% endif %} + +
    +
    +
    +
    + +{% for position, e in exception.toarray %} + {% include '@Twig/Exception/traces.html.twig' with { 'exception': e, 'position': position, 'count': previous_count } only %} +{% endfor %} + +{% if logger %} +
    +
    + {% spaceless %} +

    + Logs  + + \"+\" + \"-\" + +

    + {% endspaceless %} + + {% if logger.counterrors %} +
    + + {{ logger.counterrors }} error{{ logger.counterrors > 1 ? 's' : ''}} + +
    + {% endif %} +
    + +
    + {% include '@Twig/Exception/logs.html.twig' with { 'logs': logger.logs } only %} +
    +
    +{% endif %} + +{% if currentContent %} +
    + {% spaceless %} +

    + Content of the Output  + + \"-\" + \"+\" + +

    + {% endspaceless %} + +
    + {{ currentContent }} +
    + +
    +
    +{% endif %} + +{% include '@Twig/Exception/traces_text.html.twig' with { 'exception': exception } only %} + + +", "@Twig/Exception/exception.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception.html.twig"); + } +} diff --git a/var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php b/var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php new file mode 100644 index 00000000..f9cce98a --- /dev/null +++ b/var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php @@ -0,0 +1,590 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/base.html.twig", "@WebProfiler/Profiler/layout.html.twig", 1); + $this->blocks = array( + 'body' => array($this, 'block_body'), + 'summary' => array($this, 'block_summary'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/base.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7->enter($__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/layout.html.twig")); + + $__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a->enter($__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/layout.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7->leave($__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7_prof); + + + $__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a->leave($__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a_prof); + + } + + // line 3 + public function block_body($context, array $blocks = array()) + { + $__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd->enter($__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1->enter($__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 4 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/header.html.twig", array(), false); + echo " + +
    + "; + // line 7 + $this->displayBlock('summary', $context, $blocks); + // line 83 + echo "
    + +
    +
    +
    +
    + "; + // line 89 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/base_js.html.twig"); + echo " + "; + // line 90 + $this->displayBlock('panel', $context, $blocks); + // line 91 + echo "
    +
    + +
    + + + "; + // line 112 + if (array_key_exists("templates", $context)) { + // line 113 + echo "
      + "; + // line 114 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["templates"]) ? $context["templates"] : $this->getContext($context, "templates"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["name"] => $context["template"]) { + // line 115 + echo " "; + ob_start(); + // line 116 + if ( $this->loadTemplate($context["template"], "@WebProfiler/Profiler/layout.html.twig", 116)->hasBlock("menu", $context)) { + // line 117 + $__internal_54452697437224e77abfd6b8fb9c1db2cf4fa5307eaf954086b4791eb722f7b2 = array("collector" => $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => $context["name"]), "method"), "profiler_markup_version" => (isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version"))); + if (!is_array($__internal_54452697437224e77abfd6b8fb9c1db2cf4fa5307eaf954086b4791eb722f7b2)) { + throw new Twig_Error_Runtime('Variables passed to the "with" tag must be a hash.'); + } + $context['_parent'] = $context; + $context = array_merge($context, $__internal_54452697437224e77abfd6b8fb9c1db2cf4fa5307eaf954086b4791eb722f7b2); + // line 118 + $this->loadTemplate($context["template"], "@WebProfiler/Profiler/layout.html.twig", 118)->displayBlock("menu", $context); + $context = $context['_parent']; + } + $context["menu"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 122 + echo " "; + if ( !twig_test_empty((isset($context["menu"]) ? $context["menu"] : $this->getContext($context, "menu")))) { + // line 123 + echo "
    • env, $context["name"], "html", null, true); + echo " "; + echo ((($context["name"] == (isset($context["panel"]) ? $context["panel"] : $this->getContext($context, "panel")))) ? ("selected") : ("")); + echo "\"> + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => $context["name"])), "html", null, true); + echo "\">"; + echo (isset($context["menu"]) ? $context["menu"] : $this->getContext($context, "menu")); + echo " +
    • + "; + } + // line 127 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['name'], $context['template'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 128 + echo "
    + "; + } + // line 130 + echo "
    +
    +
    + +"; + + $__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1->leave($__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1_prof); + + + $__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd->leave($__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd_prof); + + } + + // line 7 + public function block_summary($context, array $blocks = array()) + { + $__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297->enter($__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "summary")); + + $__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4->enter($__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "summary")); + + // line 8 + echo " "; + if (array_key_exists("profile", $context)) { + // line 9 + echo " "; + $context["status_code"] = ((twig_in_filter("request", twig_get_array_keys_filter($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "collectors", array())))) ? ((($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "getcollector", array(0 => "request"), "method", false, true), "statuscode", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "getcollector", array(0 => "request"), "method", false, true), "statuscode", array()), 0)) : (0))) : (0)); + // line 10 + echo " "; + $context["css_class"] = ((((isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")) > 399)) ? ("status-error") : (((((isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")) > 299)) ? ("status-warning") : ("status-success")))); + // line 11 + echo " +
    env, (isset($context["css_class"]) ? $context["css_class"] : $this->getContext($context, "css_class")), "html", null, true); + echo "\"> +
    +

    + "; + // line 15 + if (twig_in_filter(twig_upper_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "method", array())), array(0 => "GET", 1 => "HEAD"))) { + // line 16 + echo " env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); + echo " + "; + } else { + // line 18 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); + echo " + "; + } + // line 20 + echo "

    + + "; + // line 22 + $context["request_collector"] = (($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "collectors", array(), "any", false, true), "request", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "collectors", array(), "any", false, true), "request", array()), false)) : (false)); + // line 23 + echo " "; + if ((array_key_exists("request_collector", $context) && $this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")), "redirect", array()))) { + // line 24 + $context["redirect"] = $this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")), "redirect", array()); + // line 25 + $context["controller"] = $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "controller", array()); + // line 26 + $context["redirect_route"] = ("@" . $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "route", array())); + // line 27 + echo "
    +
    + "; + // line 29 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "status_code", array()), "html", null, true); + echo " + Redirect from +
    +
    + "; + // line 33 + echo twig_escape_filter($this->env, ((("GET" != $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "method", array()))) ? ($this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "method", array())) : ("")), "html", null, true); + echo " + "; + // line 34 + if ($this->getAttribute($this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : null), "controller", array(), "any", false, true), "class", array(), "any", true, true)) { + // line 35 + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "line", array())); + // line 36 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), "html", null, true); + echo "\">"; + } + // line 37 + echo twig_escape_filter($this->env, (isset($context["redirect_route"]) ? $context["redirect_route"] : $this->getContext($context, "redirect_route")), "html", null, true); + // line 38 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo ""; + } + } else { + // line 40 + echo twig_escape_filter($this->env, (isset($context["redirect_route"]) ? $context["redirect_route"] : $this->getContext($context, "redirect_route")), "html", null, true); + } + // line 42 + echo " (env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "token", array()), "panel" => $this->getAttribute($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "query", array()), "get", array(0 => "panel", 1 => "request"), "method"))), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "token", array()), "html", null, true); + echo ") +
    +
    "; + } + // line 46 + echo " + "; + // line 47 + if ((((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")) && (($this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : null), "forward", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : null), "forward", array()), false)) : (false))) && $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : null), "forward", array(), "any", false, true), "controller", array(), "any", false, true), "class", array(), "any", true, true))) { + // line 48 + $context["forward"] = $this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")), "forward", array()); + // line 49 + $context["controller"] = $this->getAttribute((isset($context["forward"]) ? $context["forward"] : $this->getContext($context, "forward")), "controller", array()); + // line 50 + echo "
    +
    Forwarded to
    +
    + "; + // line 53 + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "line", array())); + // line 54 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), "html", null, true); + echo "\">"; + } + // line 55 + echo twig_escape_filter($this->env, strip_tags($this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "class", array()))), "html", null, true); + // line 56 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array())) ? ((" :: " . $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array()))) : ("")), "html", null, true); + // line 57 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo ""; + } + // line 58 + echo " (env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute((isset($context["forward"]) ? $context["forward"] : $this->getContext($context, "forward")), "token", array()))), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["forward"]) ? $context["forward"] : $this->getContext($context, "forward")), "token", array()), "html", null, true); + echo ") +
    +
    "; + } + // line 62 + echo " +
    +
    Method
    +
    "; + // line 65 + echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "method", array())), "html", null, true); + echo "
    + +
    HTTP Status
    +
    "; + // line 68 + echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); + echo "
    + +
    IP
    +
    "; + // line 71 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "ip", array()), "html", null, true); + echo "
    + +
    Profiled on
    +
    "; + // line 74 + echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "time", array()), "r"), "html", null, true); + echo "
    + +
    Token
    +
    "; + // line 77 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "token", array()), "html", null, true); + echo "
    +
    +
    +
    + "; + } + // line 82 + echo " "; + + $__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4->leave($__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4_prof); + + + $__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297->leave($__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297_prof); + + } + + // line 90 + public function block_panel($context, array $blocks = array()) + { + $__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae->enter($__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60->enter($__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + echo ""; + + $__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60->leave($__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60_prof); + + + $__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae->leave($__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 405 => 90, 395 => 82, 387 => 77, 381 => 74, 375 => 71, 369 => 68, 363 => 65, 358 => 62, 349 => 58, 345 => 57, 343 => 56, 341 => 55, 333 => 54, 331 => 53, 326 => 50, 324 => 49, 322 => 48, 320 => 47, 317 => 46, 308 => 42, 305 => 40, 300 => 38, 298 => 37, 290 => 36, 288 => 35, 286 => 34, 282 => 33, 275 => 29, 271 => 27, 269 => 26, 267 => 25, 265 => 24, 262 => 23, 260 => 22, 256 => 20, 250 => 18, 242 => 16, 240 => 15, 234 => 12, 231 => 11, 228 => 10, 225 => 9, 222 => 8, 213 => 7, 192 => 130, 188 => 128, 174 => 127, 166 => 124, 159 => 123, 156 => 122, 151 => 118, 144 => 117, 142 => 116, 139 => 115, 122 => 114, 119 => 113, 117 => 112, 110 => 108, 104 => 105, 98 => 104, 93 => 102, 89 => 101, 83 => 98, 74 => 91, 72 => 90, 68 => 89, 60 => 83, 58 => 7, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/base.html.twig' %} + +{% block body %} + {{ include('@WebProfiler/Profiler/header.html.twig', with_context = false) }} + +
    + {% block summary %} + {% if profile is defined %} + {% set status_code = ('request' in profile.collectors|keys) ? profile.getcollector('request').statuscode|default(0) : 0 %} + {% set css_class = status_code > 399 ? 'status-error' : status_code > 299 ? 'status-warning' : 'status-success' %} + +
    +
    +

    + {% if profile.method|upper in ['GET', 'HEAD'] %} + {{ profile.url }} + {% else %} + {{ profile.url }} + {% endif %} +

    + + {% set request_collector = profile.collectors.request|default(false) %} + {% if request_collector is defined and request_collector.redirect -%} + {%- set redirect = request_collector.redirect -%} + {%- set controller = redirect.controller -%} + {%- set redirect_route = '@' ~ redirect.route %} +
    +
    + {{ redirect.status_code }} + Redirect from +
    +
    + {{ 'GET' != redirect.method ? redirect.method }} + {% if redirect.controller.class is defined -%} + {%- set link = controller.file|file_link(controller.line) -%} + {% if link %}{% endif -%} + {{ redirect_route }} + {%- if link %}{% endif -%} + {%- else -%} + {{ redirect_route }} + {%- endif %} + ({{ redirect.token }}) +
    +
    + {%- endif %} + + {% if request_collector and request_collector.forward|default(false) and request_collector.forward.controller.class is defined -%} + {%- set forward = request_collector.forward -%} + {%- set controller = forward.controller -%} +
    +
    Forwarded to
    +
    + {% set link = controller.file|file_link(controller.line) -%} + {%- if link %}{% endif -%} + {{- controller.class|abbr_class|striptags -}} + {{- controller.method ? ' :: ' ~ controller.method }} + {%- if link %}{% endif %} + ({{ forward.token }}) +
    +
    + {%- endif %} + +
    +
    Method
    +
    {{ profile.method|upper }}
    + +
    HTTP Status
    +
    {{ status_code }}
    + +
    IP
    +
    {{ profile.ip }}
    + +
    Profiled on
    +
    {{ profile.time|date('r') }}
    + +
    Token
    +
    {{ profile.token }}
    +
    +
    +
    + {% endif %} + {% endblock %} +
    + +
    +
    +
    +
    + {{ include('@WebProfiler/Profiler/base_js.html.twig') }} + {% block panel '' %} +
    +
    + +
    +
    +
    + + {{ include('@WebProfiler/Icon/menu.svg') }} + + + Last 10 + Latest + + + {{ include('@WebProfiler/Icon/search.svg') }} Search + + + {{ render(path('_profiler_search_bar', request.query.all)) }} +
    +
    + + {% if templates is defined %} +
      + {% for name, template in templates %} + {% set menu -%} + {%- if block('menu', template) is defined -%} + {% with { collector: profile.getcollector(name), profiler_markup_version: profiler_markup_version } %} + {{- block('menu', template) -}} + {% endwith %} + {%- endif -%} + {%- endset %} + {% if menu is not empty %} +
    • + {{ menu|raw }} +
    • + {% endif %} + {% endfor %} +
    + {% endif %} +
    +
    +
    + +{% endblock %} +", "@WebProfiler/Profiler/layout.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/layout.html.twig"); + } +} diff --git a/var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php b/var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php new file mode 100644 index 00000000..e25ab2f4 --- /dev/null +++ b/var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php @@ -0,0 +1,154 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/ajax.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f->enter($__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/ajax.html.twig")); + + $__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a->enter($__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/ajax.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f->leave($__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f_prof); + + + $__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a->leave($__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed->enter($__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5->enter($__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + ob_start(); + // line 5 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/ajax.svg"); + echo " + 0 + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 8 + echo " + "; + // line 9 + $context["text"] = ('' === $tmp = "
    + +
    +
    + + + + + + + + + + + + +
    MethodTypeStatusURLTimeProfile
    +
    + ") ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 29 + echo " + "; + // line 30 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => false)); + echo " +"; + + $__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5->leave($__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5_prof); + + + $__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed->leave($__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/ajax.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 85 => 30, 82 => 29, 62 => 9, 59 => 8, 52 => 5, 49 => 4, 40 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + {{ include('@WebProfiler/Icon/ajax.svg') }} + 0 + {% endset %} + + {% set text %} +
    + +
    +
    + + + + + + + + + + + + +
    MethodTypeStatusURLTimeProfile
    +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: false }) }} +{% endblock %} +", "@WebProfiler/Collector/ajax.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/ajax.html.twig"); + } +} diff --git a/var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php b/var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php new file mode 100644 index 00000000..58e3584a --- /dev/null +++ b/var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php @@ -0,0 +1,2024 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/form.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'head' => array($this, 'block_head'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a->enter($__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/form.html.twig")); + + $__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356->enter($__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/form.html.twig")); + + // line 3 + $context["__internal_b8d6c21993316c108cc3c0406ab0c15cbbc3b8aaf0862e3064536d87094a0a77"] = $this; + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a->leave($__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a_prof); + + + $__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356->leave($__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356_prof); + + } + + // line 5 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6->enter($__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f->enter($__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 6 + echo " "; + if ((($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()) > 0) || twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())))) { + // line 7 + echo " "; + $context["status_color"] = (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) ? ("red") : ("")); + // line 8 + echo " "; + ob_start(); + // line 9 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/form.svg"); + echo " + + "; + // line 11 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) : (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())))), "html", null, true); + echo " + + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 14 + echo " + "; + // line 15 + ob_start(); + // line 16 + echo "
    + Number of forms + "; + // line 18 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())), "html", null, true); + echo " +
    +
    + Number of errors + getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()) > 0)) ? ("red") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()), "html", null, true); + echo " +
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 25 + echo " + "; + // line 26 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " + "; + } + + $__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f->leave($__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f_prof); + + + $__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6->leave($__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6_prof); + + } + + // line 30 + public function block_menu($context, array $blocks = array()) + { + $__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e->enter($__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361->enter($__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 31 + echo " getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) ? ("error") : ("")); + echo " "; + echo ((twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array()))) ? ("disabled") : ("")); + echo "\"> + "; + // line 32 + echo twig_include($this->env, $context, "@WebProfiler/Icon/form.svg"); + echo " + Forms + "; + // line 34 + if (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()) > 0)) { + // line 35 + echo " + "; + // line 36 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()), "html", null, true); + echo " + + "; + } + // line 39 + echo " +"; + + $__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361->leave($__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361_prof); + + + $__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e->leave($__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e_prof); + + } + + // line 42 + public function block_head($context, array $blocks = array()) + { + $__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e->enter($__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1->enter($__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 43 + echo " "; + $this->displayParentBlock("head", $context, $blocks); + echo " + + +"; + + $__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1->leave($__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1_prof); + + + $__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e->leave($__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e_prof); + + } + + // line 184 + public function block_panel($context, array $blocks = array()) + { + $__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1->enter($__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07->enter($__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 185 + echo "

    Forms

    + + "; + // line 187 + if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array()))) { + // line 188 + echo "
    +
      + "; + // line 190 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())); + foreach ($context['_seq'] as $context["formName"] => $context["formData"]) { + // line 191 + echo " "; + echo $context["__internal_b8d6c21993316c108cc3c0406ab0c15cbbc3b8aaf0862e3064536d87094a0a77"]->getform_tree_entry($context["formName"], $context["formData"], true); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['formName'], $context['formData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 193 + echo "
    +
    + +
    + "; + // line 197 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["formName"] => $context["formData"]) { + // line 198 + echo " "; + echo $context["__internal_b8d6c21993316c108cc3c0406ab0c15cbbc3b8aaf0862e3064536d87094a0a77"]->getform_tree_details($context["formName"], $context["formData"], $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms_by_hash", array()), $this->getAttribute($context["loop"], "first", array())); + echo " + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['formName'], $context['formData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 200 + echo "
    + "; + } else { + // line 202 + echo "
    +

    No forms were submitted for this request.

    +
    + "; + } + // line 206 + echo " + +"; + + $__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07->leave($__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07_prof); + + + $__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1->leave($__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1_prof); + + } + + // line 426 + public function getform_tree_entry($__name__ = null, $__data__ = null, $__is_root__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "name" => $__name__, + "data" => $__data__, + "is_root" => $__is_root__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f->enter($__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_entry")); + + $__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79->enter($__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_entry")); + + // line 427 + echo " "; + $context["tree"] = $this; + // line 428 + echo " "; + $context["has_error"] = ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "errors", array(), "any", true, true) && (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())) > 0)); + // line 429 + echo "
  • +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-details\"> + "; + // line 431 + if ((isset($context["has_error"]) ? $context["has_error"] : $this->getContext($context, "has_error"))) { + // line 432 + echo "
    "; + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())), "html", null, true); + echo "
    + "; + } + // line 434 + echo " + "; + // line 435 + if ( !twig_test_empty($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array()))) { + // line 436 + echo " env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-children\" href=\"#\"> + "; + } else { + // line 438 + echo "
    + "; + } + // line 440 + echo " + getContext($context, "has_error")) || (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array()), false)) : (false)))) { + echo "class=\"has-error\""; + } + echo "> + "; + // line 442 + echo twig_escape_filter($this->env, ((array_key_exists("name", $context)) ? (_twig_default_filter((isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "(no name)")) : ("(no name)")), "html", null, true); + echo " + +
    + + "; + // line 446 + if ( !twig_test_empty($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array()))) { + // line 447 + echo "
      env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-children\" "; + if (( !(isset($context["is_root"]) ? $context["is_root"] : $this->getContext($context, "is_root")) && !(($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array()), false)) : (false)))) { + echo "class=\"hidden\""; + } + echo "> + "; + // line 448 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array())); + foreach ($context['_seq'] as $context["childName"] => $context["childData"]) { + // line 449 + echo " "; + echo $context["tree"]->getform_tree_entry($context["childName"], $context["childData"], false); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['childName'], $context['childData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 451 + echo "
    + "; + } + // line 453 + echo "
  • +"; + + $__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79->leave($__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79_prof); + + + $__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f->leave($__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 456 + public function getform_tree_details($__name__ = null, $__data__ = null, $__forms_by_hash__ = null, $__show__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "name" => $__name__, + "data" => $__data__, + "forms_by_hash" => $__forms_by_hash__, + "show" => $__show__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f->enter($__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_details")); + + $__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8->enter($__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_details")); + + // line 457 + echo " "; + $context["tree"] = $this; + // line 458 + echo "
    getContext($context, "show")), false)) : (false))) { + echo " hidden"; + } + echo "\" "; + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "id", array(), "any", true, true)) { + echo "id=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-details\""; + } + echo "> +

    + "; + // line 460 + echo twig_escape_filter($this->env, ((array_key_exists("name", $context)) ? (_twig_default_filter((isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "(no name)")) : ("(no name)")), "html", null, true); + echo " "; + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "type_class", array(), "any", true, true)) { + echo "("; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "type_class", array()))); + echo ")"; + } + // line 461 + echo "

    + + "; + // line 463 + if (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "errors", array(), "any", true, true) && (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())) > 0))) { + // line 464 + echo "
    +

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-errors\" href=\"#\"> + Errors + +

    + + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-errors\"> + + + + + + + + + "; + // line 480 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())); + foreach ($context['_seq'] as $context["_key"] => $context["error"]) { + // line 481 + echo " + + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 504 + echo " +
    MessageOriginCause
    "; + // line 482 + echo twig_escape_filter($this->env, $this->getAttribute($context["error"], "message", array()), "html", null, true); + echo " + "; + // line 484 + if (twig_test_empty($this->getAttribute($context["error"], "origin", array()))) { + // line 485 + echo " This form. + "; + } elseif ( !$this->getAttribute( // line 486 +(isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : null), $this->getAttribute($context["error"], "origin", array()), array(), "array", true, true)) { + // line 487 + echo " Unknown. + "; + } else { + // line 489 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : $this->getContext($context, "forms_by_hash")), $this->getAttribute($context["error"], "origin", array()), array(), "array"), "name", array()), "html", null, true); + echo " + "; + } + // line 491 + echo " + "; + // line 493 + if ($this->getAttribute($context["error"], "trace", array())) { + // line 494 + echo " Caused by: + "; + // line 495 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["error"], "trace", array())); + foreach ($context['_seq'] as $context["_key"] => $context["stacked"]) { + // line 496 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["stacked"])); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['stacked'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 498 + echo " "; + } else { + // line 499 + echo " Unknown. + "; + } + // line 501 + echo "
    +
    + "; + } + // line 508 + echo " + "; + // line 509 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", true, true)) { + // line 510 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-default_data\" href=\"#\"> + Default Data + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-default_data\"> + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    Model Format + "; + // line 528 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", false, true), "model", array(), "any", true, true)) { + // line 529 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "model", array()))); + echo " + "; + } else { + // line 531 + echo " same as normalized format + "; + } + // line 533 + echo "
    Normalized Format"; + // line 537 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "norm", array()))); + echo "
    View Format + "; + // line 542 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", false, true), "view", array(), "any", true, true)) { + // line 543 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "view", array()))); + echo " + "; + } else { + // line 545 + echo " same as normalized format + "; + } + // line 547 + echo "
    +
    + "; + } + // line 553 + echo " + "; + // line 554 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", true, true)) { + // line 555 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-submitted_data\" href=\"#\"> + Submitted Data + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-submitted_data\"> + "; + // line 562 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "norm", array(), "any", true, true)) { + // line 563 + echo " + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    View Format + "; + // line 574 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "view", array(), "any", true, true)) { + // line 575 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "view", array()))); + echo " + "; + } else { + // line 577 + echo " same as normalized format + "; + } + // line 579 + echo "
    Normalized Format"; + // line 583 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "norm", array()))); + echo "
    Model Format + "; + // line 588 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "model", array(), "any", true, true)) { + // line 589 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "model", array()))); + echo " + "; + } else { + // line 591 + echo " same as normalized format + "; + } + // line 593 + echo "
    + "; + } else { + // line 598 + echo "
    +

    This form was not submitted.

    +
    + "; + } + // line 602 + echo "
    + "; + } + // line 604 + echo " + "; + // line 605 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "passed_options", array(), "any", true, true)) { + // line 606 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-passed_options\" href=\"#\"> + Passed Options + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-passed_options\"> + "; + // line 613 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "passed_options", array()))) { + // line 614 + echo " + + + + + + + + + "; + // line 623 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "passed_options", array())); + foreach ($context['_seq'] as $context["option"] => $context["value"]) { + // line 624 + echo " + + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['option'], $context['value'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 636 + echo " +
    OptionPassed ValueResolved Value
    "; + // line 625 + echo twig_escape_filter($this->env, $context["option"], "html", null, true); + echo ""; + // line 626 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["value"])); + echo " + "; + // line 628 + if (($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array()), $context["option"], array(), "array") == $context["value"])) { + // line 629 + echo " same as passed value + "; + } else { + // line 631 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array()), $context["option"], array(), "array"))); + echo " + "; + } + // line 633 + echo "
    + "; + } else { + // line 639 + echo "
    +

    No options where passed when constructing this form.

    +
    + "; + } + // line 643 + echo "
    + "; + } + // line 645 + echo " + "; + // line 646 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "resolved_options", array(), "any", true, true)) { + // line 647 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-resolved_options\" href=\"#\"> + Resolved Options + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-resolved_options\" class=\"hidden\"> + + + + + + + + + "; + // line 662 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array())); + foreach ($context['_seq'] as $context["option"] => $context["value"]) { + // line 663 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['option'], $context['value'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 668 + echo " +
    OptionValue
    "; + // line 664 + echo twig_escape_filter($this->env, $context["option"], "html", null, true); + echo ""; + // line 665 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["value"])); + echo "
    +
    + "; + } + // line 672 + echo " + "; + // line 673 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "view_vars", array(), "any", true, true)) { + // line 674 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-view_vars\" href=\"#\"> + View Variables + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-view_vars\" class=\"hidden\"> + + + + + + + + + "; + // line 689 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "view_vars", array())); + foreach ($context['_seq'] as $context["variable"] => $context["value"]) { + // line 690 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['variable'], $context['value'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 695 + echo " +
    VariableValue
    "; + // line 691 + echo twig_escape_filter($this->env, $context["variable"], "html", null, true); + echo ""; + // line 692 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["value"])); + echo "
    +
    + "; + } + // line 699 + echo "
    + + "; + // line 701 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array())); + foreach ($context['_seq'] as $context["childName"] => $context["childData"]) { + // line 702 + echo " "; + echo $context["tree"]->getform_tree_details($context["childName"], $context["childData"], (isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : $this->getContext($context, "forms_by_hash"))); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['childName'], $context['childData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8->leave($__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8_prof); + + + $__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f->leave($__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/form.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 1266 => 702, 1262 => 701, 1258 => 699, 1252 => 695, 1243 => 692, 1239 => 691, 1236 => 690, 1232 => 689, 1220 => 680, 1212 => 675, 1209 => 674, 1207 => 673, 1204 => 672, 1198 => 668, 1189 => 665, 1185 => 664, 1182 => 663, 1178 => 662, 1166 => 653, 1158 => 648, 1155 => 647, 1153 => 646, 1150 => 645, 1146 => 643, 1140 => 639, 1135 => 636, 1127 => 633, 1121 => 631, 1117 => 629, 1115 => 628, 1110 => 626, 1106 => 625, 1103 => 624, 1099 => 623, 1088 => 614, 1086 => 613, 1082 => 612, 1074 => 607, 1071 => 606, 1069 => 605, 1066 => 604, 1062 => 602, 1056 => 598, 1049 => 593, 1045 => 591, 1039 => 589, 1037 => 588, 1029 => 583, 1023 => 579, 1019 => 577, 1013 => 575, 1011 => 574, 998 => 563, 996 => 562, 992 => 561, 984 => 556, 981 => 555, 979 => 554, 976 => 553, 968 => 547, 964 => 545, 958 => 543, 956 => 542, 948 => 537, 942 => 533, 938 => 531, 932 => 529, 930 => 528, 915 => 516, 907 => 511, 904 => 510, 902 => 509, 899 => 508, 893 => 504, 885 => 501, 881 => 499, 878 => 498, 869 => 496, 865 => 495, 862 => 494, 860 => 493, 856 => 491, 850 => 489, 846 => 487, 844 => 486, 841 => 485, 839 => 484, 834 => 482, 831 => 481, 827 => 480, 815 => 471, 807 => 466, 803 => 464, 801 => 463, 797 => 461, 789 => 460, 775 => 458, 772 => 457, 751 => 456, 729 => 453, 725 => 451, 716 => 449, 712 => 448, 703 => 447, 701 => 446, 694 => 442, 688 => 441, 685 => 440, 681 => 438, 675 => 436, 673 => 435, 670 => 434, 664 => 432, 662 => 431, 658 => 430, 655 => 429, 652 => 428, 649 => 427, 629 => 426, 401 => 206, 395 => 202, 391 => 200, 374 => 198, 357 => 197, 351 => 193, 342 => 191, 338 => 190, 334 => 188, 332 => 187, 328 => 185, 319 => 184, 168 => 43, 159 => 42, 148 => 39, 142 => 36, 139 => 35, 137 => 34, 132 => 32, 125 => 31, 116 => 30, 103 => 26, 100 => 25, 92 => 22, 85 => 18, 81 => 16, 79 => 15, 76 => 14, 70 => 11, 64 => 9, 61 => 8, 58 => 7, 55 => 6, 46 => 5, 36 => 1, 34 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% from _self import form_tree_entry, form_tree_details %} + +{% block toolbar %} + {% if collector.data.nb_errors > 0 or collector.data.forms|length %} + {% set status_color = collector.data.nb_errors ? 'red' : '' %} + {% set icon %} + {{ include('@WebProfiler/Icon/form.svg') }} + + {{ collector.data.nb_errors ?: collector.data.forms|length }} + + {% endset %} + + {% set text %} +
    + Number of forms + {{ collector.data.forms|length }} +
    +
    + Number of errors + 0 ? 'red' }}\">{{ collector.data.nb_errors }} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} + {% endif %} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/form.svg') }} + Forms + {% if collector.data.nb_errors > 0 %} + + {{ collector.data.nb_errors }} + + {% endif %} + +{% endblock %} + +{% block head %} + {{ parent() }} + + +{% endblock %} + +{% block panel %} +

    Forms

    + + {% if collector.data.forms|length %} +
    +
      + {% for formName, formData in collector.data.forms %} + {{ form_tree_entry(formName, formData, true) }} + {% endfor %} +
    +
    + +
    + {% for formName, formData in collector.data.forms %} + {{ form_tree_details(formName, formData, collector.data.forms_by_hash, loop.first) }} + {% endfor %} +
    + {% else %} +
    +

    No forms were submitted for this request.

    +
    + {% endif %} + + +{% endblock %} + +{% macro form_tree_entry(name, data, is_root) %} + {% import _self as tree %} + {% set has_error = data.errors is defined and data.errors|length > 0 %} +
  • +
    + {% if has_error %} +
    {{ data.errors|length }}
    + {% endif %} + + {% if data.children is not empty %} + + {% else %} +
    + {% endif %} + + + {{ name|default('(no name)') }} + +
    + + {% if data.children is not empty %} +
      + {% for childName, childData in data.children %} + {{ tree.form_tree_entry(childName, childData, false) }} + {% endfor %} +
    + {% endif %} +
  • +{% endmacro %} + +{% macro form_tree_details(name, data, forms_by_hash, show) %} + {% import _self as tree %} +
    +

    + {{ name|default('(no name)') }} {% if data.type_class is defined %}({{ profiler_dump(data.type_class) }}){% endif %} +

    + + {% if data.errors is defined and data.errors|length > 0 %} +
    +

    + + Errors + +

    + + + + + + + + + + + {% for error in data.errors %} + + + + + + {% endfor %} + +
    MessageOriginCause
    {{ error.message }} + {% if error.origin is empty %} + This form. + {% elseif forms_by_hash[error.origin] is not defined %} + Unknown. + {% else %} + {{ forms_by_hash[error.origin].name }} + {% endif %} + + {% if error.trace %} + Caused by: + {% for stacked in error.trace %} + {{ profiler_dump(stacked) }} + {% endfor %} + {% else %} + Unknown. + {% endif %} +
    +
    + {% endif %} + + {% if data.default_data is defined %} +

    + + Default Data + +

    + +
    + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    Model Format + {% if data.default_data.model is defined %} + {{ profiler_dump(data.default_data.model) }} + {% else %} + same as normalized format + {% endif %} +
    Normalized Format{{ profiler_dump(data.default_data.norm) }}
    View Format + {% if data.default_data.view is defined %} + {{ profiler_dump(data.default_data.view) }} + {% else %} + same as normalized format + {% endif %} +
    +
    + {% endif %} + + {% if data.submitted_data is defined %} +

    + + Submitted Data + +

    + +
    + {% if data.submitted_data.norm is defined %} + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    View Format + {% if data.submitted_data.view is defined %} + {{ profiler_dump(data.submitted_data.view) }} + {% else %} + same as normalized format + {% endif %} +
    Normalized Format{{ profiler_dump(data.submitted_data.norm) }}
    Model Format + {% if data.submitted_data.model is defined %} + {{ profiler_dump(data.submitted_data.model) }} + {% else %} + same as normalized format + {% endif %} +
    + {% else %} +
    +

    This form was not submitted.

    +
    + {% endif %} +
    + {% endif %} + + {% if data.passed_options is defined %} +

    + + Passed Options + +

    + +
    + {% if data.passed_options|length %} + + + + + + + + + + {% for option, value in data.passed_options %} + + + + + + {% endfor %} + +
    OptionPassed ValueResolved Value
    {{ option }}{{ profiler_dump(value) }} + {% if data.resolved_options[option] == value %} + same as passed value + {% else %} + {{ profiler_dump(data.resolved_options[option]) }} + {% endif %} +
    + {% else %} +
    +

    No options where passed when constructing this form.

    +
    + {% endif %} +
    + {% endif %} + + {% if data.resolved_options is defined %} +

    + + Resolved Options + +

    + +
    + + + + + + + + + {% for option, value in data.resolved_options %} + + + + + {% endfor %} + +
    OptionValue
    {{ option }}{{ profiler_dump(value) }}
    +
    + {% endif %} + + {% if data.view_vars is defined %} +

    + + View Variables + +

    + +
    + + + + + + + + + {% for variable, value in data.view_vars %} + + + + + {% endfor %} + +
    VariableValue
    {{ variable }}{{ profiler_dump(value) }}
    +
    + {% endif %} +
    + + {% for childName, childData in data.children %} + {{ tree.form_tree_details(childName, childData, forms_by_hash) }} + {% endfor %} +{% endmacro %} +", "@WebProfiler/Collector/form.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/form.html.twig"); + } +} diff --git a/var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php b/var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php new file mode 100644 index 00000000..1cfa657e --- /dev/null +++ b/var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php @@ -0,0 +1,170 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900->enter($__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.html.twig")); + + $__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14->enter($__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.html.twig")); + + // line 1 + echo "
    + "; + // line 2 + if (((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) > 0)) { + // line 3 + echo "

    + ["; + // line 4 + echo twig_escape_filter($this->env, (((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) - (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position"))) + 1), "html", null, true); + echo "/"; + echo twig_escape_filter($this->env, ((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) + 1), "html", null, true); + echo "] + "; + // line 5 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "class", array())); + echo ": "; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatFileFromText(nl2br(twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true))); + echo "  + "; + // line 6 + ob_start(); + // line 7 + echo " env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "', 'traces'); switchIcons('icon-traces-"; + echo twig_escape_filter($this->env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-open', 'icon-traces-"; + echo twig_escape_filter($this->env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-close'); return false;\"> + env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-close\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display: "; + echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("inline") : ("none")); + echo "\" /> + env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-open\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display: "; + echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("none") : ("inline")); + echo "\" /> + + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 12 + echo "

    + "; + } else { + // line 14 + echo "

    Stack Trace

    + "; + } + // line 16 + echo " + env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "\"> +
      env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "\" style=\"display: "; + echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("block") : ("none")); + echo "\"> + "; + // line 19 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array())); + foreach ($context['_seq'] as $context["i"] => $context["trace"]) { + // line 20 + echo "
    1. + "; + // line 21 + $this->loadTemplate("@Twig/Exception/trace.html.twig", "@Twig/Exception/traces.html.twig", 21)->display(array("prefix" => (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "i" => $context["i"], "trace" => $context["trace"])); + // line 22 + echo "
    2. + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['i'], $context['trace'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 24 + echo "
    +
    +"; + + $__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900->leave($__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900_prof); + + + $__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14->leave($__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/traces.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 107 => 24, 100 => 22, 98 => 21, 95 => 20, 91 => 19, 85 => 18, 81 => 17, 78 => 16, 74 => 14, 70 => 12, 62 => 9, 56 => 8, 47 => 7, 45 => 6, 39 => 5, 33 => 4, 30 => 3, 28 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    + {% if count > 0 %} +

    + [{{ count - position + 1 }}/{{ count + 1 }}] + {{ exception.class|abbr_class }}: {{ exception.message|nl2br|format_file_from_text }}  + {% spaceless %} + + \"-\" + \"+\" + + {% endspaceless %} +

    + {% else %} +

    Stack Trace

    + {% endif %} + + +
      + {% for i, trace in exception.trace %} +
    1. + {% include '@Twig/Exception/trace.html.twig' with { 'prefix': position, 'i': i, 'trace': trace } only %} +
    2. + {% endfor %} +
    +
    +", "@Twig/Exception/traces.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/traces.html.twig"); + } +} diff --git a/var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php b/var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php new file mode 100644 index 00000000..8e86751a --- /dev/null +++ b/var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php @@ -0,0 +1,149 @@ +parent = false; + + $this->blocks = array( + 'head' => array($this, 'block_head'), + 'body' => array($this, 'block_body'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1->enter($__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base.html.twig")); + + $__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e->enter($__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base.html.twig")); + + // line 1 + echo " + + + env, $this->env->getCharset(), "html", null, true); + echo "\" /> + + + Symfony Profiler + + + "; + // line 10 + $this->displayBlock('head', $context, $blocks); + // line 15 + echo " + + "; + // line 17 + $this->displayBlock('body', $context, $blocks); + // line 18 + echo " + +"; + + $__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1->leave($__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1_prof); + + + $__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e->leave($__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e_prof); + + } + + // line 10 + public function block_head($context, array $blocks = array()) + { + $__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a->enter($__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356->enter($__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 11 + echo " + "; + + $__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356->leave($__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356_prof); + + + $__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a->leave($__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a_prof); + + } + + // line 17 + public function block_body($context, array $blocks = array()) + { + $__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281->enter($__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac->enter($__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + echo ""; + + $__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac->leave($__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac_prof); + + + $__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281->leave($__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/base.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 86 => 17, 73 => 12, 70 => 11, 61 => 10, 49 => 18, 47 => 17, 43 => 15, 41 => 10, 32 => 4, 27 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + + Symfony Profiler + + + {% block head %} + + {% endblock %} + + + {% block body '' %} + + +", "@WebProfiler/Profiler/base.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base.html.twig"); + } +} diff --git a/var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php b/var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php new file mode 100644 index 00000000..4f622b74 --- /dev/null +++ b/var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php @@ -0,0 +1,391 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/events.html.twig", 1); + $this->blocks = array( + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286->enter($__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/events.html.twig")); + + $__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282->enter($__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/events.html.twig")); + + // line 3 + $context["helper"] = $this; + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286->leave($__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286_prof); + + + $__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282->leave($__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282_prof); + + } + + // line 5 + public function block_menu($context, array $blocks = array()) + { + $__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e->enter($__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc->enter($__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 6 + echo " + "; + // line 7 + echo twig_include($this->env, $context, "@WebProfiler/Icon/event.svg"); + echo " + Events + +"; + + $__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc->leave($__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc_prof); + + + $__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e->leave($__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e_prof); + + } + + // line 12 + public function block_panel($context, array $blocks = array()) + { + $__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3->enter($__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4->enter($__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 13 + echo "

    Event Dispatcher

    + + "; + // line 15 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array()))) { + // line 16 + echo "
    +

    No events have been recorded. Check that debugging is enabled in the kernel.

    +
    + "; + } else { + // line 20 + echo "
    +
    +

    Called Listeners "; + // line 22 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array())), "html", null, true); + echo "

    + +
    + "; + // line 25 + echo $context["helper"]->getrender_table($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array())); + echo " +
    +
    + +
    +

    Not Called Listeners "; + // line 30 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array())), "html", null, true); + echo "

    +
    + "; + // line 32 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array()))) { + // line 33 + echo "
    +

    + There are no uncalled listeners. +

    +

    + All listeners were called for this request or an error occurred + when trying to collect uncalled listeners (in which case check the + logs to get more information). +

    +
    + "; + } else { + // line 44 + echo " "; + echo $context["helper"]->getrender_table($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array())); + echo " + "; + } + // line 46 + echo "
    +
    +
    + "; + } + + $__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4->leave($__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4_prof); + + + $__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3->leave($__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3_prof); + + } + + // line 52 + public function getrender_table($__listeners__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "listeners" => $__listeners__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8->enter($__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + $__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38->enter($__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + // line 53 + echo " + + + + + + + + "; + // line 61 + $context["previous_event"] = $this->getAttribute(twig_first($this->env, (isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners"))), "event", array()); + // line 62 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["listener"]) { + // line 63 + echo " "; + if (($this->getAttribute($context["loop"], "first", array()) || ($this->getAttribute($context["listener"], "event", array()) != (isset($context["previous_event"]) ? $context["previous_event"] : $this->getContext($context, "previous_event"))))) { + // line 64 + echo " "; + if ( !$this->getAttribute($context["loop"], "first", array())) { + // line 65 + echo " + "; + } + // line 67 + echo " + + + + + + "; + // line 73 + $context["previous_event"] = $this->getAttribute($context["listener"], "event", array()); + // line 74 + echo " "; + } + // line 75 + echo " + + + + + + "; + // line 81 + if ($this->getAttribute($context["loop"], "last", array())) { + // line 82 + echo " + "; + } + // line 84 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['listener'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 85 + echo "
    PriorityListener
    "; + // line 70 + echo twig_escape_filter($this->env, $this->getAttribute($context["listener"], "event", array()), "html", null, true); + echo "
    "; + // line 77 + echo twig_escape_filter($this->env, (($this->getAttribute($context["listener"], "priority", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($context["listener"], "priority", array()), "-")) : ("-")), "html", null, true); + echo ""; + // line 78 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["listener"], "data", array()))); + echo "
    +"; + + $__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38->leave($__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38_prof); + + + $__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8->leave($__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/events.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 257 => 85, 243 => 84, 239 => 82, 237 => 81, 231 => 78, 227 => 77, 223 => 75, 220 => 74, 218 => 73, 212 => 70, 207 => 67, 203 => 65, 200 => 64, 197 => 63, 179 => 62, 177 => 61, 167 => 53, 149 => 52, 135 => 46, 129 => 44, 116 => 33, 114 => 32, 109 => 30, 101 => 25, 95 => 22, 91 => 20, 85 => 16, 83 => 15, 79 => 13, 70 => 12, 56 => 7, 53 => 6, 44 => 5, 34 => 1, 32 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% import _self as helper %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/event.svg') }} + Events + +{% endblock %} + +{% block panel %} +

    Event Dispatcher

    + + {% if collector.calledlisteners is empty %} +
    +

    No events have been recorded. Check that debugging is enabled in the kernel.

    +
    + {% else %} +
    +
    +

    Called Listeners {{ collector.calledlisteners|length }}

    + +
    + {{ helper.render_table(collector.calledlisteners) }} +
    +
    + +
    +

    Not Called Listeners {{ collector.notcalledlisteners|length }}

    +
    + {% if collector.notcalledlisteners is empty %} +
    +

    + There are no uncalled listeners. +

    +

    + All listeners were called for this request or an error occurred + when trying to collect uncalled listeners (in which case check the + logs to get more information). +

    +
    + {% else %} + {{ helper.render_table(collector.notcalledlisteners) }} + {% endif %} +
    +
    +
    + {% endif %} +{% endblock %} + +{% macro render_table(listeners) %} + + + + + + + + + {% set previous_event = (listeners|first).event %} + {% for listener in listeners %} + {% if loop.first or listener.event != previous_event %} + {% if not loop.first %} + + {% endif %} + + + + + + + {% set previous_event = listener.event %} + {% endif %} + + + + + + + {% if loop.last %} + + {% endif %} + {% endfor %} +
    PriorityListener
    {{ listener.event }}
    {{ listener.priority|default('-') }}{{ profiler_dump(listener.data) }}
    +{% endmacro %} +", "@WebProfiler/Collector/events.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig"); + } +} diff --git a/var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php b/var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php new file mode 100644 index 00000000..ad29c182 --- /dev/null +++ b/var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php @@ -0,0 +1,632 @@ +parent = false; + + $this->blocks = array( + 'title' => array($this, 'block_title'), + 'head' => array($this, 'block_head'), + 'body' => array($this, 'block_body'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df->enter($__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/layout.html.twig")); + + $__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7->enter($__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/layout.html.twig")); + + // line 1 + echo " + + + env, $this->env->getCharset(), "html", null, true); + echo "\" /> + + "; + // line 6 + $this->displayBlock('title', $context, $blocks); + echo " + + "; + // line 216 + $this->displayBlock('head', $context, $blocks); + // line 217 + echo " + +
    +
    +
    + "; + // line 222 + echo twig_include($this->env, $context, "@Twig/symfony.svg"); + echo " +
    + +
    +
    +
    + + + + + +
    +
    +
    +
    + +
    + "; + // line 247 + $this->displayBlock('body', $context, $blocks); + // line 248 + echo "
    +
    + + +"; + + $__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df->leave($__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df_prof); + + + $__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7->leave($__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7_prof); + + } + + // line 6 + public function block_title($context, array $blocks = array()) + { + $__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc->enter($__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4->enter($__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + + $__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4->leave($__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4_prof); + + + $__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc->leave($__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc_prof); + + } + + // line 216 + public function block_head($context, array $blocks = array()) + { + $__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6->enter($__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c->enter($__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + + $__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c->leave($__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c_prof); + + + $__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6->leave($__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6_prof); + + } + + // line 247 + public function block_body($context, array $blocks = array()) + { + $__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544->enter($__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb->enter($__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + + $__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb->leave($__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb_prof); + + + $__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544->leave($__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544_prof); + + } + + public function getTemplateName() + { + return "@Twig/layout.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 338 => 247, 321 => 216, 304 => 6, 290 => 248, 288 => 247, 260 => 222, 253 => 217, 251 => 216, 38 => 6, 33 => 4, 28 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + {% block title %}{% endblock %} + + {% block head %}{% endblock %} + + +
    +
    +
    + {{ include('@Twig/symfony.svg') }} +
    + +
    +
    +
    + + + + + +
    +
    +
    +
    + +
    + {% block body %}{% endblock %} +
    +
    + + +", "@Twig/layout.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/layout.html.twig"); + } +} diff --git a/var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php b/var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php new file mode 100644 index 00000000..197f81af --- /dev/null +++ b/var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318->enter($__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/memory.svg")); + + $__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9->enter($__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/memory.svg")); + + // line 1 + echo " + + +"; + + $__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318->leave($__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318_prof); + + + $__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9->leave($__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/memory.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/memory.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/memory.svg"); + } +} diff --git a/var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php b/var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php new file mode 100644 index 00000000..fe3c68f3 --- /dev/null +++ b/var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php @@ -0,0 +1,155 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539->enter($__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.html.twig")); + + $__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247->enter($__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.html.twig")); + + // line 1 + if ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) { + // line 2 + echo " at + + env, $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "class", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "short_class", array()), "html", null, true); + echo " + "; + // line 5 + echo twig_escape_filter($this->env, ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "type", array()) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())), "html", null, true); + echo " + + ("; + // line 7 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatArgs($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "args", array())); + echo ") +"; + } + // line 9 + echo " +"; + // line 10 + if (((($this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "file", array(), "any", true, true) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array())) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "line", array(), "any", true, true)) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array()))) { + // line 11 + echo " "; + echo (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) ? ("
    ") : ("")); + echo " + in "; + // line 12 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatFile($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()), $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array())); + echo "  + "; + // line 13 + ob_start(); + // line 14 + echo " env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "'); switchIcons('icon-"; + echo twig_escape_filter($this->env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-open', 'icon-"; + echo twig_escape_filter($this->env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-close'); return false;\"> + env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-close\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display: "; + echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("inline") : ("none")); + echo "\" /> + env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-open\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display: "; + echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("none") : ("inline")); + echo "\" /> + + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 19 + echo "
    env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "\" style=\"display: "; + echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("block") : ("none")); + echo "\" class=\"trace\"> + "; + // line 20 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->fileExcerpt($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()), $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array())); + echo " +
    +"; + } + + $__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539->leave($__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539_prof); + + + $__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247->leave($__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/trace.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 93 => 20, 86 => 19, 78 => 16, 72 => 15, 63 => 14, 61 => 13, 57 => 12, 52 => 11, 50 => 10, 47 => 9, 42 => 7, 37 => 5, 31 => 4, 27 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% if trace.function %} + at + + {{ trace.short_class }} + {{ trace.type ~ trace.function }} + + ({{ trace.args|format_args }}) +{% endif %} + +{% if trace.file is defined and trace.file and trace.line is defined and trace.line %} + {{ trace.function ? '
    ' : '' }} + in {{ trace.file|format_file(trace.line) }}  + {% spaceless %} + + \"-\" + \"+\" + + {% endspaceless %} +
    + {{ trace.file|file_excerpt(trace.line) }} +
    +{% endif %} +", "@Twig/Exception/trace.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/trace.html.twig"); + } +} diff --git a/var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php b/var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php new file mode 100644 index 00000000..c1cdc730 --- /dev/null +++ b/var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php @@ -0,0 +1,96 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0->enter($__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/logs.html.twig")); + + $__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d->enter($__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/logs.html.twig")); + + // line 1 + echo "
      + "; + // line 2 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))); + foreach ($context['_seq'] as $context["_key"] => $context["log"]) { + // line 3 + echo " getAttribute($context["log"], "priority", array()) >= 400)) { + echo " class=\"error\""; + } elseif (($this->getAttribute($context["log"], "priority", array()) >= 300)) { + echo " class=\"warning\""; + } + echo "> + "; + // line 4 + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "priorityName", array()), "html", null, true); + echo " - "; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatLogMessage($this->getAttribute($context["log"], "message", array()), $this->getAttribute($context["log"], "context", array())); + echo " + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 7 + echo "
    +"; + + $__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0->leave($__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0_prof); + + + $__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d->leave($__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/logs.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 52 => 7, 41 => 4, 32 => 3, 28 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
      + {% for log in logs %} + = 400 %} class=\"error\"{% elseif log.priority >= 300 %} class=\"warning\"{% endif %}> + {{ log.priorityName }} - {{ log.message|format_log_message(log.context) }} + + {% endfor %} +
    +", "@Twig/Exception/logs.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/logs.html.twig"); + } +} diff --git a/var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php b/var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php new file mode 100644 index 00000000..12020e43 --- /dev/null +++ b/var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php @@ -0,0 +1,68 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068->enter($__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/ajax.svg")); + + $__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15->enter($__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/ajax.svg")); + + // line 1 + echo " + + +"; + + $__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068->leave($__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068_prof); + + + $__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15->leave($__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/ajax.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/ajax.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/ajax.svg"); + } +} diff --git a/var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php b/var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php new file mode 100644 index 00000000..b81ebd8b --- /dev/null +++ b/var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php @@ -0,0 +1,259 @@ +parent = $this->loadTemplate("base.html.twig", "default/index.html.twig", 1); + $this->blocks = array( + 'body' => array($this, 'block_body'), + 'stylesheets' => array($this, 'block_stylesheets'), + ); + } + + protected function doGetParent(array $context) + { + return "base.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3->enter($__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399->enter($__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3->leave($__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3_prof); + + + $__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399->leave($__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399_prof); + + } + + // line 3 + public function block_body($context, array $blocks = array()) + { + $__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7->enter($__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281->enter($__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 4 + echo "
    +
    +
    +

    Welcome to Symfony "; + // line 7 + echo twig_escape_filter($this->env, twig_constant("Symfony\\Component\\HttpKernel\\Kernel::VERSION"), "html", null, true); + echo "

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + "; + // line 15 + echo twig_escape_filter($this->env, (isset($context["base_dir"]) ? $context["base_dir"] : $this->getContext($context, "base_dir")), "html", null, true); + echo " +

    +
    + + + +
    +
    +"; + + $__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281->leave($__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281_prof); + + + $__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7->leave($__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7_prof); + + } + + // line 49 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630->enter($__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648->enter($__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + // line 50 + echo " +"; + + $__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648->leave($__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648_prof); + + + $__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630->leave($__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630_prof); + + } + + public function getTemplateName() + { + return "default/index.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 121 => 50, 112 => 49, 93 => 39, 66 => 15, 55 => 7, 50 => 4, 41 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends 'base.html.twig' %} + +{% block body %} +
    +
    +
    +

    Welcome to Symfony {{ constant('Symfony\\\\Component\\\\HttpKernel\\\\Kernel::VERSION') }}

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + {{ base_dir }} +

    +
    + +
    +

    What's next?

    +

    + + + + + Read the documentation to learn + + How to create your first page in Symfony + +

    +
    + +
    +
    +{% endblock %} + +{% block stylesheets %} + +{% endblock %} +", "default/index.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/default/index.html.twig"); + } +} diff --git a/var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php b/var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php new file mode 100644 index 00000000..80fc822a --- /dev/null +++ b/var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php @@ -0,0 +1,81 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3->enter($__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.txt.twig")); + + $__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879->enter($__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.txt.twig")); + + // line 1 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array()))) { + // line 2 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array())); + foreach ($context['_seq'] as $context["_key"] => $context["trace"]) { + // line 3 + $this->loadTemplate("@Twig/Exception/trace.txt.twig", "@Twig/Exception/traces.txt.twig", 3)->display(array("trace" => $context["trace"])); + // line 4 + echo " +"; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['trace'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + } + + $__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3->leave($__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3_prof); + + + $__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879->leave($__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/traces.txt.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 33 => 4, 31 => 3, 27 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% if exception.trace|length %} +{% for trace in exception.trace %} +{% include '@Twig/Exception/trace.txt.twig' with { 'trace': trace } only %} + +{% endfor %} +{% endif %} +", "@Twig/Exception/traces.txt.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/traces.txt.twig"); + } +} diff --git a/var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php b/var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php new file mode 100644 index 00000000..302883ff --- /dev/null +++ b/var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php @@ -0,0 +1,70 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8->enter($__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/symfony.svg")); + + $__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a->enter($__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/symfony.svg")); + + // line 1 + echo " + + + + + + +"; + + $__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8->leave($__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8_prof); + + + $__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a->leave($__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a_prof); + + } + + public function getTemplateName() + { + return "@Twig/symfony.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + + +", "@Twig/symfony.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/symfony.svg"); + } +} diff --git a/var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php b/var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php new file mode 100644 index 00000000..e529e859 --- /dev/null +++ b/var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php @@ -0,0 +1,1628 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/time.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + 'panelContent' => array($this, 'block_panelContent'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c->enter($__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/time.html.twig")); + + $__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6->enter($__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/time.html.twig")); + + // line 3 + $context["helper"] = $this; + // line 5 + if ( !array_key_exists("colors", $context)) { + // line 6 + $context["colors"] = array("default" => "#999", "section" => "#444", "event_listener" => "#00B8F5", "event_listener_loading" => "#00B8F5", "template" => "#66CC00", "doctrine" => "#FF6633", "propel" => "#FF6633"); + } + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c->leave($__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c_prof); + + + $__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6->leave($__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6_prof); + + } + + // line 17 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a->enter($__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78->enter($__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 18 + echo " "; + $context["total_time"] = ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) ? (sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array()))) : ("n/a")); + // line 19 + echo " "; + $context["initialization_time"] = ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) ? (sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inittime", array()))) : ("n/a")); + // line 20 + echo " "; + $context["status_color"] = (((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array())) && ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array()) > 1000))) ? ("yellow") : ("")); + // line 21 + echo " + "; + // line 22 + ob_start(); + // line 23 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/time.svg"); + echo " + "; + // line 24 + echo twig_escape_filter($this->env, (isset($context["total_time"]) ? $context["total_time"] : $this->getContext($context, "total_time")), "html", null, true); + echo " + ms + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 27 + echo " + "; + // line 28 + ob_start(); + // line 29 + echo "
    + Total time + "; + // line 31 + echo twig_escape_filter($this->env, (isset($context["total_time"]) ? $context["total_time"] : $this->getContext($context, "total_time")), "html", null, true); + echo " ms +
    +
    + Initialization time + "; + // line 35 + echo twig_escape_filter($this->env, (isset($context["initialization_time"]) ? $context["initialization_time"] : $this->getContext($context, "initialization_time")), "html", null, true); + echo " ms +
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 38 + echo " + "; + // line 39 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " +"; + + $__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78->leave($__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78_prof); + + + $__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a->leave($__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a_prof); + + } + + // line 42 + public function block_menu($context, array $blocks = array()) + { + $__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93->enter($__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25->enter($__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 43 + echo " + "; + // line 44 + echo twig_include($this->env, $context, "@WebProfiler/Icon/time.svg"); + echo " + Performance + +"; + + $__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25->leave($__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25_prof); + + + $__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93->leave($__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93_prof); + + } + + // line 49 + public function block_panel($context, array $blocks = array()) + { + $__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c->enter($__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64->enter($__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 50 + echo "

    Performance metrics

    + +
    +
    + "; + // line 54 + echo twig_escape_filter($this->env, sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array())), "html", null, true); + echo " ms + Total execution time +
    + +
    + "; + // line 59 + echo twig_escape_filter($this->env, sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inittime", array())), "html", null, true); + echo " ms + Symfony initialization +
    + + "; + // line 63 + if ($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "collectors", array()), "memory", array())) { + // line 64 + echo "
    + "; + // line 65 + echo twig_escape_filter($this->env, sprintf("%.2f", (($this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "collectors", array()), "memory", array()), "memory", array()) / 1024) / 1024)), "html", null, true); + echo " MB + Peak memory usage +
    + "; + } + // line 69 + echo " + "; + // line 70 + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 0)) { + // line 71 + echo "
    + +
    + "; + // line 74 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())), "html", null, true); + echo " + Sub-Request"; + // line 75 + echo (((twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 1)) ? ("s") : ("")); + echo " +
    + + "; + // line 78 + $context["subrequests_time"] = 0; + // line 79 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["child"]) { + // line 80 + echo " "; + $context["subrequests_time"] = ((isset($context["subrequests_time"]) ? $context["subrequests_time"] : $this->getContext($context, "subrequests_time")) + $this->getAttribute($this->getAttribute($this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "time"), "method"), "events", array()), "__section__", array()), "duration", array())); + // line 81 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 82 + echo " +
    + "; + // line 84 + echo twig_escape_filter($this->env, (isset($context["subrequests_time"]) ? $context["subrequests_time"] : $this->getContext($context, "subrequests_time")), "html", null, true); + echo " ms + Sub-Request"; + // line 85 + echo (((twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 1)) ? ("s") : ("")); + echo " time +
    + "; + } + // line 88 + echo "
    + +

    Execution timeline

    + + "; + // line 92 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) { + // line 93 + echo "
    +

    No timing events have been recorded. Are you sure that debugging is enabled in the kernel?

    +
    + "; + } else { + // line 97 + echo " "; + $this->displayBlock("panelContent", $context, $blocks); + echo " + "; + } + + $__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64->leave($__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64_prof); + + + $__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c->leave($__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c_prof); + + } + + // line 101 + public function block_panelContent($context, array $blocks = array()) + { + $__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957->enter($__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panelContent")); + + $__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4->enter($__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panelContent")); + + // line 102 + echo "
    + + + ms + (timeline only displays events with a duration longer than this threshold) +
    + + "; + // line 109 + if ($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) { + // line 110 + echo "

    + Sub-Request "; + // line 111 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => "request"), "method"), "requestattributes", array()), "get", array(0 => "_controller"), "method"), "html", null, true); + echo " + + "; + // line 113 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), "__section__", array()), "duration", array()), "html", null, true); + echo " ms + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()), "panel" => "time")), "html", null, true); + echo "\">Return to parent request + +

    + "; + } elseif ((twig_length_filter($this->env, $this->getAttribute( // line 117 +(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 0)) { + // line 118 + echo "

    + Main Request "; + // line 119 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), "__section__", array()), "duration", array()), "html", null, true); + echo " ms +

    + "; + } + // line 122 + echo " + "; + // line 123 + echo $context["helper"]->getdisplay_timeline(("timeline_" . (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))), $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), (isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); + echo " + + "; + // line 125 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array()))) { + // line 126 + echo "

    Note: sections with a striped background correspond to sub-requests.

    + +

    Sub-requests ("; + // line 128 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())), "html", null, true); + echo ")

    + + "; + // line 130 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["child"]) { + // line 131 + echo " "; + $context["events"] = $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "time"), "method"), "events", array()); + // line 132 + echo "

    + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($context["child"], "token", array()), "panel" => "time")), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "identifier", array()), "html", null, true); + echo " + "; + // line 134 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), "__section__", array()), "duration", array()), "html", null, true); + echo " ms +

    + + "; + // line 137 + echo $context["helper"]->getdisplay_timeline(("timeline_" . $this->getAttribute($context["child"], "token", array())), (isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), (isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 139 + echo " "; + } + // line 140 + echo " + +"; + + $__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4->leave($__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4_prof); + + + $__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957->leave($__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957_prof); + + } + + // line 501 + public function getdump_request_data($__token__ = null, $__profile__ = null, $__events__ = null, $__origin__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "token" => $__token__, + "profile" => $__profile__, + "events" => $__events__, + "origin" => $__origin__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df->enter($__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_request_data")); + + $__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6->enter($__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_request_data")); + + // line 503 + $context["__internal_c2b0b8c4bf0582ea660fc61a9948623449aba18d720f511079fc4e9933c4a496"] = $this; + // line 504 + echo " { + \"id\": \""; + // line 505 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "js", null, true); + echo "\", + \"left\": "; + // line 506 + echo twig_escape_filter($this->env, sprintf("%F", ($this->getAttribute($this->getAttribute((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), "__section__", array()), "origin", array()) - (isset($context["origin"]) ? $context["origin"] : $this->getContext($context, "origin")))), "js", null, true); + echo ", + \"events\": [ +"; + // line 508 + echo $context["__internal_c2b0b8c4bf0582ea660fc61a9948623449aba18d720f511079fc4e9933c4a496"]->getdump_events((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events"))); + echo " + ] + } +"; + + $__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6->leave($__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6_prof); + + + $__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df->leave($__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 514 + public function getdump_events($__events__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "events" => $__events__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801->enter($__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_events")); + + $__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70->enter($__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_events")); + + // line 516 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["name"] => $context["event"]) { + // line 517 + if (("__section__" != $context["name"])) { + // line 518 + echo " { + \"name\": \""; + // line 519 + echo twig_escape_filter($this->env, $context["name"], "js", null, true); + echo "\", + \"category\": \""; + // line 520 + echo twig_escape_filter($this->env, $this->getAttribute($context["event"], "category", array()), "js", null, true); + echo "\", + \"origin\": "; + // line 521 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "origin", array())), "js", null, true); + echo ", + \"starttime\": "; + // line 522 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "starttime", array())), "js", null, true); + echo ", + \"endtime\": "; + // line 523 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "endtime", array())), "js", null, true); + echo ", + \"duration\": "; + // line 524 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "duration", array())), "js", null, true); + echo ", + \"memory\": "; + // line 525 + echo twig_escape_filter($this->env, sprintf("%.1F", (($this->getAttribute($context["event"], "memory", array()) / 1024) / 1024)), "js", null, true); + echo ", + \"periods\": ["; + // line 527 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["event"], "periods", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["period"]) { + // line 528 + echo "{\"start\": "; + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["period"], "starttime", array())), "js", null, true); + echo ", \"end\": "; + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["period"], "endtime", array())), "js", null, true); + echo "}"; + echo (($this->getAttribute($context["loop"], "last", array())) ? ("") : (", ")); + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['period'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 530 + echo "] + }"; + // line 531 + echo (($this->getAttribute($context["loop"], "last", array())) ? ("") : (",")); + echo " +"; + } + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['name'], $context['event'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70->leave($__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70_prof); + + + $__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801->leave($__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 537 + public function getdisplay_timeline($__id__ = null, $__events__ = null, $__colors__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "id" => $__id__, + "events" => $__events__, + "colors" => $__colors__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5->enter($__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_timeline")); + + $__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf->enter($__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_timeline")); + + // line 538 + echo "
    +
    + "; + // line 540 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); + foreach ($context['_seq'] as $context["category"] => $context["color"]) { + // line 541 + echo " env, $context["color"], "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $context["category"], "html", null, true); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['category'], $context['color'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 543 + echo "
    + env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); + echo "\" class=\"timeline\"> +
    +"; + + $__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf->leave($__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf_prof); + + + $__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5->leave($__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/time.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 1032 => 544, 1029 => 543, 1018 => 541, 1014 => 540, 1010 => 538, 990 => 537, 954 => 531, 951 => 530, 932 => 528, 915 => 527, 911 => 525, 907 => 524, 903 => 523, 899 => 522, 895 => 521, 891 => 520, 887 => 519, 884 => 518, 882 => 517, 865 => 516, 847 => 514, 822 => 508, 817 => 506, 813 => 505, 810 => 504, 808 => 503, 787 => 501, 776 => 498, 742 => 466, 724 => 463, 707 => 462, 704 => 461, 702 => 460, 697 => 458, 692 => 456, 416 => 183, 372 => 141, 369 => 140, 366 => 139, 358 => 137, 352 => 134, 346 => 133, 343 => 132, 340 => 131, 336 => 130, 331 => 128, 327 => 126, 325 => 125, 320 => 123, 317 => 122, 311 => 119, 308 => 118, 306 => 117, 300 => 114, 296 => 113, 291 => 111, 288 => 110, 286 => 109, 277 => 102, 268 => 101, 254 => 97, 248 => 93, 246 => 92, 240 => 88, 234 => 85, 230 => 84, 226 => 82, 220 => 81, 217 => 80, 212 => 79, 210 => 78, 204 => 75, 200 => 74, 195 => 71, 193 => 70, 190 => 69, 183 => 65, 180 => 64, 178 => 63, 171 => 59, 163 => 54, 157 => 50, 148 => 49, 134 => 44, 131 => 43, 122 => 42, 110 => 39, 107 => 38, 101 => 35, 94 => 31, 90 => 29, 88 => 28, 85 => 27, 79 => 24, 74 => 23, 72 => 22, 69 => 21, 66 => 20, 63 => 19, 60 => 18, 51 => 17, 41 => 1, 38 => 6, 36 => 5, 34 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% import _self as helper %} + +{% if colors is not defined %} + {% set colors = { + 'default': '#999', + 'section': '#444', + 'event_listener': '#00B8F5', + 'event_listener_loading': '#00B8F5', + 'template': '#66CC00', + 'doctrine': '#FF6633', + 'propel': '#FF6633', + } %} +{% endif %} + +{% block toolbar %} + {% set total_time = collector.events|length ? '%.0f'|format(collector.duration) : 'n/a' %} + {% set initialization_time = collector.events|length ? '%.0f'|format(collector.inittime) : 'n/a' %} + {% set status_color = collector.events|length and collector.duration > 1000 ? 'yellow' : '' %} + + {% set icon %} + {{ include('@WebProfiler/Icon/time.svg') }} + {{ total_time }} + ms + {% endset %} + + {% set text %} +
    + Total time + {{ total_time }} ms +
    +
    + Initialization time + {{ initialization_time }} ms +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/time.svg') }} + Performance + +{% endblock %} + +{% block panel %} +

    Performance metrics

    + +
    +
    + {{ '%.0f'|format(collector.duration) }} ms + Total execution time +
    + +
    + {{ '%.0f'|format(collector.inittime) }} ms + Symfony initialization +
    + + {% if profile.collectors.memory %} +
    + {{ '%.2f'|format(profile.collectors.memory.memory / 1024 / 1024) }} MB + Peak memory usage +
    + {% endif %} + + {% if profile.children|length > 0 %} +
    + +
    + {{ profile.children|length }} + Sub-Request{{ profile.children|length > 1 ? 's' }} +
    + + {% set subrequests_time = 0 %} + {% for child in profile.children %} + {% set subrequests_time = subrequests_time + child.getcollector('time').events.__section__.duration %} + {% endfor %} + +
    + {{ subrequests_time }} ms + Sub-Request{{ profile.children|length > 1 ? 's' }} time +
    + {% endif %} +
    + +

    Execution timeline

    + + {% if collector.events is empty %} +
    +

    No timing events have been recorded. Are you sure that debugging is enabled in the kernel?

    +
    + {% else %} + {{ block('panelContent') }} + {% endif %} +{% endblock %} + +{% block panelContent %} +
    + + + ms + (timeline only displays events with a duration longer than this threshold) +
    + + {% if profile.parent %} +

    + Sub-Request {{ profile.getcollector('request').requestattributes.get('_controller') }} + + {{ collector.events.__section__.duration }} ms + Return to parent request + +

    + {% elseif profile.children|length > 0 %} +

    + Main Request {{ collector.events.__section__.duration }} ms +

    + {% endif %} + + {{ helper.display_timeline('timeline_' ~ token, collector.events, colors) }} + + {% if profile.children|length %} +

    Note: sections with a striped background correspond to sub-requests.

    + +

    Sub-requests ({{ profile.children|length }})

    + + {% for child in profile.children %} + {% set events = child.getcollector('time').events %} +

    + {{ child.getcollector('request').identifier }} + {{ events.__section__.duration }} ms +

    + + {{ helper.display_timeline('timeline_' ~ child.token, events, colors) }} + {% endfor %} + {% endif %} + + +{% endblock %} + +{% macro dump_request_data(token, profile, events, origin) %} +{% autoescape 'js' %} +{% from _self import dump_events %} + { + \"id\": \"{{ token }}\", + \"left\": {{ \"%F\"|format(events.__section__.origin - origin) }}, + \"events\": [ +{{ dump_events(events) }} + ] + } +{% endautoescape %} +{% endmacro %} + +{% macro dump_events(events) %} +{% autoescape 'js' %} +{% for name, event in events %} +{% if '__section__' != name %} + { + \"name\": \"{{ name }}\", + \"category\": \"{{ event.category }}\", + \"origin\": {{ \"%F\"|format(event.origin) }}, + \"starttime\": {{ \"%F\"|format(event.starttime) }}, + \"endtime\": {{ \"%F\"|format(event.endtime) }}, + \"duration\": {{ \"%F\"|format(event.duration) }}, + \"memory\": {{ \"%.1F\"|format(event.memory / 1024 / 1024) }}, + \"periods\": [ + {%- for period in event.periods -%} + {\"start\": {{ \"%F\"|format(period.starttime) }}, \"end\": {{ \"%F\"|format(period.endtime) }}}{{ loop.last ? '' : ', ' }} + {%- endfor -%} + ] + }{{ loop.last ? '' : ',' }} +{% endif %} +{% endfor %} +{% endautoescape %} +{% endmacro %} + +{% macro display_timeline(id, events, colors) %} +
    +
    + {% for category, color in colors %} + {{ category }} + {% endfor %} +
    + +
    +{% endmacro %} +", "@WebProfiler/Collector/time.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/time.html.twig"); + } +} diff --git a/var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php b/var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php new file mode 100644 index 00000000..4051b031 --- /dev/null +++ b/var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php @@ -0,0 +1,1122 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96->enter($__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base_js.html.twig")); + + $__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0->enter($__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base_js.html.twig")); + + // line 1 + echo "getContext($context, "csp_script_nonce")))) { + echo " nonce="; + echo twig_escape_filter($this->env, (isset($context["csp_script_nonce"]) ? $context["csp_script_nonce"] : $this->getContext($context, "csp_script_nonce")), "html", null, true); + } + echo ">/* 1) { + setTimeout(function(){ + options.maxTries--; + request(url, onSuccess, onError, payload, options); + }, 500); + + return null; + } + + if (200 === xhr.status) { + (onSuccess || noop)(xhr); + } else { + (onError || noop)(xhr); + } + }; + xhr.send(payload || ''); + }, + + getPreference = function(name) { + if (!window.localStorage) { + return null; + } + + return localStorage.getItem(profilerStorageKey + name); + }, + + setPreference = function(name, value) { + if (!window.localStorage) { + return null; + } + + localStorage.setItem(profilerStorageKey + name, value); + }, + + requestStack = [], + + extractHeaders = function(xhr, stackElement) { + /* Here we avoid to call xhr.getResponseHeader in order to */ + /* prevent polluting the console with CORS security errors */ + var allHeaders = xhr.getAllResponseHeaders(); + var ret; + + if (ret = allHeaders.match(/^x-debug-token:\\s+(.*)\$/im)) { + stackElement.profile = ret[1]; + } + if (ret = allHeaders.match(/^x-debug-token-link:\\s+(.*)\$/im)) { + stackElement.profilerUrl = ret[1]; + } + }, + + renderAjaxRequests = function() { + var requestCounter = document.querySelectorAll('.sf-toolbar-ajax-requests'); + if (!requestCounter.length) { + return; + } + + var ajaxToolbarPanel = document.querySelector('.sf-toolbar-block-ajax'); + var tbodies = document.querySelectorAll('.sf-toolbar-ajax-request-list'); + var state = 'ok'; + if (tbodies.length) { + var tbody = tbodies[0]; + + var rows = document.createDocumentFragment(); + + if (requestStack.length) { + for (var i = 0; i < requestStack.length; i++) { + var request = requestStack[i]; + + var row = document.createElement('tr'); + rows.insertBefore(row, rows.firstChild); + + var methodCell = document.createElement('td'); + if (request.error) { + methodCell.className = 'sf-ajax-request-error'; + } + methodCell.textContent = request.method; + row.appendChild(methodCell); + + var typeCell = document.createElement('td'); + typeCell.textContent = request.type; + row.appendChild(typeCell); + + var statusCodeCell = document.createElement('td'); + var statusCode = document.createElement('span'); + if (request.statusCode < 300) { + statusCode.setAttribute('class', 'sf-toolbar-status'); + } else if (request.statusCode < 400) { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-yellow'); + } else { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-red'); + } + statusCode.textContent = request.statusCode || '-'; + statusCodeCell.appendChild(statusCode); + row.appendChild(statusCodeCell); + + var pathCell = document.createElement('td'); + pathCell.className = 'sf-ajax-request-url'; + if ('GET' === request.method) { + var pathLink = document.createElement('a'); + pathLink.setAttribute('href', request.url); + pathLink.textContent = request.url; + pathCell.appendChild(pathLink); + } else { + pathCell.textContent = request.url; + } + pathCell.setAttribute('title', request.url); + row.appendChild(pathCell); + + var durationCell = document.createElement('td'); + durationCell.className = 'sf-ajax-request-duration'; + + if (request.duration) { + durationCell.textContent = request.duration + \"ms\"; + } else { + durationCell.textContent = '-'; + } + row.appendChild(durationCell); + + row.appendChild(document.createTextNode(' ')); + var profilerCell = document.createElement('td'); + + if (request.profilerUrl) { + var profilerLink = document.createElement('a'); + profilerLink.setAttribute('href', request.profilerUrl); + profilerLink.textContent = request.profile; + profilerCell.appendChild(profilerLink); + } else { + profilerCell.textContent = 'n/a'; + } + + row.appendChild(profilerCell); + + var requestState = 'ok'; + if (request.error) { + requestState = 'error'; + if (state != \"loading\" && i > requestStack.length - 4) { + state = 'error'; + } + } else if (request.loading) { + requestState = 'loading'; + state = 'loading'; + } + row.className = 'sf-ajax-request sf-ajax-request-' + requestState; + } + + var infoSpan = document.querySelectorAll(\".sf-toolbar-ajax-info\")[0]; + var children = collectionToArray(tbody.children); + for (var i = 0; i < children.length; i++) { + tbody.removeChild(children[i]); + } + tbody.appendChild(rows); + + if (infoSpan) { + var text = requestStack.length + ' AJAX request' + (requestStack.length > 1 ? 's' : ''); + infoSpan.textContent = text; + } + + ajaxToolbarPanel.style.display = 'block'; + } else { + ajaxToolbarPanel.style.display = 'none'; + } + } + + requestCounter[0].textContent = requestStack.length; + + var className = 'sf-toolbar-ajax-requests sf-toolbar-value'; + requestCounter[0].className = className; + + if (state == 'ok') { + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + } else if (state == 'error') { + Sfjs.addClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } else { + Sfjs.addClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } + }; + + var addEventListener; + + var el = document.createElement('div'); + if (!('addEventListener' in el)) { + addEventListener = function (element, eventName, callback) { + element.attachEvent('on' + eventName, callback); + }; + } else { + addEventListener = function (element, eventName, callback) { + element.addEventListener(eventName, callback, false); + }; + } + + "; + // line 241 + if (array_key_exists("excluded_ajax_paths", $context)) { + // line 242 + echo " if (window.fetch && window.fetch.polyfill === undefined) { + var oldFetch = window.fetch; + window.fetch = function () { + var promise = oldFetch.apply(this, arguments); + var url = arguments[0]; + var params = arguments[1]; + var paramType = Object.prototype.toString.call(arguments[0]); + if (paramType === '[object Request]') { + url = arguments[0].url; + params = { + method: arguments[0].method, + credentials: arguments[0].credentials, + headers: arguments[0].headers, + mode: arguments[0].mode, + redirect: arguments[0].redirect + }; + } + if (!url.match(new RegExp("; + // line 259 + echo twig_jsonencode_filter((isset($context["excluded_ajax_paths"]) ? $context["excluded_ajax_paths"] : $this->getContext($context, "excluded_ajax_paths"))); + echo "))) { + var method = 'GET'; + if (params && params.method !== undefined) { + method = params.method; + } + + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'fetch', + start: new Date() + }; + + requestStack.push(stackElement); + promise.then(function (r) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = r.status < 200 || r.status >= 400; + stackElement.statusCode = r.status; + stackElement.profile = r.headers.get('x-debug-token'); + stackElement.profilerUrl = r.headers.get('x-debug-token-link'); + Sfjs.renderAjaxRequests(); + }, function (e){ + stackElement.loading = false; + stackElement.error = true; + }); + Sfjs.renderAjaxRequests(); + } + + return promise; + }; + } + if (window.XMLHttpRequest && XMLHttpRequest.prototype.addEventListener) { + var proxied = XMLHttpRequest.prototype.open; + + XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { + var self = this; + + /* prevent logging AJAX calls to static and inline files, like templates */ + var path = url; + if (url.substr(0, 1) === '/') { + if (0 === url.indexOf('"; + // line 302 + echo twig_escape_filter($this->env, twig_escape_filter($this->env, $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array()), "js"), "html", null, true); + echo "')) { + path = url.substr("; + // line 303 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array())), "html", null, true); + echo "); + } + } + else if (0 === url.indexOf('"; + // line 306 + echo twig_escape_filter($this->env, twig_escape_filter($this->env, ($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "schemeAndHttpHost", array()) . $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array())), "js"), "html", null, true); + echo "')) { + path = url.substr("; + // line 307 + echo twig_escape_filter($this->env, twig_length_filter($this->env, ($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "schemeAndHttpHost", array()) . $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array()))), "html", null, true); + echo "); + } + + if (!path.match(new RegExp("; + // line 310 + echo twig_jsonencode_filter((isset($context["excluded_ajax_paths"]) ? $context["excluded_ajax_paths"] : $this->getContext($context, "excluded_ajax_paths"))); + echo "))) { + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'xhr', + start: new Date() + }; + + requestStack.push(stackElement); + + this.addEventListener('readystatechange', function() { + if (self.readyState == 4) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = self.status < 200 || self.status >= 400; + stackElement.statusCode = self.status; + extractHeaders(self, stackElement); + + Sfjs.renderAjaxRequests(); + } + }, false); + + Sfjs.renderAjaxRequests(); + } + + proxied.apply(this, Array.prototype.slice.call(arguments)); + }; + } + "; + } + // line 341 + echo " + return { + hasClass: hasClass, + + removeClass: removeClass, + + addClass: addClass, + + toggleClass: toggleClass, + + getPreference: getPreference, + + setPreference: setPreference, + + addEventListener: addEventListener, + + request: request, + + renderAjaxRequests: renderAjaxRequests, + + load: function(selector, url, onSuccess, onError, options) { + var el = document.getElementById(selector); + + if (el && el.getAttribute('data-sfurl') !== url) { + request( + url, + function(xhr) { + el.innerHTML = xhr.responseText; + el.setAttribute('data-sfurl', url); + removeClass(el, 'loading'); + (onSuccess || noop)(xhr, el); + }, + function(xhr) { (onError || noop)(xhr, el); }, + '', + options + ); + } + + return this; + }, + + toggle: function(selector, elOn, elOff) { + var tmp = elOn.style.display, + el = document.getElementById(selector); + + elOn.style.display = elOff.style.display; + elOff.style.display = tmp; + + if (el) { + el.style.display = 'none' === tmp ? 'none' : 'block'; + } + + return this; + }, + + createTabs: function() { + var tabGroups = document.querySelectorAll('.sf-tabs'); + + /* create the tab navigation for each group of tabs */ + for (var i = 0; i < tabGroups.length; i++) { + var tabs = tabGroups[i].querySelectorAll('.tab'); + var tabNavigation = document.createElement('ul'); + tabNavigation.className = 'tab-navigation'; + + for (var j = 0; j < tabs.length; j++) { + var tabId = 'tab-' + i + '-' + j; + var tabTitle = tabs[j].querySelector('.tab-title').innerHTML; + + var tabNavigationItem = document.createElement('li'); + tabNavigationItem.setAttribute('data-tab-id', tabId); + if (j == 0) { Sfjs.addClass(tabNavigationItem, 'active'); } + if (Sfjs.hasClass(tabs[j], 'disabled')) { Sfjs.addClass(tabNavigationItem, 'disabled'); } + tabNavigationItem.innerHTML = tabTitle; + tabNavigation.appendChild(tabNavigationItem); + + var tabContent = tabs[j].querySelector('.tab-content'); + tabContent.parentElement.setAttribute('id', tabId); + } + + tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild); + } + + /* display the active tab and add the 'click' event listeners */ + for (i = 0; i < tabGroups.length; i++) { + tabNavigation = tabGroups[i].querySelectorAll('.tab-navigation li'); + + for (j = 0; j < tabNavigation.length; j++) { + tabId = tabNavigation[j].getAttribute('data-tab-id'); + document.getElementById(tabId).querySelector('.tab-title').className = 'hidden'; + + if (Sfjs.hasClass(tabNavigation[j], 'active')) { + document.getElementById(tabId).className = 'block'; + } else { + document.getElementById(tabId).className = 'hidden'; + } + + tabNavigation[j].addEventListener('click', function(e) { + var activeTab = e.target || e.srcElement; + + /* needed because when the tab contains HTML contents, user can click */ + /* on any of those elements instead of their parent '
  • ' element */ + while (activeTab.tagName.toLowerCase() !== 'li') { + activeTab = activeTab.parentNode; + } + + /* get the full list of tabs through the parent of the active tab element */ + var tabNavigation = activeTab.parentNode.children; + for (var k = 0; k < tabNavigation.length; k++) { + var tabId = tabNavigation[k].getAttribute('data-tab-id'); + document.getElementById(tabId).className = 'hidden'; + Sfjs.removeClass(tabNavigation[k], 'active'); + } + + Sfjs.addClass(activeTab, 'active'); + var activeTabId = activeTab.getAttribute('data-tab-id'); + document.getElementById(activeTabId).className = 'block'; + }); + } + } + }, + + createToggles: function() { + var toggles = document.querySelectorAll('.sf-toggle'); + + for (var i = 0; i < toggles.length; i++) { + var elementSelector = toggles[i].getAttribute('data-toggle-selector'); + var element = document.querySelector(elementSelector); + + Sfjs.addClass(element, 'sf-toggle-content'); + + if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') { + Sfjs.addClass(element, 'sf-toggle-visible'); + } else { + Sfjs.addClass(element, 'sf-toggle-hidden'); + } + + Sfjs.addEventListener(toggles[i], 'click', function(e) { + e.preventDefault(); + + var toggle = e.target || e.srcElement; + + /* needed because when the toggle contains HTML contents, user can click */ + /* on any of those elements instead of their parent '.sf-toggle' element */ + while (!Sfjs.hasClass(toggle, 'sf-toggle')) { + toggle = toggle.parentNode; + } + + var element = document.querySelector(toggle.getAttribute('data-toggle-selector')); + + Sfjs.toggleClass(element, 'sf-toggle-hidden'); + Sfjs.toggleClass(element, 'sf-toggle-visible'); + + /* the toggle doesn't change its contents when clicking on it */ + if (!toggle.hasAttribute('data-toggle-alt-content')) { + return; + } + + if (!toggle.hasAttribute('data-toggle-original-content')) { + toggle.setAttribute('data-toggle-original-content', toggle.innerHTML); + } + + var currentContent = toggle.innerHTML; + var originalContent = toggle.getAttribute('data-toggle-original-content'); + var altContent = toggle.getAttribute('data-toggle-alt-content'); + toggle.innerHTML = currentContent !== altContent ? altContent : originalContent; + }); + } + } + }; + })(); + + Sfjs.addEventListener(window, 'load', function() { + Sfjs.createTabs(); + Sfjs.createToggles(); + }); + +/*]]>*/ +"; + + $__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96->leave($__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96_prof); + + + $__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0->leave($__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/base_js.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 392 => 341, 358 => 310, 352 => 307, 348 => 306, 342 => 303, 338 => 302, 292 => 259, 273 => 242, 271 => 241, 33 => 5, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("/* 1) { + setTimeout(function(){ + options.maxTries--; + request(url, onSuccess, onError, payload, options); + }, 500); + + return null; + } + + if (200 === xhr.status) { + (onSuccess || noop)(xhr); + } else { + (onError || noop)(xhr); + } + }; + xhr.send(payload || ''); + }, + + getPreference = function(name) { + if (!window.localStorage) { + return null; + } + + return localStorage.getItem(profilerStorageKey + name); + }, + + setPreference = function(name, value) { + if (!window.localStorage) { + return null; + } + + localStorage.setItem(profilerStorageKey + name, value); + }, + + requestStack = [], + + extractHeaders = function(xhr, stackElement) { + /* Here we avoid to call xhr.getResponseHeader in order to */ + /* prevent polluting the console with CORS security errors */ + var allHeaders = xhr.getAllResponseHeaders(); + var ret; + + if (ret = allHeaders.match(/^x-debug-token:\\s+(.*)\$/im)) { + stackElement.profile = ret[1]; + } + if (ret = allHeaders.match(/^x-debug-token-link:\\s+(.*)\$/im)) { + stackElement.profilerUrl = ret[1]; + } + }, + + renderAjaxRequests = function() { + var requestCounter = document.querySelectorAll('.sf-toolbar-ajax-requests'); + if (!requestCounter.length) { + return; + } + + var ajaxToolbarPanel = document.querySelector('.sf-toolbar-block-ajax'); + var tbodies = document.querySelectorAll('.sf-toolbar-ajax-request-list'); + var state = 'ok'; + if (tbodies.length) { + var tbody = tbodies[0]; + + var rows = document.createDocumentFragment(); + + if (requestStack.length) { + for (var i = 0; i < requestStack.length; i++) { + var request = requestStack[i]; + + var row = document.createElement('tr'); + rows.insertBefore(row, rows.firstChild); + + var methodCell = document.createElement('td'); + if (request.error) { + methodCell.className = 'sf-ajax-request-error'; + } + methodCell.textContent = request.method; + row.appendChild(methodCell); + + var typeCell = document.createElement('td'); + typeCell.textContent = request.type; + row.appendChild(typeCell); + + var statusCodeCell = document.createElement('td'); + var statusCode = document.createElement('span'); + if (request.statusCode < 300) { + statusCode.setAttribute('class', 'sf-toolbar-status'); + } else if (request.statusCode < 400) { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-yellow'); + } else { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-red'); + } + statusCode.textContent = request.statusCode || '-'; + statusCodeCell.appendChild(statusCode); + row.appendChild(statusCodeCell); + + var pathCell = document.createElement('td'); + pathCell.className = 'sf-ajax-request-url'; + if ('GET' === request.method) { + var pathLink = document.createElement('a'); + pathLink.setAttribute('href', request.url); + pathLink.textContent = request.url; + pathCell.appendChild(pathLink); + } else { + pathCell.textContent = request.url; + } + pathCell.setAttribute('title', request.url); + row.appendChild(pathCell); + + var durationCell = document.createElement('td'); + durationCell.className = 'sf-ajax-request-duration'; + + if (request.duration) { + durationCell.textContent = request.duration + \"ms\"; + } else { + durationCell.textContent = '-'; + } + row.appendChild(durationCell); + + row.appendChild(document.createTextNode(' ')); + var profilerCell = document.createElement('td'); + + if (request.profilerUrl) { + var profilerLink = document.createElement('a'); + profilerLink.setAttribute('href', request.profilerUrl); + profilerLink.textContent = request.profile; + profilerCell.appendChild(profilerLink); + } else { + profilerCell.textContent = 'n/a'; + } + + row.appendChild(profilerCell); + + var requestState = 'ok'; + if (request.error) { + requestState = 'error'; + if (state != \"loading\" && i > requestStack.length - 4) { + state = 'error'; + } + } else if (request.loading) { + requestState = 'loading'; + state = 'loading'; + } + row.className = 'sf-ajax-request sf-ajax-request-' + requestState; + } + + var infoSpan = document.querySelectorAll(\".sf-toolbar-ajax-info\")[0]; + var children = collectionToArray(tbody.children); + for (var i = 0; i < children.length; i++) { + tbody.removeChild(children[i]); + } + tbody.appendChild(rows); + + if (infoSpan) { + var text = requestStack.length + ' AJAX request' + (requestStack.length > 1 ? 's' : ''); + infoSpan.textContent = text; + } + + ajaxToolbarPanel.style.display = 'block'; + } else { + ajaxToolbarPanel.style.display = 'none'; + } + } + + requestCounter[0].textContent = requestStack.length; + + var className = 'sf-toolbar-ajax-requests sf-toolbar-value'; + requestCounter[0].className = className; + + if (state == 'ok') { + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + } else if (state == 'error') { + Sfjs.addClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } else { + Sfjs.addClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } + }; + + var addEventListener; + + var el = document.createElement('div'); + if (!('addEventListener' in el)) { + addEventListener = function (element, eventName, callback) { + element.attachEvent('on' + eventName, callback); + }; + } else { + addEventListener = function (element, eventName, callback) { + element.addEventListener(eventName, callback, false); + }; + } + + {% if excluded_ajax_paths is defined %} + if (window.fetch && window.fetch.polyfill === undefined) { + var oldFetch = window.fetch; + window.fetch = function () { + var promise = oldFetch.apply(this, arguments); + var url = arguments[0]; + var params = arguments[1]; + var paramType = Object.prototype.toString.call(arguments[0]); + if (paramType === '[object Request]') { + url = arguments[0].url; + params = { + method: arguments[0].method, + credentials: arguments[0].credentials, + headers: arguments[0].headers, + mode: arguments[0].mode, + redirect: arguments[0].redirect + }; + } + if (!url.match(new RegExp({{ excluded_ajax_paths|json_encode|raw }}))) { + var method = 'GET'; + if (params && params.method !== undefined) { + method = params.method; + } + + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'fetch', + start: new Date() + }; + + requestStack.push(stackElement); + promise.then(function (r) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = r.status < 200 || r.status >= 400; + stackElement.statusCode = r.status; + stackElement.profile = r.headers.get('x-debug-token'); + stackElement.profilerUrl = r.headers.get('x-debug-token-link'); + Sfjs.renderAjaxRequests(); + }, function (e){ + stackElement.loading = false; + stackElement.error = true; + }); + Sfjs.renderAjaxRequests(); + } + + return promise; + }; + } + if (window.XMLHttpRequest && XMLHttpRequest.prototype.addEventListener) { + var proxied = XMLHttpRequest.prototype.open; + + XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { + var self = this; + + /* prevent logging AJAX calls to static and inline files, like templates */ + var path = url; + if (url.substr(0, 1) === '/') { + if (0 === url.indexOf('{{ request.basePath|e('js') }}')) { + path = url.substr({{ request.basePath|length }}); + } + } + else if (0 === url.indexOf('{{ (request.schemeAndHttpHost ~ request.basePath)|e('js') }}')) { + path = url.substr({{ (request.schemeAndHttpHost ~ request.basePath)|length }}); + } + + if (!path.match(new RegExp({{ excluded_ajax_paths|json_encode|raw }}))) { + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'xhr', + start: new Date() + }; + + requestStack.push(stackElement); + + this.addEventListener('readystatechange', function() { + if (self.readyState == 4) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = self.status < 200 || self.status >= 400; + stackElement.statusCode = self.status; + extractHeaders(self, stackElement); + + Sfjs.renderAjaxRequests(); + } + }, false); + + Sfjs.renderAjaxRequests(); + } + + proxied.apply(this, Array.prototype.slice.call(arguments)); + }; + } + {% endif %} + + return { + hasClass: hasClass, + + removeClass: removeClass, + + addClass: addClass, + + toggleClass: toggleClass, + + getPreference: getPreference, + + setPreference: setPreference, + + addEventListener: addEventListener, + + request: request, + + renderAjaxRequests: renderAjaxRequests, + + load: function(selector, url, onSuccess, onError, options) { + var el = document.getElementById(selector); + + if (el && el.getAttribute('data-sfurl') !== url) { + request( + url, + function(xhr) { + el.innerHTML = xhr.responseText; + el.setAttribute('data-sfurl', url); + removeClass(el, 'loading'); + (onSuccess || noop)(xhr, el); + }, + function(xhr) { (onError || noop)(xhr, el); }, + '', + options + ); + } + + return this; + }, + + toggle: function(selector, elOn, elOff) { + var tmp = elOn.style.display, + el = document.getElementById(selector); + + elOn.style.display = elOff.style.display; + elOff.style.display = tmp; + + if (el) { + el.style.display = 'none' === tmp ? 'none' : 'block'; + } + + return this; + }, + + createTabs: function() { + var tabGroups = document.querySelectorAll('.sf-tabs'); + + /* create the tab navigation for each group of tabs */ + for (var i = 0; i < tabGroups.length; i++) { + var tabs = tabGroups[i].querySelectorAll('.tab'); + var tabNavigation = document.createElement('ul'); + tabNavigation.className = 'tab-navigation'; + + for (var j = 0; j < tabs.length; j++) { + var tabId = 'tab-' + i + '-' + j; + var tabTitle = tabs[j].querySelector('.tab-title').innerHTML; + + var tabNavigationItem = document.createElement('li'); + tabNavigationItem.setAttribute('data-tab-id', tabId); + if (j == 0) { Sfjs.addClass(tabNavigationItem, 'active'); } + if (Sfjs.hasClass(tabs[j], 'disabled')) { Sfjs.addClass(tabNavigationItem, 'disabled'); } + tabNavigationItem.innerHTML = tabTitle; + tabNavigation.appendChild(tabNavigationItem); + + var tabContent = tabs[j].querySelector('.tab-content'); + tabContent.parentElement.setAttribute('id', tabId); + } + + tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild); + } + + /* display the active tab and add the 'click' event listeners */ + for (i = 0; i < tabGroups.length; i++) { + tabNavigation = tabGroups[i].querySelectorAll('.tab-navigation li'); + + for (j = 0; j < tabNavigation.length; j++) { + tabId = tabNavigation[j].getAttribute('data-tab-id'); + document.getElementById(tabId).querySelector('.tab-title').className = 'hidden'; + + if (Sfjs.hasClass(tabNavigation[j], 'active')) { + document.getElementById(tabId).className = 'block'; + } else { + document.getElementById(tabId).className = 'hidden'; + } + + tabNavigation[j].addEventListener('click', function(e) { + var activeTab = e.target || e.srcElement; + + /* needed because when the tab contains HTML contents, user can click */ + /* on any of those elements instead of their parent '
  • ' element */ + while (activeTab.tagName.toLowerCase() !== 'li') { + activeTab = activeTab.parentNode; + } + + /* get the full list of tabs through the parent of the active tab element */ + var tabNavigation = activeTab.parentNode.children; + for (var k = 0; k < tabNavigation.length; k++) { + var tabId = tabNavigation[k].getAttribute('data-tab-id'); + document.getElementById(tabId).className = 'hidden'; + Sfjs.removeClass(tabNavigation[k], 'active'); + } + + Sfjs.addClass(activeTab, 'active'); + var activeTabId = activeTab.getAttribute('data-tab-id'); + document.getElementById(activeTabId).className = 'block'; + }); + } + } + }, + + createToggles: function() { + var toggles = document.querySelectorAll('.sf-toggle'); + + for (var i = 0; i < toggles.length; i++) { + var elementSelector = toggles[i].getAttribute('data-toggle-selector'); + var element = document.querySelector(elementSelector); + + Sfjs.addClass(element, 'sf-toggle-content'); + + if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') { + Sfjs.addClass(element, 'sf-toggle-visible'); + } else { + Sfjs.addClass(element, 'sf-toggle-hidden'); + } + + Sfjs.addEventListener(toggles[i], 'click', function(e) { + e.preventDefault(); + + var toggle = e.target || e.srcElement; + + /* needed because when the toggle contains HTML contents, user can click */ + /* on any of those elements instead of their parent '.sf-toggle' element */ + while (!Sfjs.hasClass(toggle, 'sf-toggle')) { + toggle = toggle.parentNode; + } + + var element = document.querySelector(toggle.getAttribute('data-toggle-selector')); + + Sfjs.toggleClass(element, 'sf-toggle-hidden'); + Sfjs.toggleClass(element, 'sf-toggle-visible'); + + /* the toggle doesn't change its contents when clicking on it */ + if (!toggle.hasAttribute('data-toggle-alt-content')) { + return; + } + + if (!toggle.hasAttribute('data-toggle-original-content')) { + toggle.setAttribute('data-toggle-original-content', toggle.innerHTML); + } + + var currentContent = toggle.innerHTML; + var originalContent = toggle.getAttribute('data-toggle-original-content'); + var altContent = toggle.getAttribute('data-toggle-alt-content'); + toggle.innerHTML = currentContent !== altContent ? altContent : originalContent; + }); + } + } + }; + })(); + + Sfjs.addEventListener(window, 'load', function() { + Sfjs.createTabs(); + Sfjs.createToggles(); + }); + +/*]]>*/ +", "@WebProfiler/Profiler/base_js.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig"); + } +} diff --git a/var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php b/var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php new file mode 100644 index 00000000..ba7ba881 --- /dev/null +++ b/var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php @@ -0,0 +1,147 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/router.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664->enter($__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/router.html.twig")); + + $__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9->enter($__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/router.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664->leave($__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664_prof); + + + $__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9->leave($__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6->enter($__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb->enter($__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + + $__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb->leave($__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb_prof); + + + $__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6->leave($__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6_prof); + + } + + // line 5 + public function block_menu($context, array $blocks = array()) + { + $__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd->enter($__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9->enter($__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 6 + echo " + "; + // line 7 + echo twig_include($this->env, $context, "@WebProfiler/Icon/router.svg"); + echo " + Routing + +"; + + $__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9->leave($__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9_prof); + + + $__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd->leave($__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd_prof); + + } + + // line 12 + public function block_panel($context, array $blocks = array()) + { + $__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87->enter($__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f->enter($__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 13 + echo " "; + echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment($this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_router", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))))); + echo " +"; + + $__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f->leave($__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f_prof); + + + $__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87->leave($__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/router.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 94 => 13, 85 => 12, 71 => 7, 68 => 6, 59 => 5, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %}{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/router.svg') }} + Routing + +{% endblock %} + +{% block panel %} + {{ render(path('_profiler_router', { token: token })) }} +{% endblock %} +", "@WebProfiler/Collector/router.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/router.html.twig"); + } +} diff --git a/var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php b/var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php new file mode 100644 index 00000000..4493a75b --- /dev/null +++ b/var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php @@ -0,0 +1,214 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/exception.html.twig", 1); + $this->blocks = array( + 'head' => array($this, 'block_head'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d->enter($__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/exception.html.twig")); + + $__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062->enter($__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/exception.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d->leave($__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d_prof); + + + $__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062->leave($__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062_prof); + + } + + // line 3 + public function block_head($context, array $blocks = array()) + { + $__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396->enter($__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216->enter($__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 4 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { + // line 5 + echo " + "; + } + // line 9 + echo " "; + $this->displayParentBlock("head", $context, $blocks); + echo " +"; + + $__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216->leave($__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216_prof); + + + $__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396->leave($__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396_prof); + + } + + // line 12 + public function block_menu($context, array $blocks = array()) + { + $__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0->enter($__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71->enter($__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 13 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) ? ("label-status-error") : ("disabled")); + echo "\"> + "; + // line 14 + echo twig_include($this->env, $context, "@WebProfiler/Icon/exception.svg"); + echo " + Exception + "; + // line 16 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { + // line 17 + echo " + 1 + + "; + } + // line 21 + echo " +"; + + $__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71->leave($__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71_prof); + + + $__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0->leave($__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0_prof); + + } + + // line 24 + public function block_panel($context, array $blocks = array()) + { + $__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541->enter($__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f->enter($__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 25 + echo "

    Exceptions

    + + "; + // line 27 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { + // line 28 + echo "
    +

    No exception was thrown and caught during the request.

    +
    + "; + } else { + // line 32 + echo "
    + "; + // line 33 + echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment($this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_exception", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))))); + echo " +
    + "; + } + + $__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f->leave($__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f_prof); + + + $__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541->leave($__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/exception.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 138 => 33, 135 => 32, 129 => 28, 127 => 27, 123 => 25, 114 => 24, 103 => 21, 97 => 17, 95 => 16, 90 => 14, 85 => 13, 76 => 12, 63 => 9, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block head %} + {% if collector.hasexception %} + + {% endif %} + {{ parent() }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/exception.svg') }} + Exception + {% if collector.hasexception %} + + 1 + + {% endif %} + +{% endblock %} + +{% block panel %} +

    Exceptions

    + + {% if not collector.hasexception %} +
    +

    No exception was thrown and caught during the request.

    +
    + {% else %} +
    + {{ render(path('_profiler_exception', { token: token })) }} +
    + {% endif %} +{% endblock %} +", "@WebProfiler/Collector/exception.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/exception.html.twig"); + } +} diff --git a/var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php b/var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php new file mode 100644 index 00000000..ddc988f3 --- /dev/null +++ b/var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php @@ -0,0 +1,120 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01->enter($__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces_text.html.twig")); + + $__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39->enter($__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces_text.html.twig")); + + // line 1 + echo "
    +

    + Stack Trace (Plain Text)  + "; + // line 4 + ob_start(); + // line 5 + echo " + \"-\" + \"+\" + + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 10 + echo "

    + +
    +
    ";
    +        // line 13
    +        $context['_parent'] = $context;
    +        $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "toarray", array()));
    +        foreach ($context['_seq'] as $context["i"] => $context["e"]) {
    +            // line 14
    +            echo "[";
    +            echo twig_escape_filter($this->env, ($context["i"] + 1), "html", null, true);
    +            echo "] ";
    +            echo twig_escape_filter($this->env, $this->getAttribute($context["e"], "class", array()), "html", null, true);
    +            echo ": ";
    +            echo twig_escape_filter($this->env, $this->getAttribute($context["e"], "message", array()), "html", null, true);
    +            echo "
    +";
    +            // line 15
    +            $this->loadTemplate("@Twig/Exception/traces.txt.twig", "@Twig/Exception/traces_text.html.twig", 15)->display(array("exception" => $context["e"]));
    +        }
    +        $_parent = $context['_parent'];
    +        unset($context['_seq'], $context['_iterated'], $context['i'], $context['e'], $context['_parent'], $context['loop']);
    +        $context = array_intersect_key($context, $_parent) + $_parent;
    +        // line 16
    +        echo "
    +
    +
    +"; + + $__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01->leave($__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01_prof); + + + $__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39->leave($__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/traces_text.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 63 => 16, 57 => 15, 48 => 14, 44 => 13, 39 => 10, 32 => 5, 30 => 4, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    +

    + Stack Trace (Plain Text)  + {% spaceless %} + + \"-\" + \"+\" + + {% endspaceless %} +

    + +
    +
    {% for i, e in exception.toarray %}
    +[{{ i + 1 }}] {{ e.class }}: {{ e.message }}
    +{% include '@Twig/Exception/traces.txt.twig' with { 'exception': e } only %}
    +{% endfor %}
    +
    +
    +", "@Twig/Exception/traces_text.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/traces_text.html.twig"); + } +} diff --git a/var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php b/var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php new file mode 100644 index 00000000..be6d4394 --- /dev/null +++ b/var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php @@ -0,0 +1,70 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad->enter($__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.svg")); + + $__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21->enter($__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.svg")); + + // line 1 + echo " + + + + + + +"; + + $__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad->leave($__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad_prof); + + + $__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21->leave($__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/exception.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + + +", "@Twig/Exception/exception.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception.svg"); + } +} diff --git a/var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php b/var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php new file mode 100644 index 00000000..650d9ecf --- /dev/null +++ b/var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php @@ -0,0 +1,62 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293->enter($__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/icon.svg")); + + $__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e->enter($__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/icon.svg")); + + // line 1 + echo " + + +"; + + $__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293->leave($__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293_prof); + + + $__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e->leave($__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e_prof); + + } + + public function getTemplateName() + { + return "@Security/Collector/icon.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@Security/Collector/icon.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views/Collector/icon.svg"); + } +} diff --git a/var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php b/var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php new file mode 100644 index 00000000..825b0669 --- /dev/null +++ b/var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php @@ -0,0 +1,91 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8->enter($__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.txt.twig")); + + $__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6->enter($__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.txt.twig")); + + // line 1 + if ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) { + // line 2 + echo " at "; + echo (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "class", array()) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "type", array())) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())); + echo "("; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatArgsAsText($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "args", array())); + echo ") +"; + } else { + // line 4 + echo " at n/a +"; + } + // line 6 + if (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "file", array(), "any", true, true) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "line", array(), "any", true, true))) { + // line 7 + echo " in "; + echo $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()); + echo " line "; + echo $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array()); + echo " +"; + } + + $__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8->leave($__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8_prof); + + + $__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6->leave($__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/trace.txt.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 41 => 7, 39 => 6, 35 => 4, 27 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% if trace.function %} + at {{ trace.class ~ trace.type ~ trace.function }}({{ trace.args|format_args_as_text }}) +{% else %} + at n/a +{% endif %} +{% if trace.file is defined and trace.line is defined %} + in {{ trace.file }} line {{ trace.line }} +{% endif %} +", "@Twig/Exception/trace.txt.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/trace.txt.twig"); + } +} diff --git a/var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php b/var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php new file mode 100644 index 00000000..b0e70459 --- /dev/null +++ b/var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php @@ -0,0 +1,832 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Swiftmailer/Collector/swiftmailer.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7->enter($__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Swiftmailer/Collector/swiftmailer.html.twig")); + + $__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847->enter($__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Swiftmailer/Collector/swiftmailer.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7->leave($__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7_prof); + + + $__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847->leave($__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc->enter($__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6->enter($__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 5 + echo " + "; + // line 6 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array())) { + // line 7 + echo " "; + ob_start(); + // line 8 + echo " "; + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 9 + echo " \"Swiftmailer\" + "; + // line 10 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " + "; + } else { + // line 12 + echo " "; + echo twig_include($this->env, $context, "@Swiftmailer/Collector/icon.svg"); + echo " + "; + // line 13 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " + "; + } + // line 15 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 16 + echo " + "; + // line 17 + ob_start(); + // line 18 + echo "
    + Sent messages + "; + // line 20 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " +
    + + "; + // line 23 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 24 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 25 + echo "
    + "; + // line 26 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo " + "; + // line 27 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); + echo " +
    +
    + Is spooled? + "; + // line 31 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("yes") : ("no")); + echo " +
    + + "; + // line 34 + if ( !$this->getAttribute($context["loop"], "first", array())) { + // line 35 + echo "
    + "; + } + // line 37 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 38 + echo " "; + } else { + // line 39 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 40 + echo "
    + "; + // line 41 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo " mailer + "; + // line 42 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "messageCount", array(0 => $context["name"]), "method", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "messageCount", array(0 => $context["name"]), "method"), 0)) : (0)), "html", null, true); + echo " +   ("; + // line 43 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); + echo ") +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 46 + echo " "; + } + // line 47 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 48 + echo " + "; + // line 49 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")))); + echo " + "; + } + + $__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6->leave($__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6_prof); + + + $__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc->leave($__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc_prof); + + } + + // line 53 + public function block_menu($context, array $blocks = array()) + { + $__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10->enter($__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862->enter($__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 54 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 55 + echo " + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array())) ? ("") : ("disabled")); + echo "\"> + "; + // line 57 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 58 + echo " \"Swiftmailer\" + "; + } else { + // line 60 + echo " "; + echo twig_include($this->env, $context, "@Swiftmailer/Collector/icon.svg"); + echo " + "; + } + // line 62 + echo " + E-Mails + "; + // line 64 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()) > 0)) { + // line 65 + echo " + "; + // line 66 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " + + "; + } + // line 69 + echo " +"; + + $__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862->leave($__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862_prof); + + + $__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10->leave($__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10_prof); + + } + + // line 72 + public function block_panel($context, array $blocks = array()) + { + $__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6->enter($__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313->enter($__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 73 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 74 + echo " + "; + // line 75 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 76 + echo " + "; + } + // line 86 + echo " +

    E-mails

    + + "; + // line 89 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())) { + // line 90 + echo "
    +

    No e-mail messages were sent.

    +
    + "; + } + // line 94 + echo " + "; + // line 95 + if ((((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1) || (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())) > 1))) { + // line 96 + echo " + + + + + + + + + + "; + // line 106 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 107 + echo " + + + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 114 + echo " +
    Mailer NameNum. of messagesMessages statusNotes
    "; + // line 108 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo ""; + // line 109 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); + echo ""; + // line 110 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); + echo ""; + // line 111 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isDefaultMailer", array(0 => $context["name"]), "method")) ? ("This is the default mailer") : ("")); + echo "
    + "; + } else { + // line 117 + echo "
    + "; + // line 118 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 119 + echo "
    + "; + // line 120 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); + echo " + "; + // line 121 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); + echo " "; + echo ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method") == 1)) ? ("message") : ("messages")); + echo " +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 124 + echo "
    + "; + } + // line 126 + echo " + "; + // line 127 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 128 + echo " "; + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())) > 1)) { + // line 129 + echo "

    + "; + // line 130 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo " mailer + "; + // line 131 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isDefaultMailer", array(0 => $context["name"]), "method")) ? ("(default app mailer)") : ("")); + echo " +

    + "; + } + // line 134 + echo " + "; + // line 135 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messages", array(0 => $context["name"]), "method")) { + // line 136 + echo "
    +

    No e-mail messages were sent.

    +
    + "; + } else { + // line 140 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messages", array(0 => $context["name"]), "method")); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["message"]) { + // line 141 + echo " "; + if (($this->getAttribute($context["loop"], "length", array()) > 1)) { + // line 142 + echo "

    E-mail #"; + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo " details

    + "; + } else { + // line 144 + echo "

    E-mail details

    + "; + } + // line 146 + echo " +
    +
    + Message headers +
    ";
    +                    // line 150
    +                    $context['_parent'] = $context;
    +                    $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($context["message"], "headers", array()), "all", array()));
    +                    foreach ($context['_seq'] as $context["_key"] => $context["header"]) {
    +                        // line 151
    +                        echo twig_escape_filter($this->env, $context["header"], "html", null, true);
    +                    }
    +                    $_parent = $context['_parent'];
    +                    unset($context['_seq'], $context['_iterated'], $context['_key'], $context['header'], $context['_parent'], $context['loop']);
    +                    $context = array_intersect_key($context, $_parent) + $_parent;
    +                    // line 152
    +                    echo "
    +
    + +
    + Message body +
    ";
    +                    // line 158
    +                    if (($this->getAttribute((isset($context["messagePart"]) ? $context["messagePart"] : null), "charset", array(), "any", true, true) && $this->getAttribute($context["message"], "charset", array()))) {
    +                        // line 159
    +                        echo twig_escape_filter($this->env, twig_convert_encoding($this->getAttribute($context["message"], "body", array()), "UTF-8", $this->getAttribute($context["message"], "charset", array())), "html", null, true);
    +                    } else {
    +                        // line 161
    +                        echo twig_escape_filter($this->env, $this->getAttribute($context["message"], "body", array()), "html", null, true);
    +                    }
    +                    // line 163
    +                    echo "
    +
    + + "; + // line 166 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["message"], "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["messagePart"]) { + if (twig_in_filter($this->getAttribute($context["messagePart"], "contentType", array()), array(0 => "text/plain", 1 => "text/html"))) { + // line 167 + echo "
    + Alternative part ("; + // line 168 + echo twig_escape_filter($this->env, $this->getAttribute($context["messagePart"], "contentType", array()), "html", null, true); + echo ") +
    ";
    +                            // line 170
    +                            if (($this->getAttribute($context["messagePart"], "charset", array(), "any", true, true) && $this->getAttribute($context["messagePart"], "charset", array()))) {
    +                                // line 171
    +                                echo twig_escape_filter($this->env, twig_convert_encoding($this->getAttribute($context["messagePart"], "body", array()), "UTF-8", $this->getAttribute($context["messagePart"], "charset", array())), "html", null, true);
    +                            } else {
    +                                // line 173
    +                                echo twig_escape_filter($this->env, $this->getAttribute($context["messagePart"], "body", array()), "html", null, true);
    +                            }
    +                            // line 175
    +                            echo "
    +
    + "; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['messagePart'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 178 + echo " + "; + // line 179 + $context["attachments"] = $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "extractAttachments", array(0 => $context["message"]), "method"); + // line 180 + echo " "; + if ((isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))) { + // line 181 + echo "
    + + "; + // line 183 + if ((twig_length_filter($this->env, (isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))) > 1)) { + // line 184 + echo " "; + echo twig_escape_filter($this->env, twig_length_filter($this->env, (isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))), "html", null, true); + echo " Attachments + "; + } else { + // line 186 + echo " 1 Attachment + "; + } + // line 188 + echo " + +
      + "; + // line 191 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))); + foreach ($context['_seq'] as $context["_key"] => $context["attachment"]) { + // line 192 + echo "
    1. + Filename: + "; + // line 194 + echo twig_escape_filter($this->env, $this->getAttribute($context["attachment"], "filename", array()), "html", null, true); + echo " +
    2. + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['attachment'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 197 + echo "
    +
    + "; + } + // line 200 + echo "
    + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['message'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 202 + echo " "; + } + // line 203 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313->leave($__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313_prof); + + + $__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6->leave($__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6_prof); + + } + + public function getTemplateName() + { + return "@Swiftmailer/Collector/swiftmailer.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 588 => 203, 585 => 202, 570 => 200, 565 => 197, 556 => 194, 552 => 192, 548 => 191, 543 => 188, 539 => 186, 533 => 184, 531 => 183, 527 => 181, 524 => 180, 522 => 179, 519 => 178, 510 => 175, 507 => 173, 504 => 171, 502 => 170, 498 => 168, 495 => 167, 490 => 166, 485 => 163, 482 => 161, 479 => 159, 477 => 158, 470 => 152, 464 => 151, 460 => 150, 454 => 146, 450 => 144, 444 => 142, 441 => 141, 423 => 140, 417 => 136, 415 => 135, 412 => 134, 406 => 131, 402 => 130, 399 => 129, 396 => 128, 392 => 127, 389 => 126, 385 => 124, 374 => 121, 370 => 120, 367 => 119, 363 => 118, 360 => 117, 355 => 114, 346 => 111, 342 => 110, 338 => 109, 334 => 108, 331 => 107, 327 => 106, 315 => 96, 313 => 95, 310 => 94, 304 => 90, 302 => 89, 297 => 86, 285 => 76, 283 => 75, 280 => 74, 277 => 73, 268 => 72, 257 => 69, 251 => 66, 248 => 65, 246 => 64, 242 => 62, 236 => 60, 232 => 58, 230 => 57, 226 => 56, 223 => 55, 220 => 54, 211 => 53, 198 => 49, 195 => 48, 192 => 47, 189 => 46, 180 => 43, 176 => 42, 172 => 41, 169 => 40, 164 => 39, 161 => 38, 147 => 37, 143 => 35, 141 => 34, 135 => 31, 128 => 27, 124 => 26, 121 => 25, 103 => 24, 101 => 23, 95 => 20, 91 => 18, 89 => 17, 86 => 16, 83 => 15, 78 => 13, 73 => 12, 68 => 10, 65 => 9, 62 => 8, 59 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if collector.messageCount %} + {% set icon %} + {% if profiler_markup_version == 1 %} + \"Swiftmailer\" + {{ collector.messageCount }} + {% else %} + {{ include('@Swiftmailer/Collector/icon.svg') }} + {{ collector.messageCount }} + {% endif %} + {% endset %} + + {% set text %} +
    + Sent messages + {{ collector.messageCount }} +
    + + {% if profiler_markup_version == 1 %} + {% for name in collector.mailers %} +
    + {{ name }} + {{ collector.messageCount(name) }} +
    +
    + Is spooled? + {{ collector.isSpool(name) ? 'yes' : 'no' }} +
    + + {% if not loop.first %} +
    + {% endif %} + {% endfor %} + {% else %} + {% for name in collector.mailers %} +
    + {{ name }} mailer + {{ collector.messageCount(name)|default(0) }} +   ({{ collector.isSpool(name) ? 'spooled' : 'sent' }}) +
    + {% endfor %} + {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { 'link': profiler_url }) }} + {% endif %} +{% endblock %} + +{% block menu %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + + {% if profiler_markup_version == 1 %} + \"Swiftmailer\" + {% else %} + {{ include('@Swiftmailer/Collector/icon.svg') }} + {% endif %} + + E-Mails + {% if collector.messageCount > 0 %} + + {{ collector.messageCount }} + + {% endif %} + +{% endblock %} + +{% block panel %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if profiler_markup_version == 1 %} + + {% endif %} + +

    E-mails

    + + {% if not collector.mailers %} +
    +

    No e-mail messages were sent.

    +
    + {% endif %} + + {% if profiler_markup_version == 1 or collector.mailers|length > 1 %} + + + + + + + + + + + {% for name in collector.mailers %} + + + + + + + {% endfor %} + +
    Mailer NameNum. of messagesMessages statusNotes
    {{ name }}{{ collector.messageCount(name) }}{{ collector.isSpool(name) ? 'spooled' : 'sent' }}{{ collector.isDefaultMailer(name) ? 'This is the default mailer' }}
    + {% else %} +
    + {% for name in collector.mailers %} +
    + {{ collector.messageCount(name) }} + {{ collector.isSpool(name) ? 'spooled' : 'sent' }} {{ collector.messageCount(name) == 1 ? 'message' : 'messages' }} +
    + {% endfor %} +
    + {% endif %} + + {% for name in collector.mailers %} + {% if collector.mailers|length > 1 %} +

    + {{ name }} mailer + {{ collector.isDefaultMailer(name) ? '(default app mailer)' }} +

    + {% endif %} + + {% if not collector.messages(name) %} +
    +

    No e-mail messages were sent.

    +
    + {% else %} + {% for message in collector.messages(name) %} + {% if loop.length > 1 %} +

    E-mail #{{ loop.index }} details

    + {% else %} +

    E-mail details

    + {% endif %} + +
    +
    + Message headers +
    {% for header in message.headers.all %}
    +                            {{- header -}}
    +                        {% endfor %}
    +
    + +
    + Message body +
    +                            {%- if messagePart.charset is defined and message.charset %}
    +                                {{- message.body|convert_encoding('UTF-8', message.charset) }}
    +                            {%- else %}
    +                                {{- message.body }}
    +                            {%- endif -%}
    +                        
    +
    + + {% for messagePart in message.children if messagePart.contentType in ['text/plain', 'text/html'] %} +
    + Alternative part ({{ messagePart.contentType }}) +
    +                                {%- if messagePart.charset is defined and messagePart.charset %}
    +                                    {{- messagePart.body|convert_encoding('UTF-8', messagePart.charset) }}
    +                                {%- else %}
    +                                    {{- messagePart.body }}
    +                                {%- endif -%}
    +                            
    +
    + {% endfor %} + + {% set attachments = collector.extractAttachments(message) %} + {% if attachments %} +
    + + {% if attachments|length > 1 %} + {{ attachments|length }} Attachments + {% else %} + 1 Attachment + {% endif %} + + +
      + {% for attachment in attachments %} +
    1. + Filename: + {{ attachment.filename }} +
    2. + {% endfor %} +
    +
    + {% endif %} +
    + {% endfor %} + {% endif %} + {% endfor %} +{% endblock %} +", "@Swiftmailer/Collector/swiftmailer.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views/Collector/swiftmailer.html.twig"); + } +} diff --git a/var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php b/var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php new file mode 100644 index 00000000..3e66742a --- /dev/null +++ b/var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php @@ -0,0 +1,853 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/config.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce->enter($__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/config.html.twig")); + + $__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792->enter($__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/config.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce->leave($__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce_prof); + + + $__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792->leave($__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8->enter($__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9->enter($__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + if (("unknown" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 5 + echo " "; + $context["block_status"] = ""; + // line 6 + echo " "; + $context["symfony_version_status"] = "Unable to retrieve information about the Symfony version."; + // line 7 + echo " "; + } elseif (("eol" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 8 + echo " "; + $context["block_status"] = "red"; + // line 9 + echo " "; + $context["symfony_version_status"] = "This Symfony version will no longer receive security fixes."; + // line 10 + echo " "; + } elseif (("eom" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 11 + echo " "; + $context["block_status"] = "yellow"; + // line 12 + echo " "; + $context["symfony_version_status"] = "This Symfony version will only receive security fixes."; + // line 13 + echo " "; + } elseif (("dev" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 14 + echo " "; + $context["block_status"] = "yellow"; + // line 15 + echo " "; + $context["symfony_version_status"] = "This Symfony version is still in the development phase."; + // line 16 + echo " "; + } else { + // line 17 + echo " "; + $context["block_status"] = ""; + // line 18 + echo " "; + $context["symfony_version_status"] = ""; + // line 19 + echo " "; + } + // line 20 + echo " + "; + // line 21 + ob_start(); + // line 22 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { + // line 23 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); + echo " + "; + // line 24 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); + echo " + "; + } elseif ($this->getAttribute( // line 25 +(isset($context["collector"]) ? $context["collector"] : null), "symfonyState", array(), "any", true, true)) { + // line 26 + echo " + "; + // line 27 + echo twig_include($this->env, $context, "@WebProfiler/Icon/symfony.svg"); + echo " + + "; + // line 29 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); + echo " + "; + } + // line 31 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 32 + echo " + "; + // line 33 + ob_start(); + // line 34 + echo "
    + "; + // line 35 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { + // line 36 + echo "
    + "; + // line 37 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); + echo " + "; + // line 38 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); + echo " +
    + "; + } + // line 41 + echo " +
    + Profiler token + + "; + // line 45 + if ((isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))) { + // line 46 + echo " env, (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()), "html", null, true); + echo " + "; + } else { + // line 48 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()), "html", null, true); + echo " + "; + } + // line 50 + echo " +
    + + "; + // line 53 + if ( !("n/a" === $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()))) { + // line 54 + echo "
    + Kernel name + "; + // line 56 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); + echo " +
    + "; + } + // line 59 + echo " + "; + // line 60 + if ( !("n/a" === $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()))) { + // line 61 + echo "
    + Environment + "; + // line 63 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); + echo " +
    + "; + } + // line 66 + echo " + "; + // line 67 + if ( !("n/a" === $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array()))) { + // line 68 + echo "
    + Debug + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("green") : ("red")); + echo "\">"; + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("enabled") : ("disabled")); + echo " +
    + "; + } + // line 73 + echo "
    + +
    +
    + PHP version + + "; + // line 79 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "phpversion", array()), "html", null, true); + echo " +   env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_phpinfo"); + echo "\">View phpinfo() + +
    + +
    + PHP Extensions + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxdebug", array())) ? ("green") : ("red")); + echo "\">xdebug + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasaccelerator", array())) ? ("green") : ("red")); + echo "\">accel +
    + +
    + PHP SAPI + "; + // line 92 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sapiName", array()), "html", null, true); + echo " +
    +
    + +
    + "; + // line 97 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "symfonyversion", array(), "any", true, true)) { + // line 98 + echo " + + "; + } + // line 121 + echo "
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 123 + echo " + "; + // line 124 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => true, "name" => "config", "status" => (isset($context["block_status"]) ? $context["block_status"] : $this->getContext($context, "block_status")), "additional_classes" => "sf-toolbar-block-right", "block_attrs" => (("title=\"" . (isset($context["symfony_version_status"]) ? $context["symfony_version_status"] : $this->getContext($context, "symfony_version_status"))) . "\""))); + echo " +"; + + $__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9->leave($__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9_prof); + + + $__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8->leave($__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8_prof); + + } + + // line 127 + public function block_menu($context, array $blocks = array()) + { + $__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130->enter($__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267->enter($__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 128 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()) == "eol")) ? ("red") : (((twig_in_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()), array(0 => "eom", 1 => "dev"))) ? ("yellow") : ("")))); + echo "\"> + "; + // line 129 + echo twig_include($this->env, $context, "@WebProfiler/Icon/config.svg"); + echo " + Configuration + +"; + + $__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267->leave($__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267_prof); + + + $__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130->leave($__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130_prof); + + } + + // line 134 + public function block_panel($context, array $blocks = array()) + { + $__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e->enter($__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4->enter($__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 135 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { + // line 136 + echo " "; + // line 137 + echo "

    Project Configuration

    + +
    +
    + "; + // line 141 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); + echo " + Application name +
    + +
    + "; + // line 146 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); + echo " + Application version +
    +
    + +

    + Based on Symfony "; + // line 152 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); + echo " +

    + "; + } else { + // line 155 + echo "

    Symfony Configuration

    + +
    +
    + "; + // line 159 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); + echo " + Symfony version +
    + + "; + // line 163 + if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()))) { + // line 164 + echo "
    + "; + // line 165 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); + echo " + Application name +
    + "; + } + // line 169 + echo " + "; + // line 170 + if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()))) { + // line 171 + echo "
    + "; + // line 172 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); + echo " + Environment +
    + "; + } + // line 176 + echo " + "; + // line 177 + if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array()))) { + // line 178 + echo "
    + "; + // line 179 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("enabled") : ("disabled")); + echo " + Debug +
    + "; + } + // line 183 + echo "
    + "; + } + // line 185 + echo " +

    PHP Configuration

    + +
    +
    + "; + // line 190 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "phpversion", array()), "html", null, true); + echo " + PHP version +
    + +
    + "; + // line 195 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasaccelerator", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + PHP acceleration +
    + +
    + "; + // line 200 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxdebug", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Xdebug +
    +
    + +
    +
    + "; + // line 207 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "haszendopcache", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + OPcache +
    + +
    + "; + // line 212 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasapc", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + APC +
    + +
    + "; + // line 217 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxcache", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + XCache +
    + +
    + "; + // line 222 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "haseaccelerator", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + EAccelerator +
    +
    + +

    + env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_phpinfo"); + echo "\">View full PHP configuration +

    + + "; + // line 231 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())) { + // line 232 + echo "

    Enabled Bundles ("; + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())), "html", null, true); + echo ")

    + + + + + + + + + "; + // line 241 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable(twig_sort_filter(twig_get_array_keys_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())))); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 242 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 247 + echo " +
    NamePath
    "; + // line 243 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo ""; + // line 244 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array()), $context["name"], array(), "array"), "html", null, true); + echo "
    + "; + } + + $__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4->leave($__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4_prof); + + + $__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e->leave($__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/config.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 564 => 247, 555 => 244, 551 => 243, 548 => 242, 544 => 241, 531 => 232, 529 => 231, 523 => 228, 514 => 222, 506 => 217, 498 => 212, 490 => 207, 480 => 200, 472 => 195, 464 => 190, 457 => 185, 453 => 183, 446 => 179, 443 => 178, 441 => 177, 438 => 176, 431 => 172, 428 => 171, 426 => 170, 423 => 169, 416 => 165, 413 => 164, 411 => 163, 404 => 159, 398 => 155, 392 => 152, 383 => 146, 375 => 141, 369 => 137, 367 => 136, 364 => 135, 355 => 134, 341 => 129, 336 => 128, 327 => 127, 315 => 124, 312 => 123, 308 => 121, 295 => 110, 289 => 107, 284 => 106, 278 => 102, 276 => 101, 271 => 98, 269 => 97, 261 => 92, 253 => 87, 249 => 86, 240 => 80, 236 => 79, 228 => 73, 220 => 70, 216 => 68, 214 => 67, 211 => 66, 205 => 63, 201 => 61, 199 => 60, 196 => 59, 190 => 56, 186 => 54, 184 => 53, 179 => 50, 173 => 48, 165 => 46, 163 => 45, 157 => 41, 151 => 38, 147 => 37, 144 => 36, 142 => 35, 139 => 34, 137 => 33, 134 => 32, 131 => 31, 126 => 29, 121 => 27, 118 => 26, 116 => 25, 112 => 24, 107 => 23, 104 => 22, 102 => 21, 99 => 20, 96 => 19, 93 => 18, 90 => 17, 87 => 16, 84 => 15, 81 => 14, 78 => 13, 75 => 12, 72 => 11, 69 => 10, 66 => 9, 63 => 8, 60 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% if 'unknown' == collector.symfonyState %} + {% set block_status = '' %} + {% set symfony_version_status = 'Unable to retrieve information about the Symfony version.' %} + {% elseif 'eol' == collector.symfonyState %} + {% set block_status = 'red' %} + {% set symfony_version_status = 'This Symfony version will no longer receive security fixes.' %} + {% elseif 'eom' == collector.symfonyState %} + {% set block_status = 'yellow' %} + {% set symfony_version_status = 'This Symfony version will only receive security fixes.' %} + {% elseif 'dev' == collector.symfonyState %} + {% set block_status = 'yellow' %} + {% set symfony_version_status = 'This Symfony version is still in the development phase.' %} + {% else %} + {% set block_status = '' %} + {% set symfony_version_status = '' %} + {% endif %} + + {% set icon %} + {% if collector.applicationname %} + {{ collector.applicationname }} + {{ collector.applicationversion }} + {% elseif collector.symfonyState is defined %} + + {{ include('@WebProfiler/Icon/symfony.svg') }} + + {{ collector.symfonyversion }} + {% endif %} + {% endset %} + + {% set text %} +
    + {% if collector.applicationname %} +
    + {{ collector.applicationname }} + {{ collector.applicationversion }} +
    + {% endif %} + +
    + Profiler token + + {% if profiler_url %} + {{ collector.token }} + {% else %} + {{ collector.token }} + {% endif %} + +
    + + {% if 'n/a' is not same as(collector.appname) %} +
    + Kernel name + {{ collector.appname }} +
    + {% endif %} + + {% if 'n/a' is not same as(collector.env) %} +
    + Environment + {{ collector.env }} +
    + {% endif %} + + {% if 'n/a' is not same as(collector.debug) %} +
    + Debug + {{ collector.debug ? 'enabled' : 'disabled' }} +
    + {% endif %} +
    + +
    +
    + PHP version + + {{ collector.phpversion }} +   View phpinfo() + +
    + +
    + PHP Extensions + xdebug + accel +
    + +
    + PHP SAPI + {{ collector.sapiName }} +
    +
    + +
    + {% if collector.symfonyversion is defined %} +
    + Resources + + {% if 'Silex' == collector.applicationname %} + + Read Silex Docs + + {% else %} + + Read Symfony {{ collector.symfonyversion }} Docs + + {% endif %} + +
    + + {% endif %} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: true, name: 'config', status: block_status, additional_classes: 'sf-toolbar-block-right', block_attrs: 'title=\"' ~ symfony_version_status ~ '\"' }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/config.svg') }} + Configuration + +{% endblock %} + +{% block panel %} + {% if collector.applicationname %} + {# this application is not the Symfony framework #} +

    Project Configuration

    + +
    +
    + {{ collector.applicationname }} + Application name +
    + +
    + {{ collector.applicationversion }} + Application version +
    +
    + +

    + Based on Symfony {{ collector.symfonyversion }} +

    + {% else %} +

    Symfony Configuration

    + +
    +
    + {{ collector.symfonyversion }} + Symfony version +
    + + {% if 'n/a' != collector.appname %} +
    + {{ collector.appname }} + Application name +
    + {% endif %} + + {% if 'n/a' != collector.env %} +
    + {{ collector.env }} + Environment +
    + {% endif %} + + {% if 'n/a' != collector.debug %} +
    + {{ collector.debug ? 'enabled' : 'disabled' }} + Debug +
    + {% endif %} +
    + {% endif %} + +

    PHP Configuration

    + +
    +
    + {{ collector.phpversion }} + PHP version +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasaccelerator ? 'yes' : 'no') ~ '.svg') }} + PHP acceleration +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasxdebug ? 'yes' : 'no') ~ '.svg') }} + Xdebug +
    +
    + +
    +
    + {{ include('@WebProfiler/Icon/' ~ (collector.haszendopcache ? 'yes' : 'no') ~ '.svg') }} + OPcache +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasapc ? 'yes' : 'no') ~ '.svg') }} + APC +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasxcache ? 'yes' : 'no') ~ '.svg') }} + XCache +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.haseaccelerator ? 'yes' : 'no') ~ '.svg') }} + EAccelerator +
    +
    + +

    + View full PHP configuration +

    + + {% if collector.bundles %} +

    Enabled Bundles ({{ collector.bundles|length }})

    + + + + + + + + + {% for name in collector.bundles|keys|sort %} + + + + + {% endfor %} + +
    NamePath
    {{ name }}{{ collector.bundles[name] }}
    + {% endif %} +{% endblock %} +", "@WebProfiler/Collector/config.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig"); + } +} diff --git a/var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php b/var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php new file mode 100644 index 00000000..0772ffc3 --- /dev/null +++ b/var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php @@ -0,0 +1,97 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e->enter($__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_item.html.twig")); + + $__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c->enter($__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_item.html.twig")); + + // line 1 + echo "
    env, (isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "html", null, true); + echo " sf-toolbar-status-"; + echo twig_escape_filter($this->env, ((array_key_exists("status", $context)) ? (_twig_default_filter((isset($context["status"]) ? $context["status"] : $this->getContext($context, "status")), "normal")) : ("normal")), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, ((array_key_exists("additional_classes", $context)) ? (_twig_default_filter((isset($context["additional_classes"]) ? $context["additional_classes"] : $this->getContext($context, "additional_classes")), "")) : ("")), "html", null, true); + echo "\" "; + echo ((array_key_exists("block_attrs", $context)) ? (_twig_default_filter((isset($context["block_attrs"]) ? $context["block_attrs"] : $this->getContext($context, "block_attrs")), "")) : ("")); + echo "> + "; + // line 2 + if (( !array_key_exists("link", $context) || (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")))) { + echo "env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => (isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")))), "html", null, true); + echo "\">"; + } + // line 3 + echo "
    "; + echo twig_escape_filter($this->env, ((array_key_exists("icon", $context)) ? (_twig_default_filter((isset($context["icon"]) ? $context["icon"] : $this->getContext($context, "icon")), "")) : ("")), "html", null, true); + echo "
    + "; + // line 4 + if (((array_key_exists("link", $context)) ? (_twig_default_filter((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), false)) : (false))) { + echo "
    "; + } + // line 5 + echo "
    "; + echo twig_escape_filter($this->env, ((array_key_exists("text", $context)) ? (_twig_default_filter((isset($context["text"]) ? $context["text"] : $this->getContext($context, "text")), "")) : ("")), "html", null, true); + echo "
    +
    +"; + + $__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e->leave($__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e_prof); + + + $__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c->leave($__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar_item.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 51 => 5, 47 => 4, 42 => 3, 36 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    + {% if link is not defined or link %}{% endif %} +
    {{ icon|default('') }}
    + {% if link|default(false) %}
    {% endif %} +
    {{ text|default('') }}
    +
    +", "@WebProfiler/Profiler/toolbar_item.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar_item.html.twig"); + } +} diff --git a/var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php b/var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php new file mode 100644 index 00000000..276198b9 --- /dev/null +++ b/var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php @@ -0,0 +1,405 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Debug/Profiler/dump.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8->enter($__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Debug/Profiler/dump.html.twig")); + + $__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce->enter($__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Debug/Profiler/dump.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8->leave($__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8_prof); + + + $__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce->leave($__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0->enter($__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e->enter($__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array())) { + // line 5 + echo " "; + ob_start(); + // line 6 + echo " "; + echo twig_include($this->env, $context, "@Debug/Profiler/icon.svg"); + echo " + "; + // line 7 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array()), "html", null, true); + echo " + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 9 + echo " + "; + // line 10 + ob_start(); + // line 11 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "getDumps", array(0 => "html"), "method")); + foreach ($context['_seq'] as $context["_key"] => $context["dump"]) { + // line 12 + echo "
    + + "; + // line 14 + if ($this->getAttribute($context["dump"], "file", array())) { + // line 15 + echo " "; + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); + // line 16 + echo " "; + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + // line 17 + echo " env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } else { + // line 19 + echo " env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 21 + echo " "; + } else { + // line 22 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 24 + echo " + line "; + // line 25 + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "line", array()), "html", null, true); + echo " + + "; + // line 27 + echo $this->getAttribute($context["dump"], "data", array()); + echo " +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['dump'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 30 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 31 + echo " + "; + // line 32 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => true)); + echo " + "; + } + + $__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e->leave($__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e_prof); + + + $__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0->leave($__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0_prof); + + } + + // line 36 + public function block_menu($context, array $blocks = array()) + { + $__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9->enter($__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d->enter($__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 37 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array()) == 0)) ? ("disabled") : ("")); + echo "\"> + "; + // line 38 + echo twig_include($this->env, $context, "@Debug/Profiler/icon.svg"); + echo " + Debug + +"; + + $__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d->leave($__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d_prof); + + + $__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9->leave($__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9_prof); + + } + + // line 43 + public function block_panel($context, array $blocks = array()) + { + $__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645->enter($__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d->enter($__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 44 + echo "

    Dumped Contents

    + + "; + // line 46 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "getDumps", array(0 => "html"), "method")); + $context['_iterated'] = false; + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["dump"]) { + // line 47 + echo "
    + In + "; + // line 49 + if ($this->getAttribute($context["dump"], "line", array())) { + // line 50 + echo " "; + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); + // line 51 + echo " "; + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + // line 52 + echo " env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } else { + // line 54 + echo " env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 56 + echo " "; + } else { + // line 57 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 59 + echo " line env, $this->getAttribute($context["loop"], "index0", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "line", array()), "html", null, true); + echo ": + + +
    env, $this->getAttribute($context["loop"], "index0", array()), "html", null, true); + echo "\"> +
    + "; + // line 64 + echo (($this->getAttribute($context["dump"], "fileExcerpt", array())) ? ($this->getAttribute($context["dump"], "fileExcerpt", array())) : ($this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->fileExcerpt($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())))); + echo " +
    +
    + + "; + // line 68 + echo $this->getAttribute($context["dump"], "data", array()); + echo " +
    + "; + $context['_iterated'] = true; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + if (!$context['_iterated']) { + // line 71 + echo "
    +

    No content was dumped.

    +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['dump'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d->leave($__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d_prof); + + + $__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645->leave($__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645_prof); + + } + + public function getTemplateName() + { + return "@Debug/Profiler/dump.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 287 => 71, 271 => 68, 264 => 64, 259 => 62, 250 => 59, 244 => 57, 241 => 56, 233 => 54, 223 => 52, 220 => 51, 217 => 50, 215 => 49, 211 => 47, 193 => 46, 189 => 44, 180 => 43, 166 => 38, 161 => 37, 152 => 36, 139 => 32, 136 => 31, 133 => 30, 124 => 27, 119 => 25, 116 => 24, 110 => 22, 107 => 21, 99 => 19, 89 => 17, 86 => 16, 83 => 15, 81 => 14, 77 => 12, 72 => 11, 70 => 10, 67 => 9, 62 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% if collector.dumpsCount %} + {% set icon %} + {{ include('@Debug/Profiler/icon.svg') }} + {{ collector.dumpsCount }} + {% endset %} + + {% set text %} + {% for dump in collector.getDumps('html') %} +
    + + {% if dump.file %} + {% set link = dump.file|file_link(dump.line) %} + {% if link %} + {{ dump.name }} + {% else %} + {{ dump.name }} + {% endif %} + {% else %} + {{ dump.name }} + {% endif %} + + line {{ dump.line }} + + {{ dump.data|raw }} +
    + {% endfor %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { 'link': true }) }} + {% endif %} +{% endblock %} + +{% block menu %} + + {{ include('@Debug/Profiler/icon.svg') }} + Debug + +{% endblock %} + +{% block panel %} +

    Dumped Contents

    + + {% for dump in collector.getDumps('html') %} +
    + In + {% if dump.line %} + {% set link = dump.file|file_link(dump.line) %} + {% if link %} + {{ dump.name }} + {% else %} + {{ dump.name }} + {% endif %} + {% else %} + {{ dump.name }} + {% endif %} + line {{ dump.line }}: + + +
    +
    + {{ dump.fileExcerpt ? dump.fileExcerpt|raw : dump.file|file_excerpt(dump.line) }} +
    +
    + + {{ dump.data|raw }} +
    + {% else %} +
    +

    No content was dumped.

    +
    + {% endfor %} +{% endblock %} +", "@Debug/Profiler/dump.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views/Profiler/dump.html.twig"); + } +} diff --git a/var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php b/var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php new file mode 100644 index 00000000..5f10f982 --- /dev/null +++ b/var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php @@ -0,0 +1,333 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba->enter($__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_js.html.twig")); + + $__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa->enter($__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_js.html.twig")); + + // line 1 + echo "
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-toolbar sf-display-none\">
    +"; + // line 2 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/base_js.html.twig"); + echo " +getContext($context, "csp_script_nonce"))) { + echo " nonce="; + echo twig_escape_filter($this->env, (isset($context["csp_script_nonce"]) ? $context["csp_script_nonce"] : $this->getContext($context, "csp_script_nonce")), "html", null, true); + } + echo ">/*getContext($context, "position")))) { + // line 6 + echo " var sfwdt = document.getElementById('sfwdt"; + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "'); + document.body.insertBefore( + document.body.removeChild(sfwdt), + document.body.firstChild + ); + "; + } + // line 12 + echo " + Sfjs.load( + 'sfwdt"; + // line 14 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "', + '"; + // line 15 + echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_wdt", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))), "html", null, true); + echo "', + function(xhr, el) { + + /* Evaluate embedded scripts inside the toolbar */ + var i, scripts = [].slice.call(el.querySelectorAll('script')); + + for (i = 0; i < scripts.length; ++i) { + eval(scripts[i].firstChild.nodeValue); + } + + el.style.display = -1 !== xhr.responseText.indexOf('sf-toolbarreset') ? 'block' : 'none'; + + if (el.style.display == 'none') { + return; + } + + if (Sfjs.getPreference('toolbar/displayState') == 'none') { + document.getElementById('sfToolbarMainContent-"; + // line 32 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + document.getElementById('sfToolbarClearer-"; + // line 33 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + document.getElementById('sfMiniToolbar-"; + // line 34 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + } else { + document.getElementById('sfToolbarMainContent-"; + // line 36 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + document.getElementById('sfToolbarClearer-"; + // line 37 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + document.getElementById('sfMiniToolbar-"; + // line 38 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + } + + Sfjs.renderAjaxRequests(); + + /* Handle toolbar-info position */ + var toolbarBlocks = [].slice.call(el.querySelectorAll('.sf-toolbar-block')); + for (i = 0; i < toolbarBlocks.length; ++i) { + toolbarBlocks[i].onmouseover = function () { + var toolbarInfo = this.querySelectorAll('.sf-toolbar-info')[0]; + var pageWidth = document.body.clientWidth; + var elementWidth = toolbarInfo.offsetWidth; + var leftValue = (elementWidth + this.offsetLeft) - pageWidth; + var rightValue = (elementWidth + (pageWidth - this.offsetLeft)) - pageWidth; + + /* Reset right and left value, useful on window resize */ + toolbarInfo.style.right = ''; + toolbarInfo.style.left = ''; + + if (elementWidth > pageWidth) { + toolbarInfo.style.left = 0; + } + else if (leftValue > 0 && rightValue > 0) { + toolbarInfo.style.right = (rightValue * -1) + 'px'; + } else if (leftValue < 0) { + toolbarInfo.style.left = 0; + } else { + toolbarInfo.style.right = '0px'; + } + }; + } + Sfjs.addEventListener(document.getElementById('sfToolbarHideButton-"; + // line 69 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "'), 'click', function (event) { + event.preventDefault(); + + var p = this.parentNode; + p.style.display = 'none'; + (p.previousElementSibling || p.previousSibling).style.display = 'none'; + document.getElementById('sfMiniToolbar-"; + // line 75 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + Sfjs.setPreference('toolbar/displayState', 'none'); + }); + Sfjs.addEventListener(document.getElementById('sfToolbarMiniToggler-"; + // line 78 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "'), 'click', function (event) { + event.preventDefault(); + + var elem = this.parentNode; + if (elem.style.display == 'none') { + document.getElementById('sfToolbarMainContent-"; + // line 83 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + document.getElementById('sfToolbarClearer-"; + // line 84 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + elem.style.display = 'block'; + } else { + document.getElementById('sfToolbarMainContent-"; + // line 87 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + document.getElementById('sfToolbarClearer-"; + // line 88 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + elem.style.display = 'none' + } + + Sfjs.setPreference('toolbar/displayState', 'block'); + }) + }, + function(xhr) { + if (xhr.status !== 0) { + confirm('An error occurred while loading the web debug toolbar (' + xhr.status + ': ' + xhr.statusText + ').\\n\\nDo you want to open the profiler?') && (window.location = '"; + // line 97 + echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))), "html", null, true); + echo "'); + } + }, + { maxTries: 5 } + ); + })(); +/*]]>*/ +"; + + $__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba->leave($__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba_prof); + + + $__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa->leave($__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar_js.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 186 => 97, 174 => 88, 170 => 87, 164 => 84, 160 => 83, 152 => 78, 146 => 75, 137 => 69, 103 => 38, 99 => 37, 95 => 36, 90 => 34, 86 => 33, 82 => 32, 62 => 15, 58 => 14, 54 => 12, 44 => 6, 42 => 5, 34 => 3, 30 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    +{{ include('@WebProfiler/Profiler/base_js.html.twig') }} +/* pageWidth) { + toolbarInfo.style.left = 0; + } + else if (leftValue > 0 && rightValue > 0) { + toolbarInfo.style.right = (rightValue * -1) + 'px'; + } else if (leftValue < 0) { + toolbarInfo.style.left = 0; + } else { + toolbarInfo.style.right = '0px'; + } + }; + } + Sfjs.addEventListener(document.getElementById('sfToolbarHideButton-{{ token }}'), 'click', function (event) { + event.preventDefault(); + + var p = this.parentNode; + p.style.display = 'none'; + (p.previousElementSibling || p.previousSibling).style.display = 'none'; + document.getElementById('sfMiniToolbar-{{ token }}').style.display = 'block'; + Sfjs.setPreference('toolbar/displayState', 'none'); + }); + Sfjs.addEventListener(document.getElementById('sfToolbarMiniToggler-{{ token }}'), 'click', function (event) { + event.preventDefault(); + + var elem = this.parentNode; + if (elem.style.display == 'none') { + document.getElementById('sfToolbarMainContent-{{ token }}').style.display = 'none'; + document.getElementById('sfToolbarClearer-{{ token }}').style.display = 'none'; + elem.style.display = 'block'; + } else { + document.getElementById('sfToolbarMainContent-{{ token }}').style.display = 'block'; + document.getElementById('sfToolbarClearer-{{ token }}').style.display = 'block'; + elem.style.display = 'none' + } + + Sfjs.setPreference('toolbar/displayState', 'block'); + }) + }, + function(xhr) { + if (xhr.status !== 0) { + confirm('An error occurred while loading the web debug toolbar (' + xhr.status + ': ' + xhr.statusText + ').\\n\\nDo you want to open the profiler?') && (window.location = '{{ path(\"_profiler\", { \"token\": token }) }}'); + } + }, + { maxTries: 5 } + ); + })(); +/*]]>*/ +", "@WebProfiler/Profiler/toolbar_js.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar_js.html.twig"); + } +} diff --git a/var/cache/test/annotations.map b/var/cache/test/annotations.map new file mode 100644 index 00000000..ebe5ef70 --- /dev/null +++ b/var/cache/test/annotations.map @@ -0,0 +1,3 @@ + 'Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller', +); \ No newline at end of file diff --git a/var/cache/test/appTestDebugProjectContainer.php b/var/cache/test/appTestDebugProjectContainer.php new file mode 100644 index 00000000..88d49e1e --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainer.php @@ -0,0 +1,4330 @@ +targetDirs[$i] = $dir = dirname($dir); + } + $this->parameters = $this->getDefaultParameters(); + + $this->services = array(); + $this->methodMap = array( + 'annotation_reader' => 'getAnnotationReaderService', + 'annotations.reader' => 'getAnnotations_ReaderService', + 'assets.context' => 'getAssets_ContextService', + 'assets.packages' => 'getAssets_PackagesService', + 'cache.annotations' => 'getCache_AnnotationsService', + 'cache.app' => 'getCache_AppService', + 'cache.default_clearer' => 'getCache_DefaultClearerService', + 'cache.system' => 'getCache_SystemService', + 'cache_clearer' => 'getCacheClearerService', + 'cache_warmer' => 'getCacheWarmerService', + 'config_cache_factory' => 'getConfigCacheFactoryService', + 'controller_name_converter' => 'getControllerNameConverterService', + 'data_collector.dump' => 'getDataCollector_DumpService', + 'data_collector.form' => 'getDataCollector_FormService', + 'data_collector.form.extractor' => 'getDataCollector_Form_ExtractorService', + 'data_collector.request' => 'getDataCollector_RequestService', + 'data_collector.router' => 'getDataCollector_RouterService', + 'debug.argument_resolver' => 'getDebug_ArgumentResolverService', + 'debug.controller_resolver' => 'getDebug_ControllerResolverService', + 'debug.debug_handlers_listener' => 'getDebug_DebugHandlersListenerService', + 'debug.dump_listener' => 'getDebug_DumpListenerService', + 'debug.event_dispatcher' => 'getDebug_EventDispatcherService', + 'debug.file_link_formatter' => 'getDebug_FileLinkFormatterService', + 'debug.log_processor' => 'getDebug_LogProcessorService', + 'debug.security.access.decision_manager' => 'getDebug_Security_Access_DecisionManagerService', + 'debug.stopwatch' => 'getDebug_StopwatchService', + 'doctrine' => 'getDoctrineService', + 'doctrine.dbal.connection_factory' => 'getDoctrine_Dbal_ConnectionFactoryService', + 'doctrine.dbal.default_connection' => 'getDoctrine_Dbal_DefaultConnectionService', + 'doctrine.dbal.logger.profiling.default' => 'getDoctrine_Dbal_Logger_Profiling_DefaultService', + 'doctrine.orm.default_entity_listener_resolver' => 'getDoctrine_Orm_DefaultEntityListenerResolverService', + 'doctrine.orm.default_entity_manager' => 'getDoctrine_Orm_DefaultEntityManagerService', + 'doctrine.orm.default_entity_manager.property_info_extractor' => 'getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService', + 'doctrine.orm.default_listeners.attach_entity_listeners' => 'getDoctrine_Orm_DefaultListeners_AttachEntityListenersService', + 'doctrine.orm.default_manager_configurator' => 'getDoctrine_Orm_DefaultManagerConfiguratorService', + 'doctrine.orm.validator.unique' => 'getDoctrine_Orm_Validator_UniqueService', + 'doctrine.orm.validator_initializer' => 'getDoctrine_Orm_ValidatorInitializerService', + 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService', + 'doctrine_cache.providers.doctrine.orm.default_query_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService', + 'doctrine_cache.providers.doctrine.orm.default_result_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService', + 'file_locator' => 'getFileLocatorService', + 'filesystem' => 'getFilesystemService', + 'form.factory' => 'getForm_FactoryService', + 'form.registry' => 'getForm_RegistryService', + 'form.resolved_type_factory' => 'getForm_ResolvedTypeFactoryService', + 'form.server_params' => 'getForm_ServerParamsService', + 'form.type.birthday' => 'getForm_Type_BirthdayService', + 'form.type.button' => 'getForm_Type_ButtonService', + 'form.type.checkbox' => 'getForm_Type_CheckboxService', + 'form.type.choice' => 'getForm_Type_ChoiceService', + 'form.type.collection' => 'getForm_Type_CollectionService', + 'form.type.country' => 'getForm_Type_CountryService', + 'form.type.currency' => 'getForm_Type_CurrencyService', + 'form.type.date' => 'getForm_Type_DateService', + 'form.type.datetime' => 'getForm_Type_DatetimeService', + 'form.type.email' => 'getForm_Type_EmailService', + 'form.type.entity' => 'getForm_Type_EntityService', + 'form.type.file' => 'getForm_Type_FileService', + 'form.type.form' => 'getForm_Type_FormService', + 'form.type.hidden' => 'getForm_Type_HiddenService', + 'form.type.integer' => 'getForm_Type_IntegerService', + 'form.type.language' => 'getForm_Type_LanguageService', + 'form.type.locale' => 'getForm_Type_LocaleService', + 'form.type.money' => 'getForm_Type_MoneyService', + 'form.type.number' => 'getForm_Type_NumberService', + 'form.type.password' => 'getForm_Type_PasswordService', + 'form.type.percent' => 'getForm_Type_PercentService', + 'form.type.radio' => 'getForm_Type_RadioService', + 'form.type.range' => 'getForm_Type_RangeService', + 'form.type.repeated' => 'getForm_Type_RepeatedService', + 'form.type.reset' => 'getForm_Type_ResetService', + 'form.type.search' => 'getForm_Type_SearchService', + 'form.type.submit' => 'getForm_Type_SubmitService', + 'form.type.text' => 'getForm_Type_TextService', + 'form.type.textarea' => 'getForm_Type_TextareaService', + 'form.type.time' => 'getForm_Type_TimeService', + 'form.type.timezone' => 'getForm_Type_TimezoneService', + 'form.type.url' => 'getForm_Type_UrlService', + 'form.type_extension.csrf' => 'getForm_TypeExtension_CsrfService', + 'form.type_extension.form.data_collector' => 'getForm_TypeExtension_Form_DataCollectorService', + 'form.type_extension.form.http_foundation' => 'getForm_TypeExtension_Form_HttpFoundationService', + 'form.type_extension.form.validator' => 'getForm_TypeExtension_Form_ValidatorService', + 'form.type_extension.repeated.validator' => 'getForm_TypeExtension_Repeated_ValidatorService', + 'form.type_extension.submit.validator' => 'getForm_TypeExtension_Submit_ValidatorService', + 'form.type_extension.upload.validator' => 'getForm_TypeExtension_Upload_ValidatorService', + 'form.type_guesser.doctrine' => 'getForm_TypeGuesser_DoctrineService', + 'form.type_guesser.validator' => 'getForm_TypeGuesser_ValidatorService', + 'fragment.handler' => 'getFragment_HandlerService', + 'fragment.listener' => 'getFragment_ListenerService', + 'fragment.renderer.esi' => 'getFragment_Renderer_EsiService', + 'fragment.renderer.hinclude' => 'getFragment_Renderer_HincludeService', + 'fragment.renderer.inline' => 'getFragment_Renderer_InlineService', + 'fragment.renderer.ssi' => 'getFragment_Renderer_SsiService', + 'http_kernel' => 'getHttpKernelService', + 'kernel' => 'getKernelService', + 'kernel.class_cache.cache_warmer' => 'getKernel_ClassCache_CacheWarmerService', + 'locale_listener' => 'getLocaleListenerService', + 'logger' => 'getLoggerService', + 'monolog.activation_strategy.not_found' => 'getMonolog_ActivationStrategy_NotFoundService', + 'monolog.handler.console' => 'getMonolog_Handler_ConsoleService', + 'monolog.handler.fingers_crossed.error_level_activation_strategy' => 'getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService', + 'monolog.handler.main' => 'getMonolog_Handler_MainService', + 'monolog.handler.null_internal' => 'getMonolog_Handler_NullInternalService', + 'monolog.logger.cache' => 'getMonolog_Logger_CacheService', + 'monolog.logger.doctrine' => 'getMonolog_Logger_DoctrineService', + 'monolog.logger.event' => 'getMonolog_Logger_EventService', + 'monolog.logger.php' => 'getMonolog_Logger_PhpService', + 'monolog.logger.profiler' => 'getMonolog_Logger_ProfilerService', + 'monolog.logger.request' => 'getMonolog_Logger_RequestService', + 'monolog.logger.router' => 'getMonolog_Logger_RouterService', + 'monolog.logger.security' => 'getMonolog_Logger_SecurityService', + 'monolog.logger.templating' => 'getMonolog_Logger_TemplatingService', + 'monolog.logger.translation' => 'getMonolog_Logger_TranslationService', + 'monolog.processor.psr_log_message' => 'getMonolog_Processor_PsrLogMessageService', + 'profiler' => 'getProfilerService', + 'profiler_listener' => 'getProfilerListenerService', + 'property_accessor' => 'getPropertyAccessorService', + 'request_stack' => 'getRequestStackService', + 'response_listener' => 'getResponseListenerService', + 'router' => 'getRouterService', + 'router.request_context' => 'getRouter_RequestContextService', + 'router_listener' => 'getRouterListenerService', + 'routing.loader' => 'getRouting_LoaderService', + 'security.authentication.guard_handler' => 'getSecurity_Authentication_GuardHandlerService', + 'security.authentication.manager' => 'getSecurity_Authentication_ManagerService', + 'security.authentication.trust_resolver' => 'getSecurity_Authentication_TrustResolverService', + 'security.authentication_utils' => 'getSecurity_AuthenticationUtilsService', + 'security.authorization_checker' => 'getSecurity_AuthorizationCheckerService', + 'security.csrf.token_manager' => 'getSecurity_Csrf_TokenManagerService', + 'security.encoder_factory' => 'getSecurity_EncoderFactoryService', + 'security.firewall' => 'getSecurity_FirewallService', + 'security.firewall.map' => 'getSecurity_Firewall_MapService', + 'security.firewall.map.context.dev' => 'getSecurity_Firewall_Map_Context_DevService', + 'security.firewall.map.context.main' => 'getSecurity_Firewall_Map_Context_MainService', + 'security.logout_url_generator' => 'getSecurity_LogoutUrlGeneratorService', + 'security.password_encoder' => 'getSecurity_PasswordEncoderService', + 'security.rememberme.response_listener' => 'getSecurity_Rememberme_ResponseListenerService', + 'security.role_hierarchy' => 'getSecurity_RoleHierarchyService', + 'security.token_storage' => 'getSecurity_TokenStorageService', + 'security.validator.user_password' => 'getSecurity_Validator_UserPasswordService', + 'sensio_distribution.security_checker' => 'getSensioDistribution_SecurityCheckerService', + 'sensio_distribution.security_checker.command' => 'getSensioDistribution_SecurityChecker_CommandService', + 'sensio_framework_extra.cache.listener' => 'getSensioFrameworkExtra_Cache_ListenerService', + 'sensio_framework_extra.controller.listener' => 'getSensioFrameworkExtra_Controller_ListenerService', + 'sensio_framework_extra.converter.datetime' => 'getSensioFrameworkExtra_Converter_DatetimeService', + 'sensio_framework_extra.converter.doctrine.orm' => 'getSensioFrameworkExtra_Converter_Doctrine_OrmService', + 'sensio_framework_extra.converter.listener' => 'getSensioFrameworkExtra_Converter_ListenerService', + 'sensio_framework_extra.converter.manager' => 'getSensioFrameworkExtra_Converter_ManagerService', + 'sensio_framework_extra.security.listener' => 'getSensioFrameworkExtra_Security_ListenerService', + 'sensio_framework_extra.view.guesser' => 'getSensioFrameworkExtra_View_GuesserService', + 'sensio_framework_extra.view.listener' => 'getSensioFrameworkExtra_View_ListenerService', + 'service_container' => 'getServiceContainerService', + 'session' => 'getSessionService', + 'session.handler' => 'getSession_HandlerService', + 'session.save_listener' => 'getSession_SaveListenerService', + 'session.storage.filesystem' => 'getSession_Storage_FilesystemService', + 'session.storage.metadata_bag' => 'getSession_Storage_MetadataBagService', + 'session.storage.native' => 'getSession_Storage_NativeService', + 'session.storage.php_bridge' => 'getSession_Storage_PhpBridgeService', + 'session_listener' => 'getSessionListenerService', + 'streamed_response_listener' => 'getStreamedResponseListenerService', + 'swiftmailer.email_sender.listener' => 'getSwiftmailer_EmailSender_ListenerService', + 'swiftmailer.mailer.default' => 'getSwiftmailer_Mailer_DefaultService', + 'swiftmailer.mailer.default.plugin.messagelogger' => 'getSwiftmailer_Mailer_Default_Plugin_MessageloggerService', + 'swiftmailer.mailer.default.spool' => 'getSwiftmailer_Mailer_Default_SpoolService', + 'swiftmailer.mailer.default.transport' => 'getSwiftmailer_Mailer_Default_TransportService', + 'swiftmailer.mailer.default.transport.eventdispatcher' => 'getSwiftmailer_Mailer_Default_Transport_EventdispatcherService', + 'swiftmailer.mailer.default.transport.real' => 'getSwiftmailer_Mailer_Default_Transport_RealService', + 'templating' => 'getTemplatingService', + 'templating.filename_parser' => 'getTemplating_FilenameParserService', + 'templating.helper.logout_url' => 'getTemplating_Helper_LogoutUrlService', + 'templating.helper.security' => 'getTemplating_Helper_SecurityService', + 'templating.loader' => 'getTemplating_LoaderService', + 'templating.locator' => 'getTemplating_LocatorService', + 'templating.name_parser' => 'getTemplating_NameParserService', + 'test.client' => 'getTest_ClientService', + 'test.client.cookiejar' => 'getTest_Client_CookiejarService', + 'test.client.history' => 'getTest_Client_HistoryService', + 'test.session.listener' => 'getTest_Session_ListenerService', + 'translation.dumper.csv' => 'getTranslation_Dumper_CsvService', + 'translation.dumper.ini' => 'getTranslation_Dumper_IniService', + 'translation.dumper.json' => 'getTranslation_Dumper_JsonService', + 'translation.dumper.mo' => 'getTranslation_Dumper_MoService', + 'translation.dumper.php' => 'getTranslation_Dumper_PhpService', + 'translation.dumper.po' => 'getTranslation_Dumper_PoService', + 'translation.dumper.qt' => 'getTranslation_Dumper_QtService', + 'translation.dumper.res' => 'getTranslation_Dumper_ResService', + 'translation.dumper.xliff' => 'getTranslation_Dumper_XliffService', + 'translation.dumper.yml' => 'getTranslation_Dumper_YmlService', + 'translation.extractor' => 'getTranslation_ExtractorService', + 'translation.extractor.php' => 'getTranslation_Extractor_PhpService', + 'translation.loader' => 'getTranslation_LoaderService', + 'translation.loader.csv' => 'getTranslation_Loader_CsvService', + 'translation.loader.dat' => 'getTranslation_Loader_DatService', + 'translation.loader.ini' => 'getTranslation_Loader_IniService', + 'translation.loader.json' => 'getTranslation_Loader_JsonService', + 'translation.loader.mo' => 'getTranslation_Loader_MoService', + 'translation.loader.php' => 'getTranslation_Loader_PhpService', + 'translation.loader.po' => 'getTranslation_Loader_PoService', + 'translation.loader.qt' => 'getTranslation_Loader_QtService', + 'translation.loader.res' => 'getTranslation_Loader_ResService', + 'translation.loader.xliff' => 'getTranslation_Loader_XliffService', + 'translation.loader.yml' => 'getTranslation_Loader_YmlService', + 'translation.writer' => 'getTranslation_WriterService', + 'translator' => 'getTranslatorService', + 'translator.default' => 'getTranslator_DefaultService', + 'translator.selector' => 'getTranslator_SelectorService', + 'translator_listener' => 'getTranslatorListenerService', + 'twig' => 'getTwigService', + 'twig.controller.exception' => 'getTwig_Controller_ExceptionService', + 'twig.controller.preview_error' => 'getTwig_Controller_PreviewErrorService', + 'twig.exception_listener' => 'getTwig_ExceptionListenerService', + 'twig.form.renderer' => 'getTwig_Form_RendererService', + 'twig.loader' => 'getTwig_LoaderService', + 'twig.profile' => 'getTwig_ProfileService', + 'twig.runtime.httpkernel' => 'getTwig_Runtime_HttpkernelService', + 'twig.translation.extractor' => 'getTwig_Translation_ExtractorService', + 'uri_signer' => 'getUriSignerService', + 'validate_request_listener' => 'getValidateRequestListenerService', + 'validator' => 'getValidatorService', + 'validator.builder' => 'getValidator_BuilderService', + 'validator.email' => 'getValidator_EmailService', + 'validator.expression' => 'getValidator_ExpressionService', + 'var_dumper.cli_dumper' => 'getVarDumper_CliDumperService', + 'var_dumper.cloner' => 'getVarDumper_ClonerService', + 'web_profiler.controller.exception' => 'getWebProfiler_Controller_ExceptionService', + 'web_profiler.controller.profiler' => 'getWebProfiler_Controller_ProfilerService', + 'web_profiler.controller.router' => 'getWebProfiler_Controller_RouterService', + ); + $this->privates = array( + 'annotations.reader' => true, + 'cache.annotations' => true, + 'controller_name_converter' => true, + 'debug.file_link_formatter' => true, + 'debug.log_processor' => true, + 'debug.security.access.decision_manager' => true, + 'doctrine.dbal.logger.profiling.default' => true, + 'form.server_params' => true, + 'monolog.processor.psr_log_message' => true, + 'router.request_context' => true, + 'security.authentication.manager' => true, + 'security.authentication.trust_resolver' => true, + 'security.firewall.map' => true, + 'security.logout_url_generator' => true, + 'security.role_hierarchy' => true, + 'session.storage.metadata_bag' => true, + 'swiftmailer.mailer.default.transport.eventdispatcher' => true, + 'templating.locator' => true, + 'translator.selector' => true, + ); + $this->aliases = array( + 'cache.app_clearer' => 'cache.default_clearer', + 'console.command.sensiolabs_security_command_securitycheckercommand' => 'sensio_distribution.security_checker.command', + 'database_connection' => 'doctrine.dbal.default_connection', + 'doctrine.orm.default_metadata_cache' => 'doctrine_cache.providers.doctrine.orm.default_metadata_cache', + 'doctrine.orm.default_query_cache' => 'doctrine_cache.providers.doctrine.orm.default_query_cache', + 'doctrine.orm.default_result_cache' => 'doctrine_cache.providers.doctrine.orm.default_result_cache', + 'doctrine.orm.entity_manager' => 'doctrine.orm.default_entity_manager', + 'event_dispatcher' => 'debug.event_dispatcher', + 'mailer' => 'swiftmailer.mailer.default', + 'session.storage' => 'session.storage.filesystem', + 'swiftmailer.mailer' => 'swiftmailer.mailer.default', + 'swiftmailer.plugin.messagelogger' => 'swiftmailer.mailer.default.plugin.messagelogger', + 'swiftmailer.spool' => 'swiftmailer.mailer.default.spool', + 'swiftmailer.transport' => 'swiftmailer.mailer.default.transport', + 'swiftmailer.transport.real' => 'swiftmailer.mailer.default.transport.real', + ); + } + + /** + * {@inheritdoc} + */ + public function compile() + { + throw new LogicException('You cannot compile a dumped frozen container.'); + } + + /** + * {@inheritdoc} + */ + public function isFrozen() + { + return true; + } + + /** + * Gets the 'annotation_reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Annotations\CachedReader A Doctrine\Common\Annotations\CachedReader instance + */ + protected function getAnnotationReaderService() + { + return $this->services['annotation_reader'] = new \Doctrine\Common\Annotations\CachedReader(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, new \Symfony\Component\Cache\DoctrineProvider(\Symfony\Component\Cache\Adapter\PhpArrayAdapter::create((__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'})), true); + } + + /** + * Gets the 'assets.context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Context\RequestStackContext A Symfony\Component\Asset\Context\RequestStackContext instance + */ + protected function getAssets_ContextService() + { + return $this->services['assets.context'] = new \Symfony\Component\Asset\Context\RequestStackContext($this->get('request_stack')); + } + + /** + * Gets the 'assets.packages' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Packages A Symfony\Component\Asset\Packages instance + */ + protected function getAssets_PackagesService() + { + return $this->services['assets.packages'] = new \Symfony\Component\Asset\Packages(new \Symfony\Component\Asset\PathPackage('', new \Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy(), $this->get('assets.context')), array()); + } + + /** + * Gets the 'cache.app' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\FilesystemAdapter A Symfony\Component\Cache\Adapter\FilesystemAdapter instance + */ + protected function getCache_AppService() + { + $this->services['cache.app'] = $instance = new \Symfony\Component\Cache\Adapter\FilesystemAdapter('0+VBWiRPDo', 0, (__DIR__.'/pools')); + + if ($this->has('monolog.logger.cache')) { + $instance->setLogger($this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + return $instance; + } + + /** + * Gets the 'cache.default_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer A Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer instance + */ + protected function getCache_DefaultClearerService() + { + $this->services['cache.default_clearer'] = $instance = new \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer(); + + $instance->addPool($this->get('cache.app')); + $instance->addPool($this->get('cache.system')); + $instance->addPool(${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'cache.system' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_SystemService() + { + return $this->services['cache.system'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('vCVYJJz-Tw', 0, '5lkHnNUKPaJsHkP2j3wMW+', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'cache_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer A Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer instance + */ + protected function getCacheClearerService() + { + return $this->services['cache_clearer'] = new \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer(array(0 => $this->get('cache.default_clearer'))); + } + + /** + * Gets the 'cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate A Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate instance + */ + protected function getCacheWarmerService() + { + $a = $this->get('kernel'); + $b = $this->get('templating.filename_parser'); + + $c = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder($a, $b, ($this->targetDirs[3].'/app/Resources')); + + return $this->services['cache_warmer'] = new \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate(array(0 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplatePathsCacheWarmer($c, ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}), 1 => $this->get('kernel.class_cache.cache_warmer'), 2 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer($this->get('translator')), 3 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer($this->get('validator.builder'), (__DIR__.'/validation.php'), \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('5TgWxoNxFc', 0, '5lkHnNUKPaJsHkP2j3wMW+', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE))), 4 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer($this->get('router')), 5 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\AnnotationsCacheWarmer(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, (__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}), 6 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheCacheWarmer($this, $c, array()), 7 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer($this->get('twig'), new \Symfony\Bundle\TwigBundle\TemplateIterator($a, ($this->targetDirs[3].'/app'), array())), 8 => new \Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer($this->get('doctrine')))); + } + + /** + * Gets the 'config_cache_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Config\ResourceCheckerConfigCacheFactory A Symfony\Component\Config\ResourceCheckerConfigCacheFactory instance + */ + protected function getConfigCacheFactoryService() + { + return $this->services['config_cache_factory'] = new \Symfony\Component\Config\ResourceCheckerConfigCacheFactory(array(0 => new \Symfony\Component\Config\Resource\SelfCheckingResourceChecker())); + } + + /** + * Gets the 'data_collector.dump' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector A Symfony\Component\HttpKernel\DataCollector\DumpDataCollector instance + */ + protected function getDataCollector_DumpService() + { + return $this->services['data_collector.dump'] = new \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector($this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, 'UTF-8', NULL, NULL); + } + + /** + * Gets the 'data_collector.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataCollector A Symfony\Component\Form\Extension\DataCollector\FormDataCollector instance + */ + protected function getDataCollector_FormService() + { + return $this->services['data_collector.form'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataCollector($this->get('data_collector.form.extractor'), false); + } + + /** + * Gets the 'data_collector.form.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor A Symfony\Component\Form\Extension\DataCollector\FormDataExtractor instance + */ + protected function getDataCollector_Form_ExtractorService() + { + return $this->services['data_collector.form.extractor'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor(); + } + + /** + * Gets the 'data_collector.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector instance + */ + protected function getDataCollector_RequestService() + { + return $this->services['data_collector.request'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector(); + } + + /** + * Gets the 'data_collector.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector instance + */ + protected function getDataCollector_RouterService() + { + return $this->services['data_collector.router'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector(); + } + + /** + * Gets the 'debug.argument_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver A Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver instance + */ + protected function getDebug_ArgumentResolverService() + { + return $this->services['debug.argument_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver(new \Symfony\Component\HttpKernel\Controller\ArgumentResolver(new \Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory(), array(0 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver(), 1 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver(), 2 => new \Symfony\Bundle\SecurityBundle\SecurityUserValueResolver($this->get('security.token_storage')), 3 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver(), 4 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver())), $this->get('debug.stopwatch')); + } + + /** + * Gets the 'debug.controller_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver A Symfony\Component\HttpKernel\Controller\TraceableControllerResolver instance + */ + protected function getDebug_ControllerResolverService() + { + return $this->services['debug.controller_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver(new \Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver($this, ${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)), $this->get('debug.stopwatch'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'debug.debug_handlers_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener A Symfony\Component\HttpKernel\EventListener\DebugHandlersListener instance + */ + protected function getDebug_DebugHandlersListenerService() + { + return $this->services['debug.debug_handlers_listener'] = new \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener(NULL, $this->get('monolog.logger.php', ContainerInterface::NULL_ON_INVALID_REFERENCE), -1, -1, true, ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, true); + } + + /** + * Gets the 'debug.dump_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DumpListener A Symfony\Component\HttpKernel\EventListener\DumpListener instance + */ + protected function getDebug_DumpListenerService() + { + return $this->services['debug.dump_listener'] = new \Symfony\Component\HttpKernel\EventListener\DumpListener($this->get('var_dumper.cloner'), $this->get('var_dumper.cli_dumper')); + } + + /** + * Gets the 'debug.event_dispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher A Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher instance + */ + protected function getDebug_EventDispatcherService() + { + $this->services['debug.event_dispatcher'] = $instance = new \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher(new \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher($this), $this->get('debug.stopwatch'), $this->get('monolog.logger.event', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->addListenerService('kernel.controller', array(0 => 'data_collector.router', 1 => 'onKernelController'), 0); + $instance->addSubscriberService('response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener'); + $instance->addSubscriberService('streamed_response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener'); + $instance->addSubscriberService('locale_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener'); + $instance->addSubscriberService('validate_request_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener'); + $instance->addSubscriberService('translator_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\TranslatorListener'); + $instance->addSubscriberService('test.session.listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\TestSessionListener'); + $instance->addSubscriberService('session_listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener'); + $instance->addSubscriberService('session.save_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\SaveSessionListener'); + $instance->addSubscriberService('fragment.listener', 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener'); + $instance->addSubscriberService('profiler_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener'); + $instance->addSubscriberService('data_collector.request', 'Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RequestDataCollector'); + $instance->addSubscriberService('debug.debug_handlers_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener'); + $instance->addSubscriberService('router_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener'); + $instance->addSubscriberService('security.firewall', 'Symfony\\Component\\Security\\Http\\Firewall'); + $instance->addSubscriberService('security.rememberme.response_listener', 'Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener'); + $instance->addSubscriberService('twig.exception_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ExceptionListener'); + $instance->addSubscriberService('monolog.handler.console', 'Symfony\\Bridge\\Monolog\\Handler\\ConsoleHandler'); + $instance->addSubscriberService('swiftmailer.email_sender.listener', 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener'); + $instance->addSubscriberService('sensio_framework_extra.controller.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener'); + $instance->addSubscriberService('sensio_framework_extra.converter.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener'); + $instance->addSubscriberService('sensio_framework_extra.view.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener'); + $instance->addSubscriberService('sensio_framework_extra.cache.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener'); + $instance->addSubscriberService('sensio_framework_extra.security.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener'); + $instance->addSubscriberService('debug.dump_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener'); + + return $instance; + } + + /** + * Gets the 'debug.stopwatch' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Stopwatch\Stopwatch A Symfony\Component\Stopwatch\Stopwatch instance + */ + protected function getDebug_StopwatchService() + { + return $this->services['debug.stopwatch'] = new \Symfony\Component\Stopwatch\Stopwatch(); + } + + /** + * Gets the 'doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Registry A Doctrine\Bundle\DoctrineBundle\Registry instance + */ + protected function getDoctrineService() + { + return $this->services['doctrine'] = new \Doctrine\Bundle\DoctrineBundle\Registry($this, array('default' => 'doctrine.dbal.default_connection'), array('default' => 'doctrine.orm.default_entity_manager'), 'default', 'default'); + } + + /** + * Gets the 'doctrine.dbal.connection_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ConnectionFactory A Doctrine\Bundle\DoctrineBundle\ConnectionFactory instance + */ + protected function getDoctrine_Dbal_ConnectionFactoryService() + { + return $this->services['doctrine.dbal.connection_factory'] = new \Doctrine\Bundle\DoctrineBundle\ConnectionFactory(array()); + } + + /** + * Gets the 'doctrine.dbal.default_connection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\DBAL\Connection A Doctrine\DBAL\Connection instance + */ + protected function getDoctrine_Dbal_DefaultConnectionService() + { + $a = new \Doctrine\DBAL\Logging\LoggerChain(); + $a->addLogger(new \Symfony\Bridge\Doctrine\Logger\DbalLogger($this->get('monolog.logger.doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $a->addLogger(${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $b = new \Doctrine\DBAL\Configuration(); + $b->setSQLLogger($a); + + $c = new \Symfony\Bridge\Doctrine\ContainerAwareEventManager($this); + $c->addEventListener(array(0 => 'loadClassMetadata'), $this->get('doctrine.orm.default_listeners.attach_entity_listeners')); + + return $this->services['doctrine.dbal.default_connection'] = $this->get('doctrine.dbal.connection_factory')->createConnection(array('driver' => 'pdo_mysql', 'host' => '127.0.0.1', 'port' => NULL, 'dbname' => 'symfony', 'user' => 'root', 'password' => NULL, 'charset' => 'UTF8', 'driverOptions' => array(), 'defaultTableOptions' => array()), $b, $c, array()); + } + + /** + * Gets the 'doctrine.orm.default_entity_listener_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver A Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver instance + */ + protected function getDoctrine_Orm_DefaultEntityListenerResolverService() + { + return $this->services['doctrine.orm.default_entity_listener_resolver'] = new \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver($this); + } + + /** + * Gets the 'doctrine.orm.default_entity_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @param bool $lazyLoad whether to try lazy-loading the service with a proxy + * + * @return \Doctrine\ORM\EntityManager A Doctrine\ORM\EntityManager instance + */ + protected function getDoctrine_Orm_DefaultEntityManagerService($lazyLoad = true) + { + $a = new \Doctrine\ORM\Configuration(); + $a->setEntityNamespaces(array()); + $a->setMetadataCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_metadata_cache')); + $a->setQueryCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_query_cache')); + $a->setResultCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_result_cache')); + $a->setMetadataDriverImpl(new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()); + $a->setProxyDir((__DIR__.'/doctrine/orm/Proxies')); + $a->setProxyNamespace('Proxies'); + $a->setAutoGenerateProxyClasses(true); + $a->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory'); + $a->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository'); + $a->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy()); + $a->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy()); + $a->setEntityListenerResolver($this->get('doctrine.orm.default_entity_listener_resolver')); + + $this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create($this->get('doctrine.dbal.default_connection'), $a); + + $this->get('doctrine.orm.default_manager_configurator')->configure($instance); + + return $instance; + } + + /** + * Gets the 'doctrine.orm.default_entity_manager.property_info_extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor A Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor instance + */ + protected function getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService() + { + return $this->services['doctrine.orm.default_entity_manager.property_info_extractor'] = new \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor($this->get('doctrine.orm.default_entity_manager')->getMetadataFactory()); + } + + /** + * Gets the 'doctrine.orm.default_listeners.attach_entity_listeners' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\ORM\Tools\AttachEntityListenersListener A Doctrine\ORM\Tools\AttachEntityListenersListener instance + */ + protected function getDoctrine_Orm_DefaultListeners_AttachEntityListenersService() + { + return $this->services['doctrine.orm.default_listeners.attach_entity_listeners'] = new \Doctrine\ORM\Tools\AttachEntityListenersListener(); + } + + /** + * Gets the 'doctrine.orm.default_manager_configurator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator A Doctrine\Bundle\DoctrineBundle\ManagerConfigurator instance + */ + protected function getDoctrine_Orm_DefaultManagerConfiguratorService() + { + return $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array()); + } + + /** + * Gets the 'doctrine.orm.validator.unique' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator A Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator instance + */ + protected function getDoctrine_Orm_Validator_UniqueService() + { + return $this->services['doctrine.orm.validator.unique'] = new \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator($this->get('doctrine')); + } + + /** + * Gets the 'doctrine.orm.validator_initializer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer A Symfony\Bridge\Doctrine\Validator\DoctrineInitializer instance + */ + protected function getDoctrine_Orm_ValidatorInitializerService() + { + return $this->services['doctrine.orm.validator_initializer'] = new \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer($this->get('doctrine')); + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_query_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_result_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80'); + + return $instance; + } + + /** + * Gets the 'file_locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Config\FileLocator A Symfony\Component\HttpKernel\Config\FileLocator instance + */ + protected function getFileLocatorService() + { + return $this->services['file_locator'] = new \Symfony\Component\HttpKernel\Config\FileLocator($this->get('kernel'), ($this->targetDirs[3].'/app/Resources')); + } + + /** + * Gets the 'filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Filesystem\Filesystem A Symfony\Component\Filesystem\Filesystem instance + */ + protected function getFilesystemService() + { + return $this->services['filesystem'] = new \Symfony\Component\Filesystem\Filesystem(); + } + + /** + * Gets the 'form.factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormFactory A Symfony\Component\Form\FormFactory instance + */ + protected function getForm_FactoryService() + { + return $this->services['form.factory'] = new \Symfony\Component\Form\FormFactory($this->get('form.registry'), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.registry' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormRegistry A Symfony\Component\Form\FormRegistry instance + */ + protected function getForm_RegistryService() + { + return $this->services['form.registry'] = new \Symfony\Component\Form\FormRegistry(array(0 => new \Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension($this, array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => 'form.type.form', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => 'form.type.choice', 'Symfony\\Bridge\\Doctrine\\Form\\Type\\EntityType' => 'form.type.entity'), array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => array(0 => 'form.type_extension.form.http_foundation', 1 => 'form.type_extension.form.validator', 2 => 'form.type_extension.upload.validator', 3 => 'form.type_extension.csrf', 4 => 'form.type_extension.form.data_collector'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => array(0 => 'form.type_extension.repeated.validator'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => array(0 => 'form.type_extension.submit.validator')), array(0 => 'form.type_guesser.validator', 1 => 'form.type_guesser.doctrine'))), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.resolved_type_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy A Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy instance + */ + protected function getForm_ResolvedTypeFactoryService() + { + return $this->services['form.resolved_type_factory'] = new \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy(new \Symfony\Component\Form\ResolvedFormTypeFactory(), $this->get('data_collector.form')); + } + + /** + * Gets the 'form.type.birthday' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\BirthdayType A Symfony\Component\Form\Extension\Core\Type\BirthdayType instance + * + * @deprecated The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_BirthdayService() + { + @trigger_error('The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.birthday'] = new \Symfony\Component\Form\Extension\Core\Type\BirthdayType(); + } + + /** + * Gets the 'form.type.button' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ButtonType A Symfony\Component\Form\Extension\Core\Type\ButtonType instance + * + * @deprecated The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ButtonService() + { + @trigger_error('The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.button'] = new \Symfony\Component\Form\Extension\Core\Type\ButtonType(); + } + + /** + * Gets the 'form.type.checkbox' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CheckboxType A Symfony\Component\Form\Extension\Core\Type\CheckboxType instance + * + * @deprecated The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CheckboxService() + { + @trigger_error('The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.checkbox'] = new \Symfony\Component\Form\Extension\Core\Type\CheckboxType(); + } + + /** + * Gets the 'form.type.choice' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ChoiceType A Symfony\Component\Form\Extension\Core\Type\ChoiceType instance + */ + protected function getForm_Type_ChoiceService() + { + return $this->services['form.type.choice'] = new \Symfony\Component\Form\Extension\Core\Type\ChoiceType(new \Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator(new \Symfony\Component\Form\ChoiceList\Factory\PropertyAccessDecorator(new \Symfony\Component\Form\ChoiceList\Factory\DefaultChoiceListFactory(), $this->get('property_accessor')))); + } + + /** + * Gets the 'form.type.collection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CollectionType A Symfony\Component\Form\Extension\Core\Type\CollectionType instance + * + * @deprecated The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CollectionService() + { + @trigger_error('The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.collection'] = new \Symfony\Component\Form\Extension\Core\Type\CollectionType(); + } + + /** + * Gets the 'form.type.country' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CountryType A Symfony\Component\Form\Extension\Core\Type\CountryType instance + * + * @deprecated The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CountryService() + { + @trigger_error('The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.country'] = new \Symfony\Component\Form\Extension\Core\Type\CountryType(); + } + + /** + * Gets the 'form.type.currency' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CurrencyType A Symfony\Component\Form\Extension\Core\Type\CurrencyType instance + * + * @deprecated The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CurrencyService() + { + @trigger_error('The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.currency'] = new \Symfony\Component\Form\Extension\Core\Type\CurrencyType(); + } + + /** + * Gets the 'form.type.date' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateType A Symfony\Component\Form\Extension\Core\Type\DateType instance + * + * @deprecated The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DateService() + { + @trigger_error('The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.date'] = new \Symfony\Component\Form\Extension\Core\Type\DateType(); + } + + /** + * Gets the 'form.type.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateTimeType A Symfony\Component\Form\Extension\Core\Type\DateTimeType instance + * + * @deprecated The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DatetimeService() + { + @trigger_error('The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.datetime'] = new \Symfony\Component\Form\Extension\Core\Type\DateTimeType(); + } + + /** + * Gets the 'form.type.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\EmailType A Symfony\Component\Form\Extension\Core\Type\EmailType instance + * + * @deprecated The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_EmailService() + { + @trigger_error('The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.email'] = new \Symfony\Component\Form\Extension\Core\Type\EmailType(); + } + + /** + * Gets the 'form.type.entity' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\Type\EntityType A Symfony\Bridge\Doctrine\Form\Type\EntityType instance + */ + protected function getForm_Type_EntityService() + { + return $this->services['form.type.entity'] = new \Symfony\Bridge\Doctrine\Form\Type\EntityType($this->get('doctrine')); + } + + /** + * Gets the 'form.type.file' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FileType A Symfony\Component\Form\Extension\Core\Type\FileType instance + * + * @deprecated The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_FileService() + { + @trigger_error('The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.file'] = new \Symfony\Component\Form\Extension\Core\Type\FileType(); + } + + /** + * Gets the 'form.type.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FormType A Symfony\Component\Form\Extension\Core\Type\FormType instance + */ + protected function getForm_Type_FormService() + { + return $this->services['form.type.form'] = new \Symfony\Component\Form\Extension\Core\Type\FormType($this->get('property_accessor')); + } + + /** + * Gets the 'form.type.hidden' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\HiddenType A Symfony\Component\Form\Extension\Core\Type\HiddenType instance + * + * @deprecated The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_HiddenService() + { + @trigger_error('The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.hidden'] = new \Symfony\Component\Form\Extension\Core\Type\HiddenType(); + } + + /** + * Gets the 'form.type.integer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\IntegerType A Symfony\Component\Form\Extension\Core\Type\IntegerType instance + * + * @deprecated The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_IntegerService() + { + @trigger_error('The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.integer'] = new \Symfony\Component\Form\Extension\Core\Type\IntegerType(); + } + + /** + * Gets the 'form.type.language' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LanguageType A Symfony\Component\Form\Extension\Core\Type\LanguageType instance + * + * @deprecated The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LanguageService() + { + @trigger_error('The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.language'] = new \Symfony\Component\Form\Extension\Core\Type\LanguageType(); + } + + /** + * Gets the 'form.type.locale' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LocaleType A Symfony\Component\Form\Extension\Core\Type\LocaleType instance + * + * @deprecated The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LocaleService() + { + @trigger_error('The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.locale'] = new \Symfony\Component\Form\Extension\Core\Type\LocaleType(); + } + + /** + * Gets the 'form.type.money' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\MoneyType A Symfony\Component\Form\Extension\Core\Type\MoneyType instance + * + * @deprecated The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_MoneyService() + { + @trigger_error('The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.money'] = new \Symfony\Component\Form\Extension\Core\Type\MoneyType(); + } + + /** + * Gets the 'form.type.number' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\NumberType A Symfony\Component\Form\Extension\Core\Type\NumberType instance + * + * @deprecated The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_NumberService() + { + @trigger_error('The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.number'] = new \Symfony\Component\Form\Extension\Core\Type\NumberType(); + } + + /** + * Gets the 'form.type.password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PasswordType A Symfony\Component\Form\Extension\Core\Type\PasswordType instance + * + * @deprecated The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PasswordService() + { + @trigger_error('The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.password'] = new \Symfony\Component\Form\Extension\Core\Type\PasswordType(); + } + + /** + * Gets the 'form.type.percent' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PercentType A Symfony\Component\Form\Extension\Core\Type\PercentType instance + * + * @deprecated The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PercentService() + { + @trigger_error('The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.percent'] = new \Symfony\Component\Form\Extension\Core\Type\PercentType(); + } + + /** + * Gets the 'form.type.radio' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RadioType A Symfony\Component\Form\Extension\Core\Type\RadioType instance + * + * @deprecated The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RadioService() + { + @trigger_error('The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.radio'] = new \Symfony\Component\Form\Extension\Core\Type\RadioType(); + } + + /** + * Gets the 'form.type.range' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RangeType A Symfony\Component\Form\Extension\Core\Type\RangeType instance + * + * @deprecated The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RangeService() + { + @trigger_error('The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.range'] = new \Symfony\Component\Form\Extension\Core\Type\RangeType(); + } + + /** + * Gets the 'form.type.repeated' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RepeatedType A Symfony\Component\Form\Extension\Core\Type\RepeatedType instance + * + * @deprecated The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RepeatedService() + { + @trigger_error('The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.repeated'] = new \Symfony\Component\Form\Extension\Core\Type\RepeatedType(); + } + + /** + * Gets the 'form.type.reset' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ResetType A Symfony\Component\Form\Extension\Core\Type\ResetType instance + * + * @deprecated The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ResetService() + { + @trigger_error('The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.reset'] = new \Symfony\Component\Form\Extension\Core\Type\ResetType(); + } + + /** + * Gets the 'form.type.search' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SearchType A Symfony\Component\Form\Extension\Core\Type\SearchType instance + * + * @deprecated The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SearchService() + { + @trigger_error('The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.search'] = new \Symfony\Component\Form\Extension\Core\Type\SearchType(); + } + + /** + * Gets the 'form.type.submit' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SubmitType A Symfony\Component\Form\Extension\Core\Type\SubmitType instance + * + * @deprecated The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SubmitService() + { + @trigger_error('The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.submit'] = new \Symfony\Component\Form\Extension\Core\Type\SubmitType(); + } + + /** + * Gets the 'form.type.text' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextType A Symfony\Component\Form\Extension\Core\Type\TextType instance + * + * @deprecated The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextService() + { + @trigger_error('The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.text'] = new \Symfony\Component\Form\Extension\Core\Type\TextType(); + } + + /** + * Gets the 'form.type.textarea' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextareaType A Symfony\Component\Form\Extension\Core\Type\TextareaType instance + * + * @deprecated The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextareaService() + { + @trigger_error('The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.textarea'] = new \Symfony\Component\Form\Extension\Core\Type\TextareaType(); + } + + /** + * Gets the 'form.type.time' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimeType A Symfony\Component\Form\Extension\Core\Type\TimeType instance + * + * @deprecated The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimeService() + { + @trigger_error('The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.time'] = new \Symfony\Component\Form\Extension\Core\Type\TimeType(); + } + + /** + * Gets the 'form.type.timezone' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimezoneType A Symfony\Component\Form\Extension\Core\Type\TimezoneType instance + * + * @deprecated The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimezoneService() + { + @trigger_error('The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.timezone'] = new \Symfony\Component\Form\Extension\Core\Type\TimezoneType(); + } + + /** + * Gets the 'form.type.url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\UrlType A Symfony\Component\Form\Extension\Core\Type\UrlType instance + * + * @deprecated The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_UrlService() + { + @trigger_error('The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.url'] = new \Symfony\Component\Form\Extension\Core\Type\UrlType(); + } + + /** + * Gets the 'form.type_extension.csrf' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension A Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension instance + */ + protected function getForm_TypeExtension_CsrfService() + { + return $this->services['form.type_extension.csrf'] = new \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension($this->get('security.csrf.token_manager'), true, '_token', $this->get('translator.default'), 'validators', ${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'}); + } + + /** + * Gets the 'form.type_extension.form.data_collector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension A Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension instance + */ + protected function getForm_TypeExtension_Form_DataCollectorService() + { + return $this->services['form.type_extension.form.data_collector'] = new \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension($this->get('data_collector.form')); + } + + /** + * Gets the 'form.type_extension.form.http_foundation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension A Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension instance + */ + protected function getForm_TypeExtension_Form_HttpFoundationService() + { + return $this->services['form.type_extension.form.http_foundation'] = new \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension(new \Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler(${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'})); + } + + /** + * Gets the 'form.type_extension.form.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Form_ValidatorService() + { + return $this->services['form.type_extension.form.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension($this->get('validator')); + } + + /** + * Gets the 'form.type_extension.repeated.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Repeated_ValidatorService() + { + return $this->services['form.type_extension.repeated.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.submit.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Submit_ValidatorService() + { + return $this->services['form.type_extension.submit.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.upload.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension instance + */ + protected function getForm_TypeExtension_Upload_ValidatorService() + { + return $this->services['form.type_extension.upload.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension($this->get('translator'), 'validators'); + } + + /** + * Gets the 'form.type_guesser.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser A Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser instance + */ + protected function getForm_TypeGuesser_DoctrineService() + { + return $this->services['form.type_guesser.doctrine'] = new \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser($this->get('doctrine')); + } + + /** + * Gets the 'form.type_guesser.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser A Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser instance + */ + protected function getForm_TypeGuesser_ValidatorService() + { + return $this->services['form.type_guesser.validator'] = new \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser($this->get('validator')); + } + + /** + * Gets the 'fragment.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler A Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler instance + */ + protected function getFragment_HandlerService() + { + $this->services['fragment.handler'] = $instance = new \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler($this, $this->get('request_stack'), true); + + $instance->addRendererService('inline', 'fragment.renderer.inline'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('esi', 'fragment.renderer.esi'); + $instance->addRendererService('ssi', 'fragment.renderer.ssi'); + + return $instance; + } + + /** + * Gets the 'fragment.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\FragmentListener A Symfony\Component\HttpKernel\EventListener\FragmentListener instance + */ + protected function getFragment_ListenerService() + { + return $this->services['fragment.listener'] = new \Symfony\Component\HttpKernel\EventListener\FragmentListener($this->get('uri_signer'), '/_fragment'); + } + + /** + * Gets the 'fragment.renderer.esi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer instance + */ + protected function getFragment_Renderer_EsiService() + { + $this->services['fragment.renderer.esi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.hinclude' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer A Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer instance + */ + protected function getFragment_Renderer_HincludeService() + { + $this->services['fragment.renderer.hinclude'] = $instance = new \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer($this->get('twig'), $this->get('uri_signer'), NULL); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.inline' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer A Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer instance + */ + protected function getFragment_Renderer_InlineService() + { + $this->services['fragment.renderer.inline'] = $instance = new \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer($this->get('http_kernel'), $this->get('debug.event_dispatcher')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.ssi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer instance + */ + protected function getFragment_Renderer_SsiService() + { + $this->services['fragment.renderer.ssi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'http_kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\HttpKernel A Symfony\Component\HttpKernel\HttpKernel instance + */ + protected function getHttpKernelService() + { + return $this->services['http_kernel'] = new \Symfony\Component\HttpKernel\HttpKernel($this->get('debug.event_dispatcher'), $this->get('debug.controller_resolver'), $this->get('request_stack'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getKernelService() + { + throw new RuntimeException('You have requested a synthetic service ("kernel"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'kernel.class_cache.cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer A Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer instance + */ + protected function getKernel_ClassCache_CacheWarmerService() + { + return $this->services['kernel.class_cache.cache_warmer'] = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer(array(0 => 'Symfony\\Component\\HttpFoundation\\ParameterBag', 1 => 'Symfony\\Component\\HttpFoundation\\HeaderBag', 2 => 'Symfony\\Component\\HttpFoundation\\FileBag', 3 => 'Symfony\\Component\\HttpFoundation\\ServerBag', 4 => 'Symfony\\Component\\HttpFoundation\\Request', 5 => 'Symfony\\Component\\HttpKernel\\Kernel', 6 => 'Symfony\\Component\\ClassLoader\\ClassCollectionLoader', 7 => 'Symfony\\Component\\ClassLoader\\ApcClassLoader')); + } + + /** + * Gets the 'locale_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\LocaleListener A Symfony\Component\HttpKernel\EventListener\LocaleListener instance + */ + protected function getLocaleListenerService() + { + return $this->services['locale_listener'] = new \Symfony\Component\HttpKernel\EventListener\LocaleListener($this->get('request_stack'), 'en', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'logger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getLoggerService() + { + $this->services['logger'] = $instance = new \Symfony\Bridge\Monolog\Logger('app'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->useMicrosecondTimestamps(true); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.activation_strategy.not_found' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy A Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy instance + */ + protected function getMonolog_ActivationStrategy_NotFoundService() + { + return $this->services['monolog.activation_strategy.not_found'] = new \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.console' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\ConsoleHandler A Symfony\Bridge\Monolog\Handler\ConsoleHandler instance + */ + protected function getMonolog_Handler_ConsoleService() + { + $this->services['monolog.handler.console'] = $instance = new \Symfony\Bridge\Monolog\Handler\ConsoleHandler(NULL, true, array()); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.fingers_crossed.error_level_activation_strategy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy A Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy instance + */ + protected function getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService() + { + return $this->services['monolog.handler.fingers_crossed.error_level_activation_strategy'] = new \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\StreamHandler A Monolog\Handler\StreamHandler instance + */ + protected function getMonolog_Handler_MainService() + { + $this->services['monolog.handler.main'] = $instance = new \Monolog\Handler\StreamHandler(($this->targetDirs[2].'/logs/test.log'), 100, true, NULL); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.null_internal' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\NullHandler A Monolog\Handler\NullHandler instance + */ + protected function getMonolog_Handler_NullInternalService() + { + return $this->services['monolog.handler.null_internal'] = new \Monolog\Handler\NullHandler(); + } + + /** + * Gets the 'monolog.logger.cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_CacheService() + { + $this->services['monolog.logger.cache'] = $instance = new \Symfony\Bridge\Monolog\Logger('cache'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_DoctrineService() + { + $this->services['monolog.logger.doctrine'] = $instance = new \Symfony\Bridge\Monolog\Logger('doctrine'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.event' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_EventService() + { + $this->services['monolog.logger.event'] = $instance = new \Symfony\Bridge\Monolog\Logger('event'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.null_internal')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_PhpService() + { + $this->services['monolog.logger.php'] = $instance = new \Symfony\Bridge\Monolog\Logger('php'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_ProfilerService() + { + $this->services['monolog.logger.profiler'] = $instance = new \Symfony\Bridge\Monolog\Logger('profiler'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RequestService() + { + $this->services['monolog.logger.request'] = $instance = new \Symfony\Bridge\Monolog\Logger('request'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RouterService() + { + $this->services['monolog.logger.router'] = $instance = new \Symfony\Bridge\Monolog\Logger('router'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_SecurityService() + { + $this->services['monolog.logger.security'] = $instance = new \Symfony\Bridge\Monolog\Logger('security'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TemplatingService() + { + $this->services['monolog.logger.templating'] = $instance = new \Symfony\Bridge\Monolog\Logger('templating'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.translation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TranslationService() + { + $this->services['monolog.logger.translation'] = $instance = new \Symfony\Bridge\Monolog\Logger('translation'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Profiler\Profiler A Symfony\Component\HttpKernel\Profiler\Profiler instance + */ + protected function getProfilerService() + { + $a = $this->get('monolog.logger.profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $c = new \Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector($this->get('doctrine')); + $c->addLogger('default', ${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $d = new \Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector(); + if ($this->has('kernel')) { + $d->setKernel($b); + } + + $this->services['profiler'] = $instance = new \Symfony\Component\HttpKernel\Profiler\Profiler(new \Symfony\Component\HttpKernel\Profiler\FileProfilerStorage(('file:'.__DIR__.'/profiler')), $a); + + $instance->disable(); + $instance->add($this->get('data_collector.request')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\TimeDataCollector($b, $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\AjaxDataCollector()); + $instance->add($this->get('data_collector.form')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector($a)); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\EventDataCollector($this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add($this->get('data_collector.router')); + $instance->add(new \Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, ${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, ${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'})); + $instance->add(new \Symfony\Bridge\Twig\DataCollector\TwigDataCollector($this->get('twig.profile'))); + $instance->add($c); + $instance->add(new \Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector($this)); + $instance->add($this->get('data_collector.dump')); + $instance->add($d); + + return $instance; + } + + /** + * Gets the 'profiler_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ProfilerListener A Symfony\Component\HttpKernel\EventListener\ProfilerListener instance + */ + protected function getProfilerListenerService() + { + return $this->services['profiler_listener'] = new \Symfony\Component\HttpKernel\EventListener\ProfilerListener($this->get('profiler'), $this->get('request_stack'), NULL, false, false); + } + + /** + * Gets the 'property_accessor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\PropertyAccess\PropertyAccessor A Symfony\Component\PropertyAccess\PropertyAccessor instance + */ + protected function getPropertyAccessorService() + { + return $this->services['property_accessor'] = new \Symfony\Component\PropertyAccess\PropertyAccessor(false, false, new \Symfony\Component\Cache\Adapter\ArrayAdapter(0, false)); + } + + /** + * Gets the 'request_stack' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\RequestStack A Symfony\Component\HttpFoundation\RequestStack instance + */ + protected function getRequestStackService() + { + return $this->services['request_stack'] = new \Symfony\Component\HttpFoundation\RequestStack(); + } + + /** + * Gets the 'response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ResponseListener A Symfony\Component\HttpKernel\EventListener\ResponseListener instance + */ + protected function getResponseListenerService() + { + return $this->services['response_listener'] = new \Symfony\Component\HttpKernel\EventListener\ResponseListener('UTF-8'); + } + + /** + * Gets the 'router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\Router A Symfony\Bundle\FrameworkBundle\Routing\Router instance + */ + protected function getRouterService() + { + $this->services['router'] = $instance = new \Symfony\Bundle\FrameworkBundle\Routing\Router($this, ($this->targetDirs[3].'/app/config/routing_dev.yml'), array('cache_dir' => __DIR__, 'debug' => true, 'generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', 'generator_cache_class' => 'appTestDebugProjectContainerUrlGenerator', 'matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', 'matcher_cache_class' => 'appTestDebugProjectContainerUrlMatcher', 'strict_requirements' => true), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'router_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\RouterListener A Symfony\Component\HttpKernel\EventListener\RouterListener instance + */ + protected function getRouterListenerService() + { + return $this->services['router_listener'] = new \Symfony\Component\HttpKernel\EventListener\RouterListener($this->get('router'), $this->get('request_stack'), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'routing.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader A Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader instance + */ + protected function getRouting_LoaderService() + { + $a = $this->get('file_locator'); + $b = $this->get('annotation_reader'); + + $c = new \Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader($b); + + $d = new \Symfony\Component\Config\Loader\LoaderResolver(); + $d->addLoader(new \Symfony\Component\Routing\Loader\XmlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\YamlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\PhpFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DirectoryLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader($this)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationDirectoryLoader($a, $c)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationFileLoader($a, $c)); + $d->addLoader($c); + + return $this->services['routing.loader'] = new \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader(${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $d); + } + + /** + * Gets the 'security.authentication.guard_handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Guard\GuardAuthenticatorHandler A Symfony\Component\Security\Guard\GuardAuthenticatorHandler instance + */ + protected function getSecurity_Authentication_GuardHandlerService() + { + return $this->services['security.authentication.guard_handler'] = new \Symfony\Component\Security\Guard\GuardAuthenticatorHandler($this->get('security.token_storage'), $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.authentication_utils' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Authentication\AuthenticationUtils A Symfony\Component\Security\Http\Authentication\AuthenticationUtils instance + */ + protected function getSecurity_AuthenticationUtilsService() + { + return $this->services['security.authentication_utils'] = new \Symfony\Component\Security\Http\Authentication\AuthenticationUtils($this->get('request_stack')); + } + + /** + * Gets the 'security.authorization_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authorization\AuthorizationChecker A Symfony\Component\Security\Core\Authorization\AuthorizationChecker instance + */ + protected function getSecurity_AuthorizationCheckerService() + { + return $this->services['security.authorization_checker'] = new \Symfony\Component\Security\Core\Authorization\AuthorizationChecker($this->get('security.token_storage'), ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, false); + } + + /** + * Gets the 'security.csrf.token_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Csrf\CsrfTokenManager A Symfony\Component\Security\Csrf\CsrfTokenManager instance + */ + protected function getSecurity_Csrf_TokenManagerService() + { + return $this->services['security.csrf.token_manager'] = new \Symfony\Component\Security\Csrf\CsrfTokenManager(new \Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator(), new \Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage($this->get('session'))); + } + + /** + * Gets the 'security.encoder_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\EncoderFactory A Symfony\Component\Security\Core\Encoder\EncoderFactory instance + */ + protected function getSecurity_EncoderFactoryService() + { + return $this->services['security.encoder_factory'] = new \Symfony\Component\Security\Core\Encoder\EncoderFactory(array()); + } + + /** + * Gets the 'security.firewall' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Firewall A Symfony\Component\Security\Http\Firewall instance + */ + protected function getSecurity_FirewallService() + { + return $this->services['security.firewall'] = new \Symfony\Component\Security\Http\Firewall(${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'}, $this->get('debug.event_dispatcher')); + } + + /** + * Gets the 'security.firewall.map.context.dev' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_DevService() + { + return $this->services['security.firewall.map.context.dev'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(), NULL, new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('dev', 'security.user_checker', 'security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d', false, '', '', '', '', '', '', array())); + } + + /** + * Gets the 'security.firewall.map.context.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_MainService() + { + $a = $this->get('monolog.logger.security', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('security.token_storage'); + $c = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + $d = ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}; + $e = $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $f = new \Symfony\Component\Security\Http\AccessMap(); + + return $this->services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($f, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE), $c), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '58c46f5d35aaf5.09366842', $a, $d), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, $f, $d)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $c, new \Symfony\Component\Security\Http\HttpUtils($e, $e), 'main', NULL, NULL, NULL, $a, false), new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('main', 'security.user_checker', NULL, true, false, 'security.user.provider.concrete.in_memory', 'main', NULL, NULL, NULL, array(0 => 'anonymous'))); + } + + /** + * Gets the 'security.password_encoder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder A Symfony\Component\Security\Core\Encoder\UserPasswordEncoder instance + */ + protected function getSecurity_PasswordEncoderService() + { + return $this->services['security.password_encoder'] = new \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder($this->get('security.encoder_factory')); + } + + /** + * Gets the 'security.rememberme.response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\RememberMe\ResponseListener A Symfony\Component\Security\Http\RememberMe\ResponseListener instance + */ + protected function getSecurity_Rememberme_ResponseListenerService() + { + return $this->services['security.rememberme.response_listener'] = new \Symfony\Component\Security\Http\RememberMe\ResponseListener(); + } + + /** + * Gets the 'security.token_storage' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage A Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage instance + */ + protected function getSecurity_TokenStorageService() + { + return $this->services['security.token_storage'] = new \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage(); + } + + /** + * Gets the 'security.validator.user_password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator A Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator instance + */ + protected function getSecurity_Validator_UserPasswordService() + { + return $this->services['security.validator.user_password'] = new \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator($this->get('security.token_storage'), $this->get('security.encoder_factory')); + } + + /** + * Gets the 'sensio_distribution.security_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\SecurityChecker A SensioLabs\Security\SecurityChecker instance + */ + protected function getSensioDistribution_SecurityCheckerService() + { + return $this->services['sensio_distribution.security_checker'] = new \SensioLabs\Security\SecurityChecker(); + } + + /** + * Gets the 'sensio_distribution.security_checker.command' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\Command\SecurityCheckerCommand A SensioLabs\Security\Command\SecurityCheckerCommand instance + */ + protected function getSensioDistribution_SecurityChecker_CommandService() + { + return $this->services['sensio_distribution.security_checker.command'] = new \SensioLabs\Security\Command\SecurityCheckerCommand($this->get('sensio_distribution.security_checker')); + } + + /** + * Gets the 'sensio_framework_extra.cache.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener instance + */ + protected function getSensioFrameworkExtra_Cache_ListenerService() + { + return $this->services['sensio_framework_extra.cache.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener(); + } + + /** + * Gets the 'sensio_framework_extra.controller.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener instance + */ + protected function getSensioFrameworkExtra_Controller_ListenerService() + { + return $this->services['sensio_framework_extra.controller.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener($this->get('annotation_reader')); + } + + /** + * Gets the 'sensio_framework_extra.converter.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_DatetimeService() + { + return $this->services['sensio_framework_extra.converter.datetime'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter(); + } + + /** + * Gets the 'sensio_framework_extra.converter.doctrine.orm' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_Doctrine_OrmService() + { + return $this->services['sensio_framework_extra.converter.doctrine.orm'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter($this->get('doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.converter.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener instance + */ + protected function getSensioFrameworkExtra_Converter_ListenerService() + { + return $this->services['sensio_framework_extra.converter.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener($this->get('sensio_framework_extra.converter.manager'), true); + } + + /** + * Gets the 'sensio_framework_extra.converter.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager instance + */ + protected function getSensioFrameworkExtra_Converter_ManagerService() + { + $this->services['sensio_framework_extra.converter.manager'] = $instance = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager(); + + $instance->add($this->get('sensio_framework_extra.converter.doctrine.orm'), 0, 'doctrine.orm'); + $instance->add($this->get('sensio_framework_extra.converter.datetime'), 0, 'datetime'); + + return $instance; + } + + /** + * Gets the 'sensio_framework_extra.security.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener instance + */ + protected function getSensioFrameworkExtra_Security_ListenerService() + { + return $this->services['sensio_framework_extra.security.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener(NULL, new \Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage(), ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.view.guesser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser A Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser instance + */ + protected function getSensioFrameworkExtra_View_GuesserService() + { + return $this->services['sensio_framework_extra.view.guesser'] = new \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser($this->get('kernel')); + } + + /** + * Gets the 'sensio_framework_extra.view.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener instance + */ + protected function getSensioFrameworkExtra_View_ListenerService() + { + return $this->services['sensio_framework_extra.view.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener($this); + } + + /** + * Gets the 'service_container' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getServiceContainerService() + { + throw new RuntimeException('You have requested a synthetic service ("service_container"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'session' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Session A Symfony\Component\HttpFoundation\Session\Session instance + */ + protected function getSessionService() + { + return $this->services['session'] = new \Symfony\Component\HttpFoundation\Session\Session($this->get('session.storage.filesystem'), new \Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag(), new \Symfony\Component\HttpFoundation\Session\Flash\FlashBag()); + } + + /** + * Gets the 'session.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler A Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler instance + */ + protected function getSession_HandlerService() + { + return $this->services['session.handler'] = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler(($this->targetDirs[3].'/app/../var/sessions/test')); + } + + /** + * Gets the 'session.save_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\SaveSessionListener A Symfony\Component\HttpKernel\EventListener\SaveSessionListener instance + */ + protected function getSession_SaveListenerService() + { + return $this->services['session.save_listener'] = new \Symfony\Component\HttpKernel\EventListener\SaveSessionListener(); + } + + /** + * Gets the 'session.storage.filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage instance + */ + protected function getSession_Storage_FilesystemService() + { + return $this->services['session.storage.filesystem'] = new \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage((__DIR__.'/sessions'), 'MOCKSESSID', ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.native' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage instance + */ + protected function getSession_Storage_NativeService() + { + return $this->services['session.storage.native'] = new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage(array('cookie_httponly' => true, 'gc_probability' => 1), $this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.php_bridge' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage instance + */ + protected function getSession_Storage_PhpBridgeService() + { + return $this->services['session.storage.php_bridge'] = new \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage($this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener A Symfony\Bundle\FrameworkBundle\EventListener\SessionListener instance + */ + protected function getSessionListenerService() + { + return $this->services['session_listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener($this); + } + + /** + * Gets the 'streamed_response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener A Symfony\Component\HttpKernel\EventListener\StreamedResponseListener instance + */ + protected function getStreamedResponseListenerService() + { + return $this->services['streamed_response_listener'] = new \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener(); + } + + /** + * Gets the 'swiftmailer.email_sender.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener A Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener instance + */ + protected function getSwiftmailer_EmailSender_ListenerService() + { + return $this->services['swiftmailer.email_sender.listener'] = new \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener($this, $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'swiftmailer.mailer.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Mailer A Swift_Mailer instance + */ + protected function getSwiftmailer_Mailer_DefaultService() + { + return $this->services['swiftmailer.mailer.default'] = new \Swift_Mailer($this->get('swiftmailer.mailer.default.transport')); + } + + /** + * Gets the 'swiftmailer.mailer.default.plugin.messagelogger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Plugins_MessageLogger A Swift_Plugins_MessageLogger instance + */ + protected function getSwiftmailer_Mailer_Default_Plugin_MessageloggerService() + { + return $this->services['swiftmailer.mailer.default.plugin.messagelogger'] = new \Swift_Plugins_MessageLogger(); + } + + /** + * Gets the 'swiftmailer.mailer.default.spool' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_MemorySpool A Swift_MemorySpool instance + */ + protected function getSwiftmailer_Mailer_Default_SpoolService() + { + return $this->services['swiftmailer.mailer.default.spool'] = new \Swift_MemorySpool(); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_SpoolTransport A Swift_Transport_SpoolTransport instance + */ + protected function getSwiftmailer_Mailer_Default_TransportService() + { + $this->services['swiftmailer.mailer.default.transport'] = $instance = new \Swift_Transport_SpoolTransport(${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}, $this->get('swiftmailer.mailer.default.spool')); + + $instance->registerPlugin($this->get('swiftmailer.mailer.default.plugin.messagelogger')); + + return $instance; + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.real' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_NullTransport A Swift_Transport_NullTransport instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_RealService() + { + return $this->services['swiftmailer.mailer.default.transport.real'] = new \Swift_Transport_NullTransport(${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}); + } + + /** + * Gets the 'templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\TwigEngine A Symfony\Bundle\TwigBundle\TwigEngine instance + */ + protected function getTemplatingService() + { + return $this->services['templating'] = new \Symfony\Bundle\TwigBundle\TwigEngine($this->get('twig'), $this->get('templating.name_parser'), ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.filename_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser instance + */ + protected function getTemplating_FilenameParserService() + { + return $this->services['templating.filename_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser(); + } + + /** + * Gets the 'templating.helper.logout_url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper instance + */ + protected function getTemplating_Helper_LogoutUrlService() + { + return $this->services['templating.helper.logout_url'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.helper.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper instance + */ + protected function getTemplating_Helper_SecurityService() + { + return $this->services['templating.helper.security'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'templating.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader A Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader instance + */ + protected function getTemplating_LoaderService() + { + return $this->services['templating.loader'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.name_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser instance + */ + protected function getTemplating_NameParserService() + { + return $this->services['templating.name_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser($this->get('kernel')); + } + + /** + * Gets the 'test.client' service. + * + * @return \Symfony\Bundle\FrameworkBundle\Client A Symfony\Bundle\FrameworkBundle\Client instance + */ + protected function getTest_ClientService() + { + return new \Symfony\Bundle\FrameworkBundle\Client($this->get('kernel'), array(), new \Symfony\Component\BrowserKit\History(), new \Symfony\Component\BrowserKit\CookieJar()); + } + + /** + * Gets the 'test.client.cookiejar' service. + * + * @return \Symfony\Component\BrowserKit\CookieJar A Symfony\Component\BrowserKit\CookieJar instance + */ + protected function getTest_Client_CookiejarService() + { + return new \Symfony\Component\BrowserKit\CookieJar(); + } + + /** + * Gets the 'test.client.history' service. + * + * @return \Symfony\Component\BrowserKit\History A Symfony\Component\BrowserKit\History instance + */ + protected function getTest_Client_HistoryService() + { + return new \Symfony\Component\BrowserKit\History(); + } + + /** + * Gets the 'test.session.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener A Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener instance + */ + protected function getTest_Session_ListenerService() + { + return $this->services['test.session.listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener($this); + } + + /** + * Gets the 'translation.dumper.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\CsvFileDumper A Symfony\Component\Translation\Dumper\CsvFileDumper instance + */ + protected function getTranslation_Dumper_CsvService() + { + return $this->services['translation.dumper.csv'] = new \Symfony\Component\Translation\Dumper\CsvFileDumper(); + } + + /** + * Gets the 'translation.dumper.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IniFileDumper A Symfony\Component\Translation\Dumper\IniFileDumper instance + */ + protected function getTranslation_Dumper_IniService() + { + return $this->services['translation.dumper.ini'] = new \Symfony\Component\Translation\Dumper\IniFileDumper(); + } + + /** + * Gets the 'translation.dumper.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\JsonFileDumper A Symfony\Component\Translation\Dumper\JsonFileDumper instance + */ + protected function getTranslation_Dumper_JsonService() + { + return $this->services['translation.dumper.json'] = new \Symfony\Component\Translation\Dumper\JsonFileDumper(); + } + + /** + * Gets the 'translation.dumper.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\MoFileDumper A Symfony\Component\Translation\Dumper\MoFileDumper instance + */ + protected function getTranslation_Dumper_MoService() + { + return $this->services['translation.dumper.mo'] = new \Symfony\Component\Translation\Dumper\MoFileDumper(); + } + + /** + * Gets the 'translation.dumper.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PhpFileDumper A Symfony\Component\Translation\Dumper\PhpFileDumper instance + */ + protected function getTranslation_Dumper_PhpService() + { + return $this->services['translation.dumper.php'] = new \Symfony\Component\Translation\Dumper\PhpFileDumper(); + } + + /** + * Gets the 'translation.dumper.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PoFileDumper A Symfony\Component\Translation\Dumper\PoFileDumper instance + */ + protected function getTranslation_Dumper_PoService() + { + return $this->services['translation.dumper.po'] = new \Symfony\Component\Translation\Dumper\PoFileDumper(); + } + + /** + * Gets the 'translation.dumper.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\QtFileDumper A Symfony\Component\Translation\Dumper\QtFileDumper instance + */ + protected function getTranslation_Dumper_QtService() + { + return $this->services['translation.dumper.qt'] = new \Symfony\Component\Translation\Dumper\QtFileDumper(); + } + + /** + * Gets the 'translation.dumper.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IcuResFileDumper A Symfony\Component\Translation\Dumper\IcuResFileDumper instance + */ + protected function getTranslation_Dumper_ResService() + { + return $this->services['translation.dumper.res'] = new \Symfony\Component\Translation\Dumper\IcuResFileDumper(); + } + + /** + * Gets the 'translation.dumper.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\XliffFileDumper A Symfony\Component\Translation\Dumper\XliffFileDumper instance + */ + protected function getTranslation_Dumper_XliffService() + { + return $this->services['translation.dumper.xliff'] = new \Symfony\Component\Translation\Dumper\XliffFileDumper(); + } + + /** + * Gets the 'translation.dumper.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\YamlFileDumper A Symfony\Component\Translation\Dumper\YamlFileDumper instance + */ + protected function getTranslation_Dumper_YmlService() + { + return $this->services['translation.dumper.yml'] = new \Symfony\Component\Translation\Dumper\YamlFileDumper(); + } + + /** + * Gets the 'translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Extractor\ChainExtractor A Symfony\Component\Translation\Extractor\ChainExtractor instance + */ + protected function getTranslation_ExtractorService() + { + $this->services['translation.extractor'] = $instance = new \Symfony\Component\Translation\Extractor\ChainExtractor(); + + $instance->addExtractor('php', $this->get('translation.extractor.php')); + $instance->addExtractor('twig', $this->get('twig.translation.extractor')); + + return $instance; + } + + /** + * Gets the 'translation.extractor.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor A Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor instance + */ + protected function getTranslation_Extractor_PhpService() + { + return $this->services['translation.extractor.php'] = new \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor(); + } + + /** + * Gets the 'translation.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader A Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader instance + */ + protected function getTranslation_LoaderService() + { + $a = $this->get('translation.loader.xliff'); + + $this->services['translation.loader'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader(); + + $instance->addLoader('php', $this->get('translation.loader.php')); + $instance->addLoader('yml', $this->get('translation.loader.yml')); + $instance->addLoader('xlf', $a); + $instance->addLoader('xliff', $a); + $instance->addLoader('po', $this->get('translation.loader.po')); + $instance->addLoader('mo', $this->get('translation.loader.mo')); + $instance->addLoader('ts', $this->get('translation.loader.qt')); + $instance->addLoader('csv', $this->get('translation.loader.csv')); + $instance->addLoader('res', $this->get('translation.loader.res')); + $instance->addLoader('dat', $this->get('translation.loader.dat')); + $instance->addLoader('ini', $this->get('translation.loader.ini')); + $instance->addLoader('json', $this->get('translation.loader.json')); + + return $instance; + } + + /** + * Gets the 'translation.loader.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\CsvFileLoader A Symfony\Component\Translation\Loader\CsvFileLoader instance + */ + protected function getTranslation_Loader_CsvService() + { + return $this->services['translation.loader.csv'] = new \Symfony\Component\Translation\Loader\CsvFileLoader(); + } + + /** + * Gets the 'translation.loader.dat' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuDatFileLoader A Symfony\Component\Translation\Loader\IcuDatFileLoader instance + */ + protected function getTranslation_Loader_DatService() + { + return $this->services['translation.loader.dat'] = new \Symfony\Component\Translation\Loader\IcuDatFileLoader(); + } + + /** + * Gets the 'translation.loader.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IniFileLoader A Symfony\Component\Translation\Loader\IniFileLoader instance + */ + protected function getTranslation_Loader_IniService() + { + return $this->services['translation.loader.ini'] = new \Symfony\Component\Translation\Loader\IniFileLoader(); + } + + /** + * Gets the 'translation.loader.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\JsonFileLoader A Symfony\Component\Translation\Loader\JsonFileLoader instance + */ + protected function getTranslation_Loader_JsonService() + { + return $this->services['translation.loader.json'] = new \Symfony\Component\Translation\Loader\JsonFileLoader(); + } + + /** + * Gets the 'translation.loader.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\MoFileLoader A Symfony\Component\Translation\Loader\MoFileLoader instance + */ + protected function getTranslation_Loader_MoService() + { + return $this->services['translation.loader.mo'] = new \Symfony\Component\Translation\Loader\MoFileLoader(); + } + + /** + * Gets the 'translation.loader.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PhpFileLoader A Symfony\Component\Translation\Loader\PhpFileLoader instance + */ + protected function getTranslation_Loader_PhpService() + { + return $this->services['translation.loader.php'] = new \Symfony\Component\Translation\Loader\PhpFileLoader(); + } + + /** + * Gets the 'translation.loader.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PoFileLoader A Symfony\Component\Translation\Loader\PoFileLoader instance + */ + protected function getTranslation_Loader_PoService() + { + return $this->services['translation.loader.po'] = new \Symfony\Component\Translation\Loader\PoFileLoader(); + } + + /** + * Gets the 'translation.loader.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\QtFileLoader A Symfony\Component\Translation\Loader\QtFileLoader instance + */ + protected function getTranslation_Loader_QtService() + { + return $this->services['translation.loader.qt'] = new \Symfony\Component\Translation\Loader\QtFileLoader(); + } + + /** + * Gets the 'translation.loader.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuResFileLoader A Symfony\Component\Translation\Loader\IcuResFileLoader instance + */ + protected function getTranslation_Loader_ResService() + { + return $this->services['translation.loader.res'] = new \Symfony\Component\Translation\Loader\IcuResFileLoader(); + } + + /** + * Gets the 'translation.loader.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\XliffFileLoader A Symfony\Component\Translation\Loader\XliffFileLoader instance + */ + protected function getTranslation_Loader_XliffService() + { + return $this->services['translation.loader.xliff'] = new \Symfony\Component\Translation\Loader\XliffFileLoader(); + } + + /** + * Gets the 'translation.loader.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\YamlFileLoader A Symfony\Component\Translation\Loader\YamlFileLoader instance + */ + protected function getTranslation_Loader_YmlService() + { + return $this->services['translation.loader.yml'] = new \Symfony\Component\Translation\Loader\YamlFileLoader(); + } + + /** + * Gets the 'translation.writer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Writer\TranslationWriter A Symfony\Component\Translation\Writer\TranslationWriter instance + */ + protected function getTranslation_WriterService() + { + $this->services['translation.writer'] = $instance = new \Symfony\Component\Translation\Writer\TranslationWriter(); + + $instance->addDumper('php', $this->get('translation.dumper.php')); + $instance->addDumper('xlf', $this->get('translation.dumper.xliff')); + $instance->addDumper('po', $this->get('translation.dumper.po')); + $instance->addDumper('mo', $this->get('translation.dumper.mo')); + $instance->addDumper('yml', $this->get('translation.dumper.yml')); + $instance->addDumper('ts', $this->get('translation.dumper.qt')); + $instance->addDumper('csv', $this->get('translation.dumper.csv')); + $instance->addDumper('ini', $this->get('translation.dumper.ini')); + $instance->addDumper('json', $this->get('translation.dumper.json')); + $instance->addDumper('res', $this->get('translation.dumper.res')); + + return $instance; + } + + /** + * Gets the 'translator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\IdentityTranslator A Symfony\Component\Translation\IdentityTranslator instance + */ + protected function getTranslatorService() + { + return $this->services['translator'] = new \Symfony\Component\Translation\IdentityTranslator(${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}); + } + + /** + * Gets the 'translator.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\Translator A Symfony\Bundle\FrameworkBundle\Translation\Translator instance + */ + protected function getTranslator_DefaultService() + { + $this->services['translator.default'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\Translator($this, ${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}, array('translation.loader.php' => array(0 => 'php'), 'translation.loader.yml' => array(0 => 'yml'), 'translation.loader.xliff' => array(0 => 'xlf', 1 => 'xliff'), 'translation.loader.po' => array(0 => 'po'), 'translation.loader.mo' => array(0 => 'mo'), 'translation.loader.qt' => array(0 => 'ts'), 'translation.loader.csv' => array(0 => 'csv'), 'translation.loader.res' => array(0 => 'res'), 'translation.loader.dat' => array(0 => 'dat'), 'translation.loader.ini' => array(0 => 'ini'), 'translation.loader.json' => array(0 => 'json')), array('cache_dir' => (__DIR__.'/translations'), 'debug' => true), array()); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'translator_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\TranslatorListener A Symfony\Component\HttpKernel\EventListener\TranslatorListener instance + */ + protected function getTranslatorListenerService() + { + return $this->services['translator_listener'] = new \Symfony\Component\HttpKernel\EventListener\TranslatorListener($this->get('translator'), $this->get('request_stack')); + } + + /** + * Gets the 'twig' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Environment A Twig_Environment instance + */ + protected function getTwigService() + { + $a = $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}; + $c = $this->get('request_stack'); + + $d = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 0); + if ($this->has('debug.file_link_formatter')) { + $d->setDisplayOptions(array('fileLinkFormat' => $b)); + } + + $e = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 1); + $e->setDisplayOptions(array('maxStringLength' => 4096, 'fileLinkFormat' => $b)); + + $f = new \Symfony\Bridge\Twig\AppVariable(); + $f->setEnvironment('test'); + $f->setDebug(true); + if ($this->has('security.token_storage')) { + $f->setTokenStorage($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + if ($this->has('request_stack')) { + $f->setRequestStack($c); + } + + $this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), array('debug' => true, 'strict_variables' => true, 'exception_controller' => 'twig.controller.exception:showAction', 'form_themes' => array(0 => 'form_div_layout.html.twig'), 'autoescape' => 'name', 'cache' => (__DIR__.'/twig'), 'charset' => 'UTF-8', 'paths' => array(), 'date' => array('format' => 'F j, Y H:i', 'interval_format' => '%d days', 'timezone' => NULL), 'number_format' => array('decimals' => 0, 'decimal_point' => '.', 'thousands_separator' => ','))); + + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\LogoutUrlExtension(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'})); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\SecurityExtension($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ProfilerExtension($this->get('twig.profile'), $a)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\TranslationExtension($this->get('translator'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\AssetExtension($this->get('assets.packages'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\CodeExtension($b, ($this->targetDirs[3].'/app'), 'UTF-8')); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\RoutingExtension($this->get('router'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\StopwatchExtension($a, true)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ExpressionExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpKernelExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpFoundationExtension($c, ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'})); + $instance->addExtension(new \Twig_Extension_Debug()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\FormExtension(array(0 => $this, 1 => 'twig.form.renderer'))); + $instance->addExtension(new \Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\DumpExtension($this->get('var_dumper.cloner'), $d)); + $instance->addExtension(new \Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension($e)); + $instance->addGlobal('app', $f); + $instance->addRuntimeLoader(new \Symfony\Bundle\TwigBundle\ContainerAwareRuntimeLoader($this, array('Symfony\\Bridge\\Twig\\Extension\\HttpKernelRuntime' => 'twig.runtime.httpkernel', 'Symfony\\Bridge\\Twig\\Form\\TwigRenderer' => 'twig.form.renderer'), $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + (new \Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator('F j, Y H:i', '%d days', NULL, 0, '.', ','))->configure($instance); + + return $instance; + } + + /** + * Gets the 'twig.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\ExceptionController A Symfony\Bundle\TwigBundle\Controller\ExceptionController instance + */ + protected function getTwig_Controller_ExceptionService() + { + return $this->services['twig.controller.exception'] = new \Symfony\Bundle\TwigBundle\Controller\ExceptionController($this->get('twig'), true); + } + + /** + * Gets the 'twig.controller.preview_error' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController A Symfony\Bundle\TwigBundle\Controller\PreviewErrorController instance + */ + protected function getTwig_Controller_PreviewErrorService() + { + return $this->services['twig.controller.preview_error'] = new \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController($this->get('http_kernel'), 'twig.controller.exception:showAction'); + } + + /** + * Gets the 'twig.exception_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ExceptionListener A Symfony\Component\HttpKernel\EventListener\ExceptionListener instance + */ + protected function getTwig_ExceptionListenerService() + { + return $this->services['twig.exception_listener'] = new \Symfony\Component\HttpKernel\EventListener\ExceptionListener('twig.controller.exception:showAction', $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.form.renderer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Form\TwigRenderer A Symfony\Bridge\Twig\Form\TwigRenderer instance + */ + protected function getTwig_Form_RendererService() + { + return $this->services['twig.form.renderer'] = new \Symfony\Bridge\Twig\Form\TwigRenderer(new \Symfony\Bridge\Twig\Form\TwigRendererEngine(array(0 => 'form_div_layout.html.twig'), $this->get('twig')), $this->get('security.csrf.token_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader A Symfony\Bundle\TwigBundle\Loader\FilesystemLoader instance + */ + protected function getTwig_LoaderService() + { + $this->services['twig.loader'] = $instance = new \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}, $this->get('templating.name_parser'), $this->targetDirs[3]); + + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views'), 'Framework'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views'), 'Security'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views'), 'Twig'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle/Resources/views'), 'Swiftmailer'); + $instance->addPath(($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle/Resources/views'), 'Doctrine'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views'), 'Debug'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views'), 'WebProfiler'); + $instance->addPath(($this->targetDirs[3].'/app/Resources/views')); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form')); + + return $instance; + } + + /** + * Gets the 'twig.profile' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Profiler_Profile A Twig_Profiler_Profile instance + */ + protected function getTwig_ProfileService() + { + return $this->services['twig.profile'] = new \Twig_Profiler_Profile(); + } + + /** + * Gets the 'twig.runtime.httpkernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Extension\HttpKernelRuntime A Symfony\Bridge\Twig\Extension\HttpKernelRuntime instance + */ + protected function getTwig_Runtime_HttpkernelService() + { + return $this->services['twig.runtime.httpkernel'] = new \Symfony\Bridge\Twig\Extension\HttpKernelRuntime($this->get('fragment.handler')); + } + + /** + * Gets the 'twig.translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Translation\TwigExtractor A Symfony\Bridge\Twig\Translation\TwigExtractor instance + */ + protected function getTwig_Translation_ExtractorService() + { + return $this->services['twig.translation.extractor'] = new \Symfony\Bridge\Twig\Translation\TwigExtractor($this->get('twig')); + } + + /** + * Gets the 'uri_signer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\UriSigner A Symfony\Component\HttpKernel\UriSigner instance + */ + protected function getUriSignerService() + { + return $this->services['uri_signer'] = new \Symfony\Component\HttpKernel\UriSigner('d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb'); + } + + /** + * Gets the 'validate_request_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener A Symfony\Component\HttpKernel\EventListener\ValidateRequestListener instance + */ + protected function getValidateRequestListenerService() + { + return $this->services['validate_request_listener'] = new \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener(); + } + + /** + * Gets the 'validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Validator\ValidatorInterface A Symfony\Component\Validator\Validator\ValidatorInterface instance + */ + protected function getValidatorService() + { + return $this->services['validator'] = $this->get('validator.builder')->getValidator(); + } + + /** + * Gets the 'validator.builder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\ValidatorBuilderInterface A Symfony\Component\Validator\ValidatorBuilderInterface instance + */ + protected function getValidator_BuilderService() + { + $this->services['validator.builder'] = $instance = \Symfony\Component\Validator\Validation::createValidatorBuilder(); + + $instance->setConstraintValidatorFactory(new \Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory($this, array('validator.expression' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\ExpressionValidator' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\EmailValidator' => 'validator.email', 'security.validator.user_password' => 'security.validator.user_password', 'Symfony\\Component\\Security\\Core\\Validator\\Constraints\\UserPasswordValidator' => 'security.validator.user_password', 'doctrine.orm.validator.unique' => 'doctrine.orm.validator.unique', 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator' => 'doctrine.orm.validator.unique'))); + $instance->setTranslator($this->get('translator')); + $instance->setTranslationDomain('validators'); + $instance->addXmlMappings(array(0 => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml'))); + $instance->enableAnnotationMapping($this->get('annotation_reader')); + $instance->addMethodMapping('loadValidatorMetadata'); + $instance->addObjectInitializers(array(0 => $this->get('doctrine.orm.validator_initializer'))); + + return $instance; + } + + /** + * Gets the 'validator.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\EmailValidator A Symfony\Component\Validator\Constraints\EmailValidator instance + */ + protected function getValidator_EmailService() + { + return $this->services['validator.email'] = new \Symfony\Component\Validator\Constraints\EmailValidator(false); + } + + /** + * Gets the 'validator.expression' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\ExpressionValidator A Symfony\Component\Validator\Constraints\ExpressionValidator instance + */ + protected function getValidator_ExpressionService() + { + return $this->services['validator.expression'] = new \Symfony\Component\Validator\Constraints\ExpressionValidator(); + } + + /** + * Gets the 'var_dumper.cli_dumper' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Dumper\CliDumper A Symfony\Component\VarDumper\Dumper\CliDumper instance + */ + protected function getVarDumper_CliDumperService() + { + return $this->services['var_dumper.cli_dumper'] = new \Symfony\Component\VarDumper\Dumper\CliDumper(NULL, 'UTF-8', 0); + } + + /** + * Gets the 'var_dumper.cloner' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Cloner\VarCloner A Symfony\Component\VarDumper\Cloner\VarCloner instance + */ + protected function getVarDumper_ClonerService() + { + $this->services['var_dumper.cloner'] = $instance = new \Symfony\Component\VarDumper\Cloner\VarCloner(); + + $instance->setMaxItems(2500); + $instance->setMaxString(-1); + + return $instance; + } + + /** + * Gets the 'web_profiler.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController A Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController instance + */ + protected function getWebProfiler_Controller_ExceptionService() + { + return $this->services['web_profiler.controller.exception'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), true); + } + + /** + * Gets the 'web_profiler.controller.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController A Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController instance + */ + protected function getWebProfiler_Controller_ProfilerService() + { + return $this->services['web_profiler.controller.profiler'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController($this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), array('data_collector.request' => array(0 => 'request', 1 => '@WebProfiler/Collector/request.html.twig'), 'data_collector.time' => array(0 => 'time', 1 => '@WebProfiler/Collector/time.html.twig'), 'data_collector.memory' => array(0 => 'memory', 1 => '@WebProfiler/Collector/memory.html.twig'), 'data_collector.ajax' => array(0 => 'ajax', 1 => '@WebProfiler/Collector/ajax.html.twig'), 'data_collector.form' => array(0 => 'form', 1 => '@WebProfiler/Collector/form.html.twig'), 'data_collector.exception' => array(0 => 'exception', 1 => '@WebProfiler/Collector/exception.html.twig'), 'data_collector.logger' => array(0 => 'logger', 1 => '@WebProfiler/Collector/logger.html.twig'), 'data_collector.events' => array(0 => 'events', 1 => '@WebProfiler/Collector/events.html.twig'), 'data_collector.router' => array(0 => 'router', 1 => '@WebProfiler/Collector/router.html.twig'), 'data_collector.security' => array(0 => 'security', 1 => '@Security/Collector/security.html.twig'), 'data_collector.twig' => array(0 => 'twig', 1 => '@WebProfiler/Collector/twig.html.twig'), 'data_collector.doctrine' => array(0 => 'db', 1 => '@Doctrine/Collector/db.html.twig'), 'swiftmailer.data_collector' => array(0 => 'swiftmailer', 1 => '@Swiftmailer/Collector/swiftmailer.html.twig'), 'data_collector.dump' => array(0 => 'dump', 1 => '@Debug/Profiler/dump.html.twig'), 'data_collector.config' => array(0 => 'config', 1 => '@WebProfiler/Collector/config.html.twig')), 'bottom', new \Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler(new \Symfony\Bundle\WebProfilerBundle\Csp\NonceGenerator()), $this->targetDirs[3]); + } + + /** + * Gets the 'web_profiler.controller.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\RouterController A Symfony\Bundle\WebProfilerBundle\Controller\RouterController instance + */ + protected function getWebProfiler_Controller_RouterService() + { + return $this->services['web_profiler.controller.router'] = new \Symfony\Bundle\WebProfilerBundle\Controller\RouterController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'annotations.reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\Common\Annotations\AnnotationReader A Doctrine\Common\Annotations\AnnotationReader instance + */ + protected function getAnnotations_ReaderService() + { + return $this->services['annotations.reader'] = new \Doctrine\Common\Annotations\AnnotationReader(); + } + + /** + * Gets the 'cache.annotations' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_AnnotationsService() + { + return $this->services['cache.annotations'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('4uFr9CTb+t', 0, '5lkHnNUKPaJsHkP2j3wMW+', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'controller_name_converter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser A Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser instance + */ + protected function getControllerNameConverterService() + { + return $this->services['controller_name_converter'] = new \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser($this->get('kernel')); + } + + /** + * Gets the 'debug.file_link_formatter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpKernel\Debug\FileLinkFormatter A Symfony\Component\HttpKernel\Debug\FileLinkFormatter instance + */ + protected function getDebug_FileLinkFormatterService() + { + return $this->services['debug.file_link_formatter'] = new \Symfony\Component\HttpKernel\Debug\FileLinkFormatter(NULL, $this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->targetDirs[3], '/_profiler/open?file=%f&line=%l#line%l'); + } + + /** + * Gets the 'debug.log_processor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bridge\Monolog\Processor\DebugProcessor A Symfony\Bridge\Monolog\Processor\DebugProcessor instance + */ + protected function getDebug_LogProcessorService() + { + return $this->services['debug.log_processor'] = new \Symfony\Bridge\Monolog\Processor\DebugProcessor(); + } + + /** + * Gets the 'debug.security.access.decision_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager A Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager instance + */ + protected function getDebug_Security_Access_DecisionManagerService() + { + $a = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + + $this->services['debug.security.access.decision_manager'] = $instance = new \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager(new \Symfony\Component\Security\Core\Authorization\AccessDecisionManager(array(), 'affirmative', false, true)); + + $instance->setVoters(array(0 => new \Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter($a), 1 => new \Symfony\Component\Security\Core\Authorization\Voter\RoleVoter(), 2 => new \Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter(new \Symfony\Component\Security\Core\Authorization\ExpressionLanguage(), $a, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}))); + + return $instance; + } + + /** + * Gets the 'doctrine.dbal.logger.profiling.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\DBAL\Logging\DebugStack A Doctrine\DBAL\Logging\DebugStack instance + */ + protected function getDoctrine_Dbal_Logger_Profiling_DefaultService() + { + return $this->services['doctrine.dbal.logger.profiling.default'] = new \Doctrine\DBAL\Logging\DebugStack(); + } + + /** + * Gets the 'form.server_params' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Form\Util\ServerParams A Symfony\Component\Form\Util\ServerParams instance + */ + protected function getForm_ServerParamsService() + { + return $this->services['form.server_params'] = new \Symfony\Component\Form\Util\ServerParams($this->get('request_stack')); + } + + /** + * Gets the 'monolog.processor.psr_log_message' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Monolog\Processor\PsrLogMessageProcessor A Monolog\Processor\PsrLogMessageProcessor instance + */ + protected function getMonolog_Processor_PsrLogMessageService() + { + return $this->services['monolog.processor.psr_log_message'] = new \Monolog\Processor\PsrLogMessageProcessor(); + } + + /** + * Gets the 'router.request_context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Routing\RequestContext A Symfony\Component\Routing\RequestContext instance + */ + protected function getRouter_RequestContextService() + { + return $this->services['router.request_context'] = new \Symfony\Component\Routing\RequestContext('', 'GET', 'localhost', 'http', 80, 443); + } + + /** + * Gets the 'security.authentication.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager A Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager instance + */ + protected function getSecurity_Authentication_ManagerService() + { + $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('58c46f5d35aaf5.09366842')), true); + + $instance->setEventDispatcher($this->get('debug.event_dispatcher')); + + return $instance; + } + + /** + * Gets the 'security.authentication.trust_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver A Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver instance + */ + protected function getSecurity_Authentication_TrustResolverService() + { + return $this->services['security.authentication.trust_resolver'] = new \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver('Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken'); + } + + /** + * Gets the 'security.firewall.map' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallMap A Symfony\Bundle\SecurityBundle\Security\FirewallMap instance + */ + protected function getSecurity_Firewall_MapService() + { + return $this->services['security.firewall.map'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallMap($this, array('security.firewall.map.context.dev' => new \Symfony\Component\HttpFoundation\RequestMatcher('^/(_(profiler|wdt)|css|images|js)/'), 'security.firewall.map.context.main' => NULL)); + } + + /** + * Gets the 'security.logout_url_generator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator A Symfony\Component\Security\Http\Logout\LogoutUrlGenerator instance + */ + protected function getSecurity_LogoutUrlGeneratorService() + { + return $this->services['security.logout_url_generator'] = new \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator($this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.role_hierarchy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Role\RoleHierarchy A Symfony\Component\Security\Core\Role\RoleHierarchy instance + */ + protected function getSecurity_RoleHierarchyService() + { + return $this->services['security.role_hierarchy'] = new \Symfony\Component\Security\Core\Role\RoleHierarchy(array()); + } + + /** + * Gets the 'session.storage.metadata_bag' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag A Symfony\Component\HttpFoundation\Session\Storage\MetadataBag instance + */ + protected function getSession_Storage_MetadataBagService() + { + return $this->services['session.storage.metadata_bag'] = new \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag('_sf2_meta', '0'); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.eventdispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Swift_Events_SimpleEventDispatcher A Swift_Events_SimpleEventDispatcher instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_EventdispatcherService() + { + return $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] = new \Swift_Events_SimpleEventDispatcher(); + } + + /** + * Gets the 'templating.locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator A Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator instance + */ + protected function getTemplating_LocatorService() + { + return $this->services['templating.locator'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator($this->get('file_locator'), __DIR__); + } + + /** + * Gets the 'translator.selector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Translation\MessageSelector A Symfony\Component\Translation\MessageSelector instance + */ + protected function getTranslator_SelectorService() + { + return $this->services['translator.selector'] = new \Symfony\Component\Translation\MessageSelector(); + } + + /** + * {@inheritdoc} + */ + public function getParameter($name) + { + $name = strtolower($name); + + if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) { + throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name)); + } + if (isset($this->loadedDynamicParameters[$name])) { + return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + + return $this->parameters[$name]; + } + + /** + * {@inheritdoc} + */ + public function hasParameter($name) + { + $name = strtolower($name); + + return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]); + } + + /** + * {@inheritdoc} + */ + public function setParameter($name, $value) + { + throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); + } + + /** + * {@inheritdoc} + */ + public function getParameterBag() + { + if (null === $this->parameterBag) { + $parameters = $this->parameters; + foreach ($this->loadedDynamicParameters as $name => $loaded) { + $parameters[$name] = $loaded ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + $this->parameterBag = new FrozenParameterBag($parameters); + } + + return $this->parameterBag; + } + + private $loadedDynamicParameters = array( + 'kernel.root_dir' => false, + 'kernel.logs_dir' => false, + 'kernel.bundles_metadata' => false, + 'session.save_path' => false, + 'router.resource' => false, + ); + private $dynamicParameters = array(); + + /** + * Computes a dynamic parameter. + * + * @param string The name of the dynamic parameter to load + * + * @return mixed The value of the dynamic parameter + * + * @throws InvalidArgumentException When the dynamic parameter does not exist + */ + private function getDynamicParameter($name) + { + switch ($name) { + case 'kernel.root_dir': $value = ($this->targetDirs[3].'/app'); break; + case 'kernel.logs_dir': $value = ($this->targetDirs[2].'/logs'); break; + case 'kernel.bundles_metadata': $value = array( + 'FrameworkBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle'), + 'namespace' => 'Symfony\\Bundle\\FrameworkBundle', + ), + 'SecurityBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle'), + 'namespace' => 'Symfony\\Bundle\\SecurityBundle', + ), + 'TwigBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle'), + 'namespace' => 'Symfony\\Bundle\\TwigBundle', + ), + 'MonologBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/monolog-bundle'), + 'namespace' => 'Symfony\\Bundle\\MonologBundle', + ), + 'SwiftmailerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle'), + 'namespace' => 'Symfony\\Bundle\\SwiftmailerBundle', + ), + 'DoctrineBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle'), + 'namespace' => 'Doctrine\\Bundle\\DoctrineBundle', + ), + 'SensioFrameworkExtraBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/framework-extra-bundle'), + 'namespace' => 'Sensio\\Bundle\\FrameworkExtraBundle', + ), + 'AppBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/src/AppBundle'), + 'namespace' => 'AppBundle', + ), + 'DebugBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle'), + 'namespace' => 'Symfony\\Bundle\\DebugBundle', + ), + 'WebProfilerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle'), + 'namespace' => 'Symfony\\Bundle\\WebProfilerBundle', + ), + 'SensioDistributionBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/distribution-bundle'), + 'namespace' => 'Sensio\\Bundle\\DistributionBundle', + ), + 'SensioGeneratorBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/generator-bundle'), + 'namespace' => 'Sensio\\Bundle\\GeneratorBundle', + ), + ); break; + case 'session.save_path': $value = ($this->targetDirs[3].'/app/../var/sessions/test'); break; + case 'router.resource': $value = ($this->targetDirs[3].'/app/config/routing_dev.yml'); break; + default: throw new InvalidArgumentException(sprintf('The dynamic parameter "%s" must be defined.', $name)); + } + $this->loadedDynamicParameters[$name] = true; + + return $this->dynamicParameters[$name] = $value; + } + + /** + * Gets the default parameters. + * + * @return array An array of the default parameters + */ + protected function getDefaultParameters() + { + return array( + 'kernel.environment' => 'test', + 'kernel.debug' => true, + 'kernel.name' => 'app', + 'kernel.cache_dir' => __DIR__, + 'kernel.bundles' => array( + 'FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle', + 'SecurityBundle' => 'Symfony\\Bundle\\SecurityBundle\\SecurityBundle', + 'TwigBundle' => 'Symfony\\Bundle\\TwigBundle\\TwigBundle', + 'MonologBundle' => 'Symfony\\Bundle\\MonologBundle\\MonologBundle', + 'SwiftmailerBundle' => 'Symfony\\Bundle\\SwiftmailerBundle\\SwiftmailerBundle', + 'DoctrineBundle' => 'Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle', + 'SensioFrameworkExtraBundle' => 'Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle', + 'AppBundle' => 'AppBundle\\AppBundle', + 'DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle', + 'WebProfilerBundle' => 'Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle', + 'SensioDistributionBundle' => 'Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle', + 'SensioGeneratorBundle' => 'Sensio\\Bundle\\GeneratorBundle\\SensioGeneratorBundle', + ), + 'kernel.charset' => 'UTF-8', + 'kernel.container_class' => 'appTestDebugProjectContainer', + 'database_host' => '127.0.0.1', + 'database_port' => NULL, + 'database_name' => 'symfony', + 'database_user' => 'root', + 'database_password' => NULL, + 'mailer_transport' => 'smtp', + 'mailer_host' => '127.0.0.1', + 'mailer_user' => NULL, + 'mailer_password' => NULL, + 'secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'locale' => 'en', + 'fragment.renderer.hinclude.global_template' => NULL, + 'fragment.path' => '/_fragment', + 'kernel.secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'kernel.http_method_override' => true, + 'kernel.trusted_hosts' => array( + + ), + 'kernel.trusted_proxies' => array( + + ), + 'kernel.default_locale' => 'en', + 'templating.helper.code.file_link_format' => NULL, + 'debug.file_link_format' => NULL, + 'test.client.parameters' => array( + + ), + 'session.metadata.storage_key' => '_sf2_meta', + 'session.storage.options' => array( + 'cookie_httponly' => true, + 'gc_probability' => 1, + ), + 'session.metadata.update_threshold' => '0', + 'form.type_extension.csrf.enabled' => true, + 'form.type_extension.csrf.field_name' => '_token', + 'templating.loader.cache.path' => NULL, + 'templating.engines' => array( + 0 => 'twig', + ), + 'validator.mapping.cache.prefix' => '', + 'validator.mapping.cache.file' => (__DIR__.'/validation.php'), + 'validator.translation_domain' => 'validators', + 'profiler_listener.only_exceptions' => false, + 'profiler_listener.only_master_requests' => false, + 'profiler.storage.dsn' => ('file:'.__DIR__.'/profiler'), + 'debug.error_handler.throw_at' => -1, + 'debug.container.dump' => (__DIR__.'/appTestDebugProjectContainer.xml'), + 'router.options.generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', + 'router.options.matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', + 'router.options.matcher.cache_class' => 'appTestDebugProjectContainerUrlMatcher', + 'router.options.generator.cache_class' => 'appTestDebugProjectContainerUrlGenerator', + 'router.request_context.host' => 'localhost', + 'router.request_context.scheme' => 'http', + 'router.request_context.base_url' => '', + 'router.cache_class_prefix' => 'appTestDebugProjectContainer', + 'request_listener.http_port' => 80, + 'request_listener.https_port' => 443, + 'security.authentication.trust_resolver.anonymous_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', + 'security.authentication.trust_resolver.rememberme_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken', + 'security.role_hierarchy.roles' => array( + + ), + 'security.access.denied_url' => NULL, + 'security.authentication.manager.erase_credentials' => true, + 'security.authentication.session_strategy.strategy' => 'migrate', + 'security.access.always_authenticate_before_granting' => false, + 'security.authentication.hide_user_not_found' => true, + 'twig.exception_listener.controller' => 'twig.controller.exception:showAction', + 'twig.form.resources' => array( + 0 => 'form_div_layout.html.twig', + ), + 'monolog.use_microseconds' => true, + 'monolog.swift_mailer.handlers' => array( + + ), + 'monolog.handlers_to_channels' => array( + 'monolog.handler.console' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + 1 => 'doctrine', + ), + ), + 'monolog.handler.main' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + ), + ), + ), + 'swiftmailer.class' => 'Swift_Mailer', + 'swiftmailer.transport.sendmail.class' => 'Swift_Transport_SendmailTransport', + 'swiftmailer.transport.mail.class' => 'Swift_Transport_MailTransport', + 'swiftmailer.transport.failover.class' => 'Swift_Transport_FailoverTransport', + 'swiftmailer.plugin.redirecting.class' => 'Swift_Plugins_RedirectingPlugin', + 'swiftmailer.plugin.impersonate.class' => 'Swift_Plugins_ImpersonatePlugin', + 'swiftmailer.plugin.messagelogger.class' => 'Swift_Plugins_MessageLogger', + 'swiftmailer.plugin.antiflood.class' => 'Swift_Plugins_AntiFloodPlugin', + 'swiftmailer.transport.smtp.class' => 'Swift_Transport_EsmtpTransport', + 'swiftmailer.plugin.blackhole.class' => 'Swift_Plugins_BlackholePlugin', + 'swiftmailer.spool.file.class' => 'Swift_FileSpool', + 'swiftmailer.spool.memory.class' => 'Swift_MemorySpool', + 'swiftmailer.email_sender.listener.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener', + 'swiftmailer.data_collector.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\DataCollector\\MessageDataCollector', + 'swiftmailer.mailer.default.transport.name' => 'null', + 'swiftmailer.mailer.default.transport.smtp.encryption' => NULL, + 'swiftmailer.mailer.default.transport.smtp.port' => 25, + 'swiftmailer.mailer.default.transport.smtp.host' => '127.0.0.1', + 'swiftmailer.mailer.default.transport.smtp.username' => NULL, + 'swiftmailer.mailer.default.transport.smtp.password' => NULL, + 'swiftmailer.mailer.default.transport.smtp.auth_mode' => NULL, + 'swiftmailer.mailer.default.transport.smtp.timeout' => 30, + 'swiftmailer.mailer.default.transport.smtp.source_ip' => NULL, + 'swiftmailer.mailer.default.transport.smtp.local_domain' => NULL, + 'swiftmailer.spool.default.memory.path' => (__DIR__.'/swiftmailer/spool/default'), + 'swiftmailer.mailer.default.spool.enabled' => true, + 'swiftmailer.mailer.default.plugin.impersonate' => NULL, + 'swiftmailer.mailer.default.single_address' => NULL, + 'swiftmailer.mailer.default.delivery.enabled' => false, + 'swiftmailer.spool.enabled' => true, + 'swiftmailer.delivery.enabled' => false, + 'swiftmailer.single_address' => NULL, + 'swiftmailer.mailers' => array( + 'default' => 'swiftmailer.mailer.default', + ), + 'swiftmailer.default_mailer' => 'default', + 'doctrine_cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine_cache.apcu.class' => 'Doctrine\\Common\\Cache\\ApcuCache', + 'doctrine_cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine_cache.chain.class' => 'Doctrine\\Common\\Cache\\ChainCache', + 'doctrine_cache.couchbase.class' => 'Doctrine\\Common\\Cache\\CouchbaseCache', + 'doctrine_cache.couchbase.connection.class' => 'Couchbase', + 'doctrine_cache.couchbase.hostnames' => 'localhost:8091', + 'doctrine_cache.file_system.class' => 'Doctrine\\Common\\Cache\\FilesystemCache', + 'doctrine_cache.php_file.class' => 'Doctrine\\Common\\Cache\\PhpFileCache', + 'doctrine_cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine_cache.memcache.connection.class' => 'Memcache', + 'doctrine_cache.memcache.host' => 'localhost', + 'doctrine_cache.memcache.port' => 11211, + 'doctrine_cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine_cache.memcached.connection.class' => 'Memcached', + 'doctrine_cache.memcached.host' => 'localhost', + 'doctrine_cache.memcached.port' => 11211, + 'doctrine_cache.mongodb.class' => 'Doctrine\\Common\\Cache\\MongoDBCache', + 'doctrine_cache.mongodb.collection.class' => 'MongoCollection', + 'doctrine_cache.mongodb.connection.class' => 'MongoClient', + 'doctrine_cache.mongodb.server' => 'localhost:27017', + 'doctrine_cache.predis.client.class' => 'Predis\\Client', + 'doctrine_cache.predis.scheme' => 'tcp', + 'doctrine_cache.predis.host' => 'localhost', + 'doctrine_cache.predis.port' => 6379, + 'doctrine_cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine_cache.redis.connection.class' => 'Redis', + 'doctrine_cache.redis.host' => 'localhost', + 'doctrine_cache.redis.port' => 6379, + 'doctrine_cache.riak.class' => 'Doctrine\\Common\\Cache\\RiakCache', + 'doctrine_cache.riak.bucket.class' => 'Riak\\Bucket', + 'doctrine_cache.riak.connection.class' => 'Riak\\Connection', + 'doctrine_cache.riak.bucket_property_list.class' => 'Riak\\BucketPropertyList', + 'doctrine_cache.riak.host' => 'localhost', + 'doctrine_cache.riak.port' => 8087, + 'doctrine_cache.sqlite3.class' => 'Doctrine\\Common\\Cache\\SQLite3Cache', + 'doctrine_cache.sqlite3.connection.class' => 'SQLite3', + 'doctrine_cache.void.class' => 'Doctrine\\Common\\Cache\\VoidCache', + 'doctrine_cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine_cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine_cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine_cache.security.acl.cache.class' => 'Doctrine\\Bundle\\DoctrineCacheBundle\\Acl\\Model\\AclCache', + 'doctrine.dbal.logger.chain.class' => 'Doctrine\\DBAL\\Logging\\LoggerChain', + 'doctrine.dbal.logger.profiling.class' => 'Doctrine\\DBAL\\Logging\\DebugStack', + 'doctrine.dbal.logger.class' => 'Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger', + 'doctrine.dbal.configuration.class' => 'Doctrine\\DBAL\\Configuration', + 'doctrine.data_collector.class' => 'Doctrine\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector', + 'doctrine.dbal.connection.event_manager.class' => 'Symfony\\Bridge\\Doctrine\\ContainerAwareEventManager', + 'doctrine.dbal.connection_factory.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ConnectionFactory', + 'doctrine.dbal.events.mysql_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit', + 'doctrine.dbal.events.oracle_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit', + 'doctrine.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 'doctrine.entity_managers' => array( + 'default' => 'doctrine.orm.default_entity_manager', + ), + 'doctrine.default_entity_manager' => 'default', + 'doctrine.dbal.connection_factory.types' => array( + + ), + 'doctrine.connections' => array( + 'default' => 'doctrine.dbal.default_connection', + ), + 'doctrine.default_connection' => 'default', + 'doctrine.orm.configuration.class' => 'Doctrine\\ORM\\Configuration', + 'doctrine.orm.entity_manager.class' => 'Doctrine\\ORM\\EntityManager', + 'doctrine.orm.manager_configurator.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ManagerConfigurator', + 'doctrine.orm.cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine.orm.cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine.orm.cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine.orm.cache.memcache_host' => 'localhost', + 'doctrine.orm.cache.memcache_port' => 11211, + 'doctrine.orm.cache.memcache_instance.class' => 'Memcache', + 'doctrine.orm.cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine.orm.cache.memcached_host' => 'localhost', + 'doctrine.orm.cache.memcached_port' => 11211, + 'doctrine.orm.cache.memcached_instance.class' => 'Memcached', + 'doctrine.orm.cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine.orm.cache.redis_host' => 'localhost', + 'doctrine.orm.cache.redis_port' => 6379, + 'doctrine.orm.cache.redis_instance.class' => 'Redis', + 'doctrine.orm.cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine.orm.cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine.orm.cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine.orm.metadata.driver_chain.class' => 'Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriverChain', + 'doctrine.orm.metadata.annotation.class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', + 'doctrine.orm.metadata.xml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedXmlDriver', + 'doctrine.orm.metadata.yml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedYamlDriver', + 'doctrine.orm.metadata.php.class' => 'Doctrine\\ORM\\Mapping\\Driver\\PHPDriver', + 'doctrine.orm.metadata.staticphp.class' => 'Doctrine\\ORM\\Mapping\\Driver\\StaticPHPDriver', + 'doctrine.orm.proxy_cache_warmer.class' => 'Symfony\\Bridge\\Doctrine\\CacheWarmer\\ProxyCacheWarmer', + 'form.type_guesser.doctrine.class' => 'Symfony\\Bridge\\Doctrine\\Form\\DoctrineOrmTypeGuesser', + 'doctrine.orm.validator.unique.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator', + 'doctrine.orm.validator_initializer.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\DoctrineInitializer', + 'doctrine.orm.security.user.provider.class' => 'Symfony\\Bridge\\Doctrine\\Security\\User\\EntityUserProvider', + 'doctrine.orm.listeners.resolve_target_entity.class' => 'Doctrine\\ORM\\Tools\\ResolveTargetEntityListener', + 'doctrine.orm.listeners.attach_entity_listeners.class' => 'Doctrine\\ORM\\Tools\\AttachEntityListenersListener', + 'doctrine.orm.naming_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultNamingStrategy', + 'doctrine.orm.naming_strategy.underscore.class' => 'Doctrine\\ORM\\Mapping\\UnderscoreNamingStrategy', + 'doctrine.orm.quote_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultQuoteStrategy', + 'doctrine.orm.quote_strategy.ansi.class' => 'Doctrine\\ORM\\Mapping\\AnsiQuoteStrategy', + 'doctrine.orm.entity_listener_resolver.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Mapping\\ContainerAwareEntityListenerResolver', + 'doctrine.orm.second_level_cache.default_cache_factory.class' => 'Doctrine\\ORM\\Cache\\DefaultCacheFactory', + 'doctrine.orm.second_level_cache.default_region.class' => 'Doctrine\\ORM\\Cache\\Region\\DefaultRegion', + 'doctrine.orm.second_level_cache.filelock_region.class' => 'Doctrine\\ORM\\Cache\\Region\\FileLockRegion', + 'doctrine.orm.second_level_cache.logger_chain.class' => 'Doctrine\\ORM\\Cache\\Logging\\CacheLoggerChain', + 'doctrine.orm.second_level_cache.logger_statistics.class' => 'Doctrine\\ORM\\Cache\\Logging\\StatisticsCacheLogger', + 'doctrine.orm.second_level_cache.cache_configuration.class' => 'Doctrine\\ORM\\Cache\\CacheConfiguration', + 'doctrine.orm.second_level_cache.regions_configuration.class' => 'Doctrine\\ORM\\Cache\\RegionsConfiguration', + 'doctrine.orm.auto_generate_proxy_classes' => true, + 'doctrine.orm.proxy_dir' => (__DIR__.'/doctrine/orm/Proxies'), + 'doctrine.orm.proxy_namespace' => 'Proxies', + 'sensio_framework_extra.view.guesser.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Templating\\TemplateGuesser', + 'sensio_framework_extra.controller.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 'sensio_framework_extra.routing.loader.annot_dir.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader', + 'sensio_framework_extra.routing.loader.annot_file.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader', + 'sensio_framework_extra.routing.loader.annot_class.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Routing\\AnnotatedRouteControllerLoader', + 'sensio_framework_extra.converter.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 'sensio_framework_extra.converter.manager.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 'sensio_framework_extra.converter.doctrine.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 'sensio_framework_extra.converter.datetime.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 'sensio_framework_extra.view.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 'web_profiler.debug_toolbar.position' => 'bottom', + 'data_collector.templates' => array( + 'data_collector.request' => array( + 0 => 'request', + 1 => '@WebProfiler/Collector/request.html.twig', + ), + 'data_collector.time' => array( + 0 => 'time', + 1 => '@WebProfiler/Collector/time.html.twig', + ), + 'data_collector.memory' => array( + 0 => 'memory', + 1 => '@WebProfiler/Collector/memory.html.twig', + ), + 'data_collector.ajax' => array( + 0 => 'ajax', + 1 => '@WebProfiler/Collector/ajax.html.twig', + ), + 'data_collector.form' => array( + 0 => 'form', + 1 => '@WebProfiler/Collector/form.html.twig', + ), + 'data_collector.exception' => array( + 0 => 'exception', + 1 => '@WebProfiler/Collector/exception.html.twig', + ), + 'data_collector.logger' => array( + 0 => 'logger', + 1 => '@WebProfiler/Collector/logger.html.twig', + ), + 'data_collector.events' => array( + 0 => 'events', + 1 => '@WebProfiler/Collector/events.html.twig', + ), + 'data_collector.router' => array( + 0 => 'router', + 1 => '@WebProfiler/Collector/router.html.twig', + ), + 'data_collector.security' => array( + 0 => 'security', + 1 => '@Security/Collector/security.html.twig', + ), + 'data_collector.twig' => array( + 0 => 'twig', + 1 => '@WebProfiler/Collector/twig.html.twig', + ), + 'data_collector.doctrine' => array( + 0 => 'db', + 1 => '@Doctrine/Collector/db.html.twig', + ), + 'swiftmailer.data_collector' => array( + 0 => 'swiftmailer', + 1 => '@Swiftmailer/Collector/swiftmailer.html.twig', + ), + 'data_collector.dump' => array( + 0 => 'dump', + 1 => '@Debug/Profiler/dump.html.twig', + ), + 'data_collector.config' => array( + 0 => 'config', + 1 => '@WebProfiler/Collector/config.html.twig', + ), + ), + 'console.command.ids' => array( + 0 => 'sensio_distribution.security_checker.command', + ), + ); + } +} diff --git a/var/cache/test/appTestDebugProjectContainer.php.meta b/var/cache/test/appTestDebugProjectContainer.php.meta new file mode 100644 index 00000000..40073fcc --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainer.php.meta @@ -0,0 +1 @@ +a:211:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":52:{s:44:"/home/c2i/git/Symphony_S_A/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":111:{s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":82:{s:74:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/MonologBundle.php";}i:10;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:12;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:16;C:46:"Symfony\Component\Config\Resource\FileResource":62:{s:54:"/home/c2i/git/Symphony_S_A/src/AppBundle/AppBundle.php";}i:18;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:22;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/SensioDistributionBundle.php";}i:24;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/SensioGeneratorBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:27;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:28;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:30;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:31;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddAnnotationsCachedReaderPass.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":155:{s:146:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:33;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:34;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:36;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:37;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:39;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:40;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:42;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:43;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/PropertyInfoPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/DataCollectorTranslatorPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ControllerArgumentValueResolverPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ValidateWorkflowsPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddDebugLogProcessorPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":156:{s:147:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ConfigCachePass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/RuntimeLoaderPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/FixEmptyLoggerPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:70;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/config_test.yml";}i:73;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/config_dev.yml";}i:74;C:46:"Symfony\Component\Config\Resource\FileResource":56:{s:48:"/home/c2i/git/Symphony_S_A/app/config/config.yml";}i:75;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/parameters.yml";}i:76;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/security.yml";}i:77;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/services.yml";}i:78;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:79;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:80;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:81;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:120;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:121;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:122;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:123;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:124;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/FactoryReturnTypePass.php";}i:125;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:126;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:127;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:128;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php";}i:129;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:130;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:131;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:136;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:137;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:138;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:139;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:140;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:149;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:152;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:153;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:154;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml";}i:155;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:156;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/test.xml";}i:157;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:158;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:159;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:160;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:163;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:164;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:167;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:168;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:169;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:170;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:171;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:172;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:173;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:176;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php";}i:177;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:178;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:179;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:180;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:181;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:182;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:183;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml";}i:184;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_debug.xml";}i:185;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:188;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:189;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:190;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml";}i:191;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/templating.xml";}i:192;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":88:{a:2:{i:0;s:62:"/home/c2i/git/Symphony_S_A/app/Resources/FrameworkBundle/views";i:1;b:0;}}i:193;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":127:{a:2:{i:0;s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views";i:1;b:1;}}i:194;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/SecurityBundle/views";i:1;b:0;}}i:195;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":125:{a:2:{i:0;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views";i:1;b:1;}}i:196;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":83:{a:2:{i:0;s:57:"/home/c2i/git/Symphony_S_A/app/Resources/TwigBundle/views";i:1;b:0;}}i:197;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":121:{a:2:{i:0;s:95:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views";i:1;b:1;}}i:198;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":86:{a:2:{i:0;s:60:"/home/c2i/git/Symphony_S_A/app/Resources/MonologBundle/views";i:1;b:0;}}i:199;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":98:{a:2:{i:0;s:72:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/views";i:1;b:0;}}i:200;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/SwiftmailerBundle/views";i:1;b:0;}}i:201;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views";i:1;b:1;}}i:202;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/DoctrineBundle/views";i:1;b:0;}}i:203;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":100:{a:2:{i:0;s:74:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views";i:1;b:1;}}i:204;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/app/Resources/SensioFrameworkExtraBundle/views";i:1;b:0;}}i:205;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":105:{a:2:{i:0;s:79:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/views";i:1;b:0;}}i:206;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/app/Resources/AppBundle/views";i:1;b:0;}}i:207;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/src/AppBundle/Resources/views";i:1;b:0;}}i:208;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":84:{a:2:{i:0;s:58:"/home/c2i/git/Symphony_S_A/app/Resources/DebugBundle/views";i:1;b:0;}}i:209;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":122:{a:2:{i:0;s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views";i:1;b:1;}}i:210;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/WebProfilerBundle/views";i:1;b:0;}}i:211;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":129:{a:2:{i:0;s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views";i:1;b:1;}}i:212;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":97:{a:2:{i:0;s:71:"/home/c2i/git/Symphony_S_A/app/Resources/SensioDistributionBundle/views";i:1;b:0;}}i:213;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/views";i:1;b:0;}}i:214;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":94:{a:2:{i:0;s:68:"/home/c2i/git/Symphony_S_A/app/Resources/SensioGeneratorBundle/views";i:1;b:0;}}i:215;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources/views";i:1;b:0;}}i:216;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":72:{a:2:{i:0;s:46:"/home/c2i/git/Symphony_S_A/app/Resources/views";i:1;b:1;}}i:217;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:220;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:221;C:46:"Symfony\Component\Config\Resource\FileResource":93:{s:85:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:222;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":106:{s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Configuration.php";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:227;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:228;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Configuration.php";}i:232;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-cache-bundle/Resources/config/services.xml";}i:233;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":87:{s:79:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":64:{s:56:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle";}i:243;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config";}i:244;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":83:{s:75:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":66:{s:58:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle";}i:247;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config";}i:248;C:46:"Symfony\Component\Config\Resource\FileResource":71:{s:63:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle";}i:249;C:46:"Symfony\Component\Config\Resource\FileResource":48:{s:40:"/home/c2i/git/Symphony_S_A/src/AppBundle";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:252;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:253;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:254;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle";}i:256;C:46:"Symfony\Component\Config\Resource\FileResource":75:{s:67:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources";}i:257;C:46:"Symfony\Component\Config\Resource\FileResource":65:{s:57:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle";}i:258;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:261;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:262;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:263;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:264;C:46:"Symfony\Component\Config\Resource\FileResource":100:{s:92:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:265;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:266;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:267;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:268;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:269;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:271;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Configuration.php";}i:272;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:273;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:275;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:276;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:277;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/DependencyInjection/SensioDistributionExtension.php";}i:280;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config/security.xml";}i:281;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":55:{a:2:{i:0;s:29:"Symfony\Component\Yaml\Parser";i:1;b:1;}}i:282;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":63:{a:2:{i:0;s:37:"Symfony\Component\Stopwatch\Stopwatch";i:1;b:1;}}i:283;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":81:{a:2:{i:0;s:55:"Symfony\Component\ExpressionLanguage\ExpressionLanguage";i:1;b:1;}}i:284;C:46:"Symfony\Component\Config\Resource\FileResource":89:{s:81:"/home/c2i/git/Symphony_S_A/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php";}} \ No newline at end of file diff --git a/var/cache/test/appTestDebugProjectContainer.xml b/var/cache/test/appTestDebugProjectContainer.xml new file mode 100644 index 00000000..c3333d30 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainer.xml @@ -0,0 +1,2753 @@ + + + + /home/c2i/git/Symphony_S_A/app + test + true + app + /home/c2i/git/Symphony_S_A/var/cache/test + /home/c2i/git/Symphony_S_A/var/logs + + Symfony\Bundle\FrameworkBundle\FrameworkBundle + Symfony\Bundle\SecurityBundle\SecurityBundle + Symfony\Bundle\TwigBundle\TwigBundle + Symfony\Bundle\MonologBundle\MonologBundle + Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle + Doctrine\Bundle\DoctrineBundle\DoctrineBundle + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle + AppBundle\AppBundle + Symfony\Bundle\DebugBundle\DebugBundle + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle + Sensio\Bundle\DistributionBundle\SensioDistributionBundle + Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle + + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle + Symfony\Bundle\FrameworkBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle + Symfony\Bundle\SecurityBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle + Symfony\Bundle\TwigBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle + Symfony\Bundle\MonologBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle + Symfony\Bundle\SwiftmailerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle + Doctrine\Bundle\DoctrineBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle + Sensio\Bundle\FrameworkExtraBundle + + + null + /home/c2i/git/Symphony_S_A/src/AppBundle + AppBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle + Symfony\Bundle\DebugBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle + Symfony\Bundle\WebProfilerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle + Sensio\Bundle\DistributionBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle + Sensio\Bundle\GeneratorBundle + + + UTF-8 + appTestDebugProjectContainer + 127.0.0.1 + null + symfony + root + null + smtp + 127.0.0.1 + null + null + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + en + null + /_fragment + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + true + + + en + null + null + + _sf2_meta + + true + 1 + + /home/c2i/git/Symphony_S_A/app/../var/sessions/test + 0 + true + _token + null + + twig + + + /home/c2i/git/Symphony_S_A/var/cache/test/validation.php + validators + false + false + file:/home/c2i/git/Symphony_S_A/var/cache/test/profiler + -1 + /home/c2i/git/Symphony_S_A/var/cache/test/appTestDebugProjectContainer.xml + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appTestDebugProjectContainerUrlMatcher + appTestDebugProjectContainerUrlGenerator + localhost + http + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + appTestDebugProjectContainer + 80 + 443 + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + null + true + migrate + false + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + true + + + + exclusive + + event + doctrine + + + + exclusive + + event + + + + Swift_Mailer + Swift_Transport_SendmailTransport + Swift_Transport_MailTransport + Swift_Transport_FailoverTransport + Swift_Plugins_RedirectingPlugin + Swift_Plugins_ImpersonatePlugin + Swift_Plugins_MessageLogger + Swift_Plugins_AntiFloodPlugin + Swift_Transport_EsmtpTransport + Swift_Plugins_BlackholePlugin + Swift_FileSpool + Swift_MemorySpool + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector + null + null + 25 + 127.0.0.1 + null + null + null + 30 + null + null + /home/c2i/git/Symphony_S_A/var/cache/test/swiftmailer/spool/default + true + null + null + false + true + false + null + + swiftmailer.mailer.default + + default + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\ApcuCache + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ChainCache + Doctrine\Common\Cache\CouchbaseCache + Couchbase + localhost:8091 + Doctrine\Common\Cache\FilesystemCache + Doctrine\Common\Cache\PhpFileCache + Doctrine\Common\Cache\MemcacheCache + Memcache + localhost + 11211 + Doctrine\Common\Cache\MemcachedCache + Memcached + localhost + 11211 + Doctrine\Common\Cache\MongoDBCache + MongoCollection + MongoClient + localhost:27017 + Predis\Client + tcp + localhost + 6379 + Doctrine\Common\Cache\RedisCache + Redis + localhost + 6379 + Doctrine\Common\Cache\RiakCache + Riak\Bucket + Riak\Connection + Riak\BucketPropertyList + localhost + 8087 + Doctrine\Common\Cache\SQLite3Cache + SQLite3 + Doctrine\Common\Cache\VoidCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Bundle\DoctrineCacheBundle\Acl\Model\AclCache + Doctrine\DBAL\Logging\LoggerChain + Doctrine\DBAL\Logging\DebugStack + Symfony\Bridge\Doctrine\Logger\DbalLogger + Doctrine\DBAL\Configuration + Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector + Symfony\Bridge\Doctrine\ContainerAwareEventManager + Doctrine\Bundle\DoctrineBundle\ConnectionFactory + Doctrine\DBAL\Event\Listeners\MysqlSessionInit + Doctrine\DBAL\Event\Listeners\OracleSessionInit + Doctrine\Bundle\DoctrineBundle\Registry + + doctrine.orm.default_entity_manager + + default + + + doctrine.dbal.default_connection + + default + Doctrine\ORM\Configuration + Doctrine\ORM\EntityManager + Doctrine\Bundle\DoctrineBundle\ManagerConfigurator + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\MemcacheCache + localhost + 11211 + Memcache + Doctrine\Common\Cache\MemcachedCache + localhost + 11211 + Memcached + Doctrine\Common\Cache\RedisCache + localhost + 6379 + Redis + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain + Doctrine\ORM\Mapping\Driver\AnnotationDriver + Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver + Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver + Doctrine\ORM\Mapping\Driver\PHPDriver + Doctrine\ORM\Mapping\Driver\StaticPHPDriver + Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer + Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser + Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator + Symfony\Bridge\Doctrine\Validator\DoctrineInitializer + Symfony\Bridge\Doctrine\Security\User\EntityUserProvider + Doctrine\ORM\Tools\ResolveTargetEntityListener + Doctrine\ORM\Tools\AttachEntityListenersListener + Doctrine\ORM\Mapping\DefaultNamingStrategy + Doctrine\ORM\Mapping\UnderscoreNamingStrategy + Doctrine\ORM\Mapping\DefaultQuoteStrategy + Doctrine\ORM\Mapping\AnsiQuoteStrategy + Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver + Doctrine\ORM\Cache\DefaultCacheFactory + Doctrine\ORM\Cache\Region\DefaultRegion + Doctrine\ORM\Cache\Region\FileLockRegion + Doctrine\ORM\Cache\Logging\CacheLoggerChain + Doctrine\ORM\Cache\Logging\StatisticsCacheLogger + Doctrine\ORM\Cache\CacheConfiguration + Doctrine\ORM\Cache\RegionsConfiguration + true + /home/c2i/git/Symphony_S_A/var/cache/test/doctrine/orm/Proxies + Proxies + Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + Symfony\Component\Routing\Loader\AnnotationDirectoryLoader + Symfony\Component\Routing\Loader\AnnotationFileLoader + Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + bottom + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + + sensio_distribution.security_checker.command + + + + + + + + + + UTF-8 + + + + + + + + en + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/validation.php + + + + + 5TgWxoNxFc + 0 + 5lkHnNUKPaJsHkP2j3wMW+ + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/annotations.php + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + + + + + + + + + + + + + + + + + Symfony\Component\HttpFoundation\ParameterBag + Symfony\Component\HttpFoundation\HeaderBag + Symfony\Component\HttpFoundation\FileBag + Symfony\Component\HttpFoundation\ServerBag + Symfony\Component\HttpFoundation\Request + Symfony\Component\HttpKernel\Kernel + Symfony\Component\ClassLoader\ClassCollectionLoader + Symfony\Component\ClassLoader\ApcClassLoader + + + + + + + + + Symfony\Component\DependencyInjection\ContainerInterface + Symfony\Component\DependencyInjection\Container + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + + + + + + + + + + + + + + true + + inline + fragment.renderer.inline + + + hinclude + fragment.renderer.hinclude + + + hinclude + fragment.renderer.hinclude + + + esi + fragment.renderer.esi + + + ssi + fragment.renderer.ssi + + + + + + + + /_fragment + + + + + + + + null + + /_fragment + + + + + null + + + + /_fragment + + + + + null + + + + /_fragment + + + + false + false + + + 0 + false + + + + + + + 0+VBWiRPDo + 0 + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + + vCVYJJz-Tw + 0 + 5lkHnNUKPaJsHkP2j3wMW+ + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + 4uFr9CTb+t + 0 + 5lkHnNUKPaJsHkP2j3wMW+ + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + + + + + + + + + + + + + + + php + + + yml + + + xlf + xliff + + + po + + + mo + + + ts + + + csv + + + res + + + dat + + + ini + + + json + + + + /home/c2i/git/Symphony_S_A/var/cache/test/translations + true + + + + + + Symfony\Component\Translation\TranslatorInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + php + + + + yml + + + + xlf + + + + xliff + + + + po + + + + mo + + + + ts + + + + csv + + + + res + + + + dat + + + + ini + + + + json + + + + + + php + + + + twig + + + + + + php + + + + xlf + + + + po + + + + mo + + + + yml + + + + ts + + + + csv + + + + ini + + + + json + + + + res + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _sf2_meta + 0 + + + + true + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + form.type.form + form.type.choice + form.type.entity + + + + form.type_extension.form.http_foundation + form.type_extension.form.validator + form.type_extension.upload.validator + form.type_extension.csrf + form.type_extension.form.data_collector + + + form.type_extension.repeated.validator + + + form.type_extension.submit.validator + + + + form.type_guesser.validator + form.type_guesser.doctrine + + + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + + + + + + + + + validators + + + + + true + _token + + validators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test + + + + + + + + + + + validator.expression + validator.expression + validator.email + security.validator.user_password + security.validator.user_password + doctrine.orm.validator.unique + doctrine.orm.validator.unique + + + + + + + + + validators + + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml + + + + + + + loadValidatorMetadata + + + + + + + + + + + + + + false + + + + + /_fragment + + + + + + file:/home/c2i/git/Symphony_S_A/var/cache/test/profiler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + false + false + + + + + + + + + + + + + + + + + + false + + + + + null + + -1 + -1 + true + + true + + + + null + + /home/c2i/git/Symphony_S_A + /_profiler/open?file=%%f&line=%%l#line%%l + + + + + + + + + + + + kernel.controller + + data_collector.router + onKernelController + + 0 + + + response_listener + Symfony\Component\HttpKernel\EventListener\ResponseListener + + + streamed_response_listener + Symfony\Component\HttpKernel\EventListener\StreamedResponseListener + + + locale_listener + Symfony\Component\HttpKernel\EventListener\LocaleListener + + + validate_request_listener + Symfony\Component\HttpKernel\EventListener\ValidateRequestListener + + + translator_listener + Symfony\Component\HttpKernel\EventListener\TranslatorListener + + + test.session.listener + Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener + + + session_listener + Symfony\Bundle\FrameworkBundle\EventListener\SessionListener + + + session.save_listener + Symfony\Component\HttpKernel\EventListener\SaveSessionListener + + + fragment.listener + Symfony\Component\HttpKernel\EventListener\FragmentListener + + + profiler_listener + Symfony\Component\HttpKernel\EventListener\ProfilerListener + + + data_collector.request + Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector + + + debug.debug_handlers_listener + Symfony\Component\HttpKernel\EventListener\DebugHandlersListener + + + router_listener + Symfony\Component\HttpKernel\EventListener\RouterListener + + + security.firewall + Symfony\Component\Security\Http\Firewall + + + security.rememberme.response_listener + Symfony\Component\Security\Http\RememberMe\ResponseListener + + + twig.exception_listener + Symfony\Component\HttpKernel\EventListener\ExceptionListener + + + monolog.handler.console + Symfony\Bridge\Monolog\Handler\ConsoleHandler + + + swiftmailer.email_sender.listener + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + + + sensio_framework_extra.controller.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + + + sensio_framework_extra.converter.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + + + sensio_framework_extra.view.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + + + sensio_framework_extra.cache.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener + + + sensio_framework_extra.security.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener + + + debug.dump_listener + Symfony\Component\HttpKernel\EventListener\DumpListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GET + localhost + http + 80 + 443 + + + + + + + + + + + Doctrine\Common\Annotations\Reader + + + + + + false + + + + + + + 58c46f5d35aaf5.09366842 + + + + true + + + + + + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + + + + + + + + + + + + + + + + + ^/(_(profiler|wdt)|css|images|js)/ + + + null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + affirmative + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + + + dev + security.user_checker + security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d + false + + + + + + + + + + + + + + + + + + + + + 80 + 443 + + + + + + + + + + + + + + main + + + + + + + + + 58c46f5d35aaf5.09366842 + + + + + + + + + + + + + + + + + + + + + + + + + + + main + null + null + null + + false + + + + + main + security.user_checker + null + true + false + security.user.provider.concrete.in_memory + main + null + null + null + + anonymous + + + + + + + + true + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + name + /home/c2i/git/Symphony_S_A/var/cache/test/twig + UTF-8 + + + F j, Y H:i + %d days + null + + + 0 + . + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + twig.form.renderer + + + + + + + + + + + + + + + + + + + null + UTF-8 + 0 + + + + + + + + + + + + + + + + + null + UTF-8 + 1 + + + 4096 + + + + + + + + + + app + + + + test + + + true + + + + + + + + + + + + + + + + twig.runtime.httpkernel + twig.form.renderer + + + + + + + + F j, Y H:i + %d days + null + 0 + . + , + + + + + + + + + + + + + + + + twig.controller.exception:showAction + + + + + true + + + + twig.controller.exception:showAction + + + + + + + form_div_layout.html.twig + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/logs/test.log + 100 + true + null + + + + + + + null + true + + + + + + + + + + + + + + + + + + + + + + + + doctrine.dbal.default_connection + + + doctrine.orm.default_entity_manager + + default + default + + + + + pdo_mysql + 127.0.0.1 + null + symfony + root + null + UTF8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + loadClassMetadata + + + + + + + + + + + + + + + + + + + + + + + + + + + sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80 + + + + + sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80 + + + + + sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/doctrine/orm/Proxies + + + Proxies + + + true + + + Doctrine\ORM\Mapping\ClassMetadataFactory + + + Doctrine\ORM\EntityRepository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + 0 + doctrine.orm + + + + 0 + datetime + + + + + + + + + + + + + + + + + + + null + + + + + + + + + + + + + UTF-8 + null + null + + + + + + + + + 2500 + + + -1 + + + + null + UTF-8 + 0 + + + + + + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + bottom + + + + + + + + /home/c2i/git/Symphony_S_A + + + + + + + + + + true + + + + + + + + request + + + + + + + + + + + + cache + + + + + + + + + + + + translation + + + + + + + + + + + + templating + + + + + + + + + + + + profiler + + + + + + + + + + + + php + + + + + + + + + + + + event + + + + + + + + + router + + + + + + + + + + + + security + + + + + + + + + + + + doctrine + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/sessions + MOCKSESSID + + + + /home/c2i/git/Symphony_S_A/app/../var/sessions/test + + + + + + + + + Symfony\Component\Templating\EngineInterface + Symfony\Bundle\FrameworkBundle\Templating\EngineInterface + + + + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + + /home/c2i/git/Symphony_S_A/var/cache/test + true + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + appTestDebugProjectContainerUrlGenerator + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appTestDebugProjectContainerUrlMatcher + true + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/annotations.php + + + + + + + true + Doctrine\Common\Annotations\Reader + + + + + + + + + app + + + + + true + + + + + + + + Psr\Log\LoggerInterface + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views + Framework + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views + Security + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views + Twig + + + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views + Swiftmailer + + + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views + Doctrine + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views + Debug + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views + WebProfiler + + + /home/c2i/git/Symphony_S_A/app/Resources/views + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form + + + + + + + + + + + + + + + + + + + diff --git a/var/cache/test/appTestDebugProjectContainerCompiler.log b/var/cache/test/appTestDebugProjectContainerCompiler.log new file mode 100644 index 00000000..62ab73b8 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainerCompiler.log @@ -0,0 +1,447 @@ +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.app" (parent: cache.adapter.filesystem). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.system" (parent: cache.adapter.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.validator" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.serializer" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.annotations" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "assets._default_package" (parent: assets.path_package). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.simple_form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.persistent" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.simplehash" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory" (parent: security.user.provider.in_memory). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.dev" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.dev" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.main" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.context_listener.0" (parent: security.context_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.anonymous.main" (parent: security.authentication.listener.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.anonymous.main" (parent: security.authentication.provider.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.exception_listener.main" (parent: security.exception_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.main" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.eventdispatcher" (parent: swiftmailer.transport.eventdispatcher.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.null" (parent: swiftmailer.transport.null.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default" (parent: swiftmailer.mailer.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.spool.memory" (parent: swiftmailer.spool.memory.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.spool" (parent: swiftmailer.transport.spool.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.plugin.messagelogger" (parent: swiftmailer.plugin.messagelogger.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.configuration" (parent: doctrine.dbal.connection.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.profiling.default" (parent: doctrine.dbal.logger.profiling). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.chain.default" (parent: doctrine.dbal.logger.chain). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.event_manager" (parent: doctrine.dbal.connection.event_manager). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection" (parent: doctrine.dbal.connection). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_configuration" (parent: doctrine.orm.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_metadata_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_result_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_query_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_manager_configurator" (parent: doctrine.orm.manager_configurator.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_entity_manager" (parent: doctrine.orm.entity_manager.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.request" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.cache" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.translation" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.templating" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.profiler" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.php" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.event" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.router" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.security" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.doctrine" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.property_accessor"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.choice_list_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "validator.mapping.class_metadata_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "cache.default_redis_provider"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.user_checker.main"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.dbal.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.metadata.annotation_reader"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.default_entity_manager.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "sensio_framework_extra.security.expression_language"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "controller_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "argument_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.access.decision_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "locale_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session" previously pointing to "session.storage.mock_file" to "session.storage.filesystem". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.native" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.php_bridge" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "validator.builder" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router.cache_warmer" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.logout_url_generator" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.validator.user_password" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig" previously pointing to "twig.loader.filesystem" to "twig.loader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.routing" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.runtime_loader" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.email_sender.listener" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default" previously pointing to "swiftmailer.mailer.default.transport.spool" to "swiftmailer.mailer.default.transport". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.controller.listener" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.routing.loader.annot_class" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.profiler" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.router" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.password_encoder" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default.transport" previously pointing to "swiftmailer.mailer.default.spool.memory" to "swiftmailer.mailer.default.spool". +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.doctrine"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.filesystem"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.psr6"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.path_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.url_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.static_version_strategy"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.context"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.config"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory.user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.ldap"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.handler.cookie_clearing"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.form_entry_point"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.simple_success_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_preauth"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.x509"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.remote_user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.basic"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.digest"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.dao"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.ldap_bind"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.simple"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.pre_authenticated"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.exception_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.switchuser_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.persistent"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.simplehash"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "monolog.logger_prototype"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.mailer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.sendmail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.mail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.null.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.buffer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.authhandler.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.eventdispatcher.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.redirecting.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.antiflood.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.impersonate.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.messagelogger.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.spool.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.file.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.memory.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apc"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.array"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.couchbase"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.file_system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.php_file"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcached"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.mongodb"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.predis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.riak"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.sqlite3"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.void"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.wincache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.xcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.zenddata"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.profiling"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.event_manager"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.entity_manager.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.manager_configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.security.user.provider"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.cache_warmer.template_paths" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translation.warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.mapping.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "router.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.proxy_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1" to "config_cache_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.property_access" to "property_accessor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "test.client.history" to "test.client". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "test.client.cookiejar" to "test.client". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.attribute_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.flash_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1" to "form.resolved_type_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.extension" to "form.registry". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.default" to "form.choice_list_factory.property_access". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.property_access" to "form.choice_list_factory.cached". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.cached" to "form.type.choice". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.type_extension.form.request_handler" to "form.type_extension.form.http_foundation". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_generator" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_storage" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets._default_package" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.validator_factory" to "validator.builder". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1" to "validator.mapping.cache.symfony". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2" to "validator.mapping.cache.doctrine.apc". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "profiler.storage" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.time" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.memory" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.ajax" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.exception" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.logger" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.events" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.security" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.twig" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.doctrine" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.data_collector" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.config" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.event_dispatcher.parent" to "debug.event_dispatcher". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.controller_resolver.inner" to "debug.controller_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.argument_resolver.inner" to "debug.argument_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.xml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.yml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.php" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.directory" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.service" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_dir" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_file" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.resolver" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2" to "annotations.cache". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.anonymous.main" to "security.authentication.manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.expression_language" to "security.access.expression_voter". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d" to "security.firewall.map". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.retry_entry_point" to "security.channel_listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.security.access.decision_manager.inner" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.authenticated_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.simple_role_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.expression_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.dev" to "security.firewall.map.context.dev". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.exception_listener.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.channel_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.context_listener.0" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.anonymous.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.exception_listener.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.logout_url" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.security" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.profiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.trans" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.assets" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.code" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.routing" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.yaml" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug.stopwatch" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.expression" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpkernel" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.form" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.twig.doctrine_extension" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.dump" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.webprofiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.app_variable" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.runtime_loader" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.configurator.environment" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_iterator" to "twig.template_cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.engine" to "twig.form.renderer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger.chain.default" to "doctrine.dbal.default_connection.configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger" to "doctrine.dbal.logger.chain.default". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.configuration" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.event_manager" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_metadata_driver" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.naming_strategy.underscore" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.quote_strategy.default" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_configuration" to "doctrine.orm.default_entity_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_entity_manager.metadata_factory" to "doctrine.orm.default_entity_manager.property_info_extractor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.security.expression_language.default" to "sensio_framework_extra.security.listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "var_dumper.html_dumper" to "twig.extension.dump". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "web_profiler.csp.handler" to "web_profiler.controller.profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1" to "web_profiler.csp.handler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2" to "twig.extension.webprofiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_metadata_factory" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request_attribute" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user_value_resolver" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.default" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.variadic" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request_attribute"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.variadic"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.serializer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.logging"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translation.warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.flash_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.attribute_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.write_check"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.cached"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.type_extension.form.request_handler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_generator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets._default_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.engine.delegating"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.cache_warmer.template_paths"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.symfony"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.doctrine.apc"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.validator_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "profiler.storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.config"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.ajax"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.exception"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.events"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.time"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "c66c8daa4fa4dead6a562ed2c4bdb322"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.event_dispatcher.parent"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.xml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.yml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.directory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.service"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "router.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.filesystem_cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_value_resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.session_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_checker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.expression_language"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.simple_role_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.authenticated_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.expression_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.http_utils"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.retry_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.basic_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.digest_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.channel_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.handler.session"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.rememberme.token.provider.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.logout_url"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.dev"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener.0"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.exception_listener.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.app_variable"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_iterator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.native_filesystem"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.profiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.twig"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.trans"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.assets"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.code"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.routing"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.yaml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug.stopwatch"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.expression"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpkernel"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpfoundation"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.configurator.environment"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.runtime_loader"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.form"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.engine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.chrome_php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.gelf_message"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.html"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.json"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.line"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.loggly"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.normalizer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.scalar"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.wildfire"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.logstash"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_3"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.failover"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.mailinvoker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.replacementfactory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.data_collector"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.doctrine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.twig.doctrine_extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger.chain.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.event_manager"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.proxy_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.listeners.resolve_target_entity"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.underscore"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.ansi"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_metadata_driver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_entity_manager.metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_dir"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_file"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.security.expression_language.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.dump"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "var_dumper.html_dumper"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "web_profiler.csp.handler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.webprofiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.controller_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.argument_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.security.access.decision_manager.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.validator" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets.empty_version_strategy" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user.provider.concrete.in_memory" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.validator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_version_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.finder"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_map"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user.provider.concrete.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_class"; reason: unused. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "annotations.cached_reader" was defined on service(s) "annotation_reader", but was never used. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.list_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.type_extractor"? +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.type_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.list_extractor"? \ No newline at end of file diff --git a/var/cache/test/appTestDebugProjectContainerUrlMatcher.php b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php new file mode 100644 index 00000000..a924f607 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php @@ -0,0 +1,124 @@ +context = $context; + } + + public function match($pathinfo) + { + $allow = array(); + $pathinfo = rawurldecode($pathinfo); + $context = $this->context; + $request = $this->request; + + if (0 === strpos($pathinfo, '/_')) { + // _wdt + if (0 === strpos($pathinfo, '/_wdt') && preg_match('#^/_wdt/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_wdt')), array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction',)); + } + + if (0 === strpos($pathinfo, '/_profiler')) { + // _profiler_home + if (rtrim($pathinfo, '/') === '/_profiler') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', '_profiler_home'); + } + + return array ( '_controller' => 'web_profiler.controller.profiler:homeAction', '_route' => '_profiler_home',); + } + + if (0 === strpos($pathinfo, '/_profiler/search')) { + // _profiler_search + if ($pathinfo === '/_profiler/search') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchAction', '_route' => '_profiler_search',); + } + + // _profiler_search_bar + if ($pathinfo === '/_profiler/search_bar') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', '_route' => '_profiler_search_bar',); + } + + } + + // _profiler_info + if (0 === strpos($pathinfo, '/_profiler/info') && preg_match('#^/_profiler/info/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_info')), array ( '_controller' => 'web_profiler.controller.profiler:infoAction',)); + } + + // _profiler_phpinfo + if ($pathinfo === '/_profiler/phpinfo') { + return array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', '_route' => '_profiler_phpinfo',); + } + + // _profiler_search_results + if (preg_match('#^/_profiler/(?P[^/]++)/search/results$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_search_results')), array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction',)); + } + + // _profiler_open_file + if ($pathinfo === '/_profiler/open') { + return array ( '_controller' => 'web_profiler.controller.profiler:openAction', '_route' => '_profiler_open_file',); + } + + // _profiler + if (preg_match('#^/_profiler/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler')), array ( '_controller' => 'web_profiler.controller.profiler:panelAction',)); + } + + // _profiler_router + if (preg_match('#^/_profiler/(?P[^/]++)/router$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_router')), array ( '_controller' => 'web_profiler.controller.router:panelAction',)); + } + + // _profiler_exception + if (preg_match('#^/_profiler/(?P[^/]++)/exception$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception')), array ( '_controller' => 'web_profiler.controller.exception:showAction',)); + } + + // _profiler_exception_css + if (preg_match('#^/_profiler/(?P[^/]++)/exception\\.css$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception_css')), array ( '_controller' => 'web_profiler.controller.exception:cssAction',)); + } + + } + + // _twig_error_test + if (0 === strpos($pathinfo, '/_error') && preg_match('#^/_error/(?P\\d+)(?:\\.(?P<_format>[^/]++))?$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_twig_error_test')), array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html',)); + } + + } + + // homepage + if (rtrim($pathinfo, '/') === '') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', 'homepage'); + } + + return array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', '_route' => 'homepage',); + } + + // app_hello_randomname + if ($pathinfo === '/helloRandom') { + return array ( '_controller' => 'AppBundle\\Controller\\HelloController::randomNameAction', '_route' => 'app_hello_randomname',); + } + + throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException(); + } +} diff --git a/var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta new file mode 100644 index 00000000..2a4d1ece --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta @@ -0,0 +1 @@ +a:8:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/routing_dev.yml";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/profiler.xml";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/routing/errors.xml";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":57:{s:49:"/home/c2i/git/Symphony_S_A/app/config/routing.yml";}i:5;C:51:"Symfony\Component\Config\Resource\DirectoryResource":88:{a:2:{i:0;s:51:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller";i:1;s:8:"/\.php$/";}}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/DefaultController.php";}i:7;C:46:"Symfony\Component\Config\Resource\FileResource":79:{s:71:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/HelloController.php";}} \ No newline at end of file diff --git a/var/cache/test/classes.map b/var/cache/test/classes.map new file mode 100644 index 00000000..8a935d70 --- /dev/null +++ b/var/cache/test/classes.map @@ -0,0 +1,100 @@ + 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener', + 1 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage', + 2 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage', + 3 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', + 4 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy', + 5 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy', + 6 => 'Symfony\\Component\\HttpFoundation\\Session\\Session', + 7 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockFileSessionStorage', + 8 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\GlobalVariables', + 9 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateReference', + 10 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateNameParser', + 11 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\TemplateLocator', + 12 => 'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', + 13 => 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', + 14 => 'Symfony\\Component\\Cache\\CacheItem', + 15 => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 16 => 'Symfony\\Component\\Routing\\RequestContext', + 17 => 'Symfony\\Component\\Routing\\Router', + 18 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 19 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\Router', + 20 => 'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter', + 21 => 'Symfony\\Component\\Cache\\DoctrineProvider', + 22 => 'Symfony\\Component\\Config\\ConfigCache', + 23 => 'Symfony\\Component\\Config\\FileLocator', + 24 => 'Symfony\\Component\\Debug\\ErrorHandler', + 25 => 'Symfony\\Component\\DependencyInjection\\ContainerAwareInterface', + 26 => 'Symfony\\Component\\DependencyInjection\\Container', + 27 => 'Symfony\\Component\\EventDispatcher\\Event', + 28 => 'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher', + 29 => 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener', + 30 => 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener', + 31 => 'Symfony\\Component\\HttpKernel\\Bundle\\Bundle', + 32 => 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver', + 33 => 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver', + 34 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadata', + 35 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactory', + 36 => 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent', + 37 => 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent', + 38 => 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent', + 39 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent', + 40 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent', + 41 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent', + 42 => 'Symfony\\Component\\HttpKernel\\HttpKernel', + 43 => 'Symfony\\Component\\HttpKernel\\KernelEvents', + 44 => 'Symfony\\Component\\HttpKernel\\Config\\FileLocator', + 45 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerNameParser', + 46 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerResolver', + 47 => 'Symfony\\Component\\Security\\Http\\Firewall', + 48 => 'Symfony\\Component\\Security\\Core\\User\\UserProviderInterface', + 49 => 'Symfony\\Component\\Security\\Core\\Authentication\\AuthenticationProviderManager', + 50 => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage', + 51 => 'Symfony\\Component\\Security\\Core\\Authorization\\AccessDecisionManager', + 52 => 'Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker', + 53 => 'Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface', + 54 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallConfig', + 55 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallMap', + 56 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallContext', + 57 => 'Symfony\\Component\\HttpFoundation\\RequestMatcher', + 58 => 'Twig_Environment', + 59 => 'Twig_Extension', + 60 => 'Twig_Extension_Core', + 61 => 'Twig_Extension_Escaper', + 62 => 'Twig_Extension_Optimizer', + 63 => 'Twig_LoaderInterface', + 64 => 'Twig_Markup', + 65 => 'Twig_Template', + 66 => 'Monolog\\Formatter\\FormatterInterface', + 67 => 'Monolog\\Formatter\\LineFormatter', + 68 => 'Monolog\\Handler\\HandlerInterface', + 69 => 'Monolog\\Handler\\AbstractHandler', + 70 => 'Monolog\\Handler\\AbstractProcessingHandler', + 71 => 'Monolog\\Handler\\StreamHandler', + 72 => 'Monolog\\Handler\\FingersCrossedHandler', + 73 => 'Monolog\\Handler\\FilterHandler', + 74 => 'Monolog\\Handler\\TestHandler', + 75 => 'Monolog\\Logger', + 76 => 'Symfony\\Bridge\\Monolog\\Logger', + 77 => 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface', + 78 => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy', + 79 => 'Doctrine\\Common\\Annotations\\DocLexer', + 80 => 'Doctrine\\Common\\Annotations\\FileCacheReader', + 81 => 'Doctrine\\Common\\Annotations\\PhpParser', + 82 => 'Doctrine\\Common\\Annotations\\Reader', + 83 => 'Doctrine\\Common\\Lexer', + 84 => 'Doctrine\\Common\\Persistence\\ConnectionRegistry', + 85 => 'Doctrine\\Common\\Persistence\\Proxy', + 86 => 'Doctrine\\Common\\Util\\ClassUtils', + 87 => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 88 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 89 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 90 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 91 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 92 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface', + 93 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 94 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 95 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener', + 96 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener', + 97 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ConfigurationAnnotation', +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- b/var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- new file mode 100644 index 00000000..de82f06f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489324317, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI b/var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu b/var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 b/var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar b/var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar new file mode 100644 index 00000000..de82f06f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489324317, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE b/var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A b/var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd b/var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI b/var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ b/var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U b/var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt b/var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 b/var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr b/var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm b/var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k b/var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV b/var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF b/var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK b/var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol b/var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx b/var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X b/var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X new file mode 100644 index 00000000..37b0bc6d --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 'a:1:{i:0;O:54:"Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route":10:{s:10:"' . "\0" . '*' . "\0" . 'service";N;s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'path";s:1:"/";s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'name";s:8:"homepage";s:56:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'requirements";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'options";a:0:{}s:52:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'defaults";a:0:{}s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'host";N;s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'methods";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'schemes";a:0:{}s:53:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'condition";N;}}', +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh b/var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX b/var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 b/var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S b/var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX b/var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG b/var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj b/var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ b/var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N b/var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 b/var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe b/var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD b/var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU b/var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J b/var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a b/var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG b/var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy b/var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x b/var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x new file mode 100644 index 00000000..de82f06f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489324317, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e b/var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr b/var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr new file mode 100644 index 00000000..01412ccd --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 'a:1:{i:0;O:54:"Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route":10:{s:10:"' . "\0" . '*' . "\0" . 'service";N;s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'path";s:12:"/helloRandom";s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'name";N;s:56:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'requirements";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'options";a:0:{}s:52:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'defaults";a:0:{}s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'host";N;s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'methods";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'schemes";a:0:{}s:53:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'condition";N;}}', +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 b/var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk b/var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum b/var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi b/var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE b/var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul b/var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA b/var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 b/var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 b/var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y b/var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E b/var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n b/var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 b/var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 new file mode 100644 index 00000000..42b0703b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 b/var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 new file mode 100644 index 00000000..a0a9df54 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php b/var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php new file mode 100644 index 00000000..fb70a0da --- /dev/null +++ b/var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php @@ -0,0 +1,173 @@ +parent = false; + + $this->blocks = array( + 'title' => array($this, 'block_title'), + 'stylesheets' => array($this, 'block_stylesheets'), + 'body' => array($this, 'block_body'), + 'javascripts' => array($this, 'block_javascripts'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee->enter($__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + $__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8->enter($__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + // line 1 + echo " + + + + "; + // line 5 + $this->displayBlock('title', $context, $blocks); + echo " + "; + // line 6 + $this->displayBlock('stylesheets', $context, $blocks); + // line 7 + echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\AssetExtension')->getAssetUrl("favicon.ico"), "html", null, true); + echo "\" /> + + + "; + // line 10 + $this->displayBlock('body', $context, $blocks); + // line 11 + echo " "; + $this->displayBlock('javascripts', $context, $blocks); + // line 12 + echo " + +"; + + $__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee->leave($__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee_prof); + + + $__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8->leave($__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8_prof); + + } + + // line 5 + public function block_title($context, array $blocks = array()) + { + $__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781->enter($__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af->enter($__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + echo "Welcome!"; + + $__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af->leave($__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af_prof); + + + $__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781->leave($__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781_prof); + + } + + // line 6 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404->enter($__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37->enter($__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + + $__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37->leave($__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37_prof); + + + $__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404->leave($__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404_prof); + + } + + // line 10 + public function block_body($context, array $blocks = array()) + { + $__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661->enter($__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74->enter($__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + + $__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74->leave($__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74_prof); + + + $__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661->leave($__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661_prof); + + } + + // line 11 + public function block_javascripts($context, array $blocks = array()) + { + $__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae->enter($__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + $__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe->enter($__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + + $__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe->leave($__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe_prof); + + + $__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae->leave($__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae_prof); + + } + + public function getTemplateName() + { + return "base.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 117 => 11, 100 => 10, 83 => 6, 65 => 5, 53 => 12, 50 => 11, 48 => 10, 41 => 7, 39 => 6, 35 => 5, 29 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + + +", "base.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/base.html.twig"); + } +} diff --git a/var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php b/var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php new file mode 100644 index 00000000..7b304976 --- /dev/null +++ b/var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php @@ -0,0 +1,259 @@ +parent = $this->loadTemplate("base.html.twig", "default/index.html.twig", 1); + $this->blocks = array( + 'body' => array($this, 'block_body'), + 'stylesheets' => array($this, 'block_stylesheets'), + ); + } + + protected function doGetParent(array $context) + { + return "base.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc->enter($__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f->enter($__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc->leave($__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc_prof); + + + $__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f->leave($__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f_prof); + + } + + // line 3 + public function block_body($context, array $blocks = array()) + { + $__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695->enter($__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743->enter($__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 4 + echo "
    +
    +
    +

    Welcome to Symfony "; + // line 7 + echo twig_escape_filter($this->env, twig_constant("Symfony\\Component\\HttpKernel\\Kernel::VERSION"), "html", null, true); + echo "

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + "; + // line 15 + echo twig_escape_filter($this->env, (isset($context["base_dir"]) ? $context["base_dir"] : $this->getContext($context, "base_dir")), "html", null, true); + echo " +

    +
    + + + +
    +
    +"; + + $__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743->leave($__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743_prof); + + + $__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695->leave($__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695_prof); + + } + + // line 49 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899->enter($__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827->enter($__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + // line 50 + echo " +"; + + $__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827->leave($__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827_prof); + + + $__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899->leave($__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899_prof); + + } + + public function getTemplateName() + { + return "default/index.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 121 => 50, 112 => 49, 93 => 39, 66 => 15, 55 => 7, 50 => 4, 41 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends 'base.html.twig' %} + +{% block body %} +
    +
    +
    +

    Welcome to Symfony {{ constant('Symfony\\\\Component\\\\HttpKernel\\\\Kernel::VERSION') }}

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + {{ base_dir }} +

    +
    + +
    +

    What's next?

    +

    + + + + + Read the documentation to learn + + How to create your first page in Symfony + +

    +
    + +
    +
    +{% endblock %} + +{% block stylesheets %} + +{% endblock %} +", "default/index.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/default/index.html.twig"); + } +} diff --git a/var/logs/dev.log b/var/logs/dev.log new file mode 100644 index 00000000..bff3be34 --- /dev/null +++ b/var/logs/dev.log @@ -0,0 +1,10 @@ +[2017-03-11 22:43:09] php.DEBUG: Warning: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":2,\"file\":\"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php\",\"line\":61})"} [] +[2017-03-11 22:43:26] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://127.0.0.1:8000/","method":"GET"} [] +[2017-03-11 22:43:26] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-11 22:43:26] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"e697f4","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/e697f4","method":"GET"} [] +[2017-03-12 14:02:07] php.DEBUG: Warning: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":2,\"file\":\"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php\",\"line\":61})"} [] +[2017-03-12 14:02:27] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://127.0.0.1:8000/","method":"GET"} [] +[2017-03-12 14:02:27] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-12 14:02:28] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"246423","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/246423","method":"GET"} [] +[2017-03-12 14:03:03] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /homepage"" at /home/c2i/git/Symphony_S_A/var/cache/dev/classes.php line 3486 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /homepage\" at /home/c2i/git/Symphony_S_A/var/cache/dev/classes.php:3486, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): at /home/c2i/git/Symphony_S_A/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php:117)"} [] +[2017-03-12 14:03:04] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"dcf4d9","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/dcf4d9","method":"GET"} [] diff --git a/var/logs/test.log b/var/logs/test.log new file mode 100644 index 00000000..aa2dc9e5 --- /dev/null +++ b/var/logs/test.log @@ -0,0 +1,6 @@ +[2017-03-11 21:42:53] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://localhost/","method":"GET"} [] +[2017-03-11 21:42:53] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-12 13:11:57] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://localhost/","method":"GET"} [] +[2017-03-12 13:11:57] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-12 13:11:57] request.INFO: Matched route "app_hello_randomname". {"route":"app_hello_randomname","route_parameters":{"_controller":"AppBundle\\Controller\\HelloController::randomNameAction","_route":"app_hello_randomname"},"request_uri":"http://localhost/helloRandom","method":"GET"} [] +[2017-03-12 13:11:57] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] diff --git a/vendor/bin/phpunit b/vendor/bin/phpunit new file mode 120000 index 00000000..2c489303 --- /dev/null +++ b/vendor/bin/phpunit @@ -0,0 +1 @@ +../phpunit/phpunit/phpunit \ No newline at end of file diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 2414d2c8..71293df7 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -13,10 +13,472 @@ return array( 'Collator' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Collator.php', 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php', + 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', + 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', + 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', 'IntlDateFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/IntlDateFormatter.php', 'Locale' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Locale.php', 'NumberFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/NumberFormatter.php', + 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', + 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', + 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', + 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', + 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', + 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', + 'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', + 'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', + 'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php', + 'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php', + 'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php', + 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php', + 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php', + 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit_Framework_Constraint_DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', + 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', + 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit_Framework_Constraint_IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', + 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit_Framework_Constraint_IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', + 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit_Framework_Constraint_IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', + 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit_Framework_Constraint_IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', + 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit_Framework_Constraint_IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', + 'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', + 'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php', + 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php', + 'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', + 'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', + 'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', + 'PHPUnit_Framework_CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', + 'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php', + 'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit_Framework_MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', + 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', + 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', + 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', + 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', + 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', + 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', + 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', + 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', + 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', + 'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', + 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit_Framework_WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php', + 'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php', + 'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', + 'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', + 'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php', + 'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', + 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php', + 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php', + 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php', + 'PHPUnit_Util_Log_TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php', + 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php', + 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php', + 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php', + 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php', + 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php', + 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', + 'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', + 'PHPUnit_Util_TestDox_ResultPrinter_XML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php', + 'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', + 'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php', + 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', + 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', + 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/HHVM.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', + 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', + 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', + 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', + 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', + 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', + 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php', + 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', + 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', + 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php', + 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php', + 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php', + 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', 'SqlFormatter' => $vendorDir . '/jdorn/sql-formatter/lib/SqlFormatter.php', + 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 76086855..12864c40 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -14,5 +14,5 @@ return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '6a47392539ca2329373e0d33e1dba053' => $vendorDir . '/symfony/polyfill-intl-icu/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php', - '719971e375036615a0685b6fb054583d' => $vendorDir . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', + 'cc1fec49e4d0b5c32b8f398cfd00473d' => $vendorDir . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', ); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 1107e0d6..be0d07ae 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -8,6 +8,7 @@ $baseDir = dirname($vendorDir); return array( 'Twig_' => array($vendorDir . '/twig/twig/lib'), 'SensioLabs\\Security' => array($vendorDir . '/sensiolabs/security-checker'), + 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'), 'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'), 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'), 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'), diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index cc661977..dabacffa 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,6 +6,8 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'), + 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), 'Tests\\' => array($baseDir . '/tests'), 'Symfony\\Polyfill\\Util\\' => array($vendorDir . '/symfony/polyfill-util'), 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'), @@ -33,5 +35,6 @@ return array( 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/common/lib/Doctrine/Common'), 'Doctrine\\Bundle\\DoctrineCacheBundle\\' => array($vendorDir . '/doctrine/doctrine-cache-bundle'), 'Doctrine\\Bundle\\DoctrineBundle\\' => array($vendorDir . '/doctrine/doctrine-bundle'), + 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), '' => array($baseDir . '/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 4a50311c..44c09a8f 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -15,10 +15,18 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '6a47392539ca2329373e0d33e1dba053' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php', - '719971e375036615a0685b6fb054583d' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', + 'cc1fec49e4d0b5c32b8f398cfd00473d' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', ); public static $prefixLengthsPsr4 = array ( + 'p' => + array ( + 'phpDocumentor\\Reflection\\' => 25, + ), + 'W' => + array ( + 'Webmozart\\Assert\\' => 17, + ), 'T' => array ( 'Tests\\' => 6, @@ -63,10 +71,21 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 'Doctrine\\Common\\' => 16, 'Doctrine\\Bundle\\DoctrineCacheBundle\\' => 36, 'Doctrine\\Bundle\\DoctrineBundle\\' => 31, + 'DeepCopy\\' => 9, ), ); public static $prefixDirsPsr4 = array ( + 'phpDocumentor\\Reflection\\' => + array ( + 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + ), + 'Webmozart\\Assert\\' => + array ( + 0 => __DIR__ . '/..' . '/webmozart/assert/src', + ), 'Tests\\' => array ( 0 => __DIR__ . '/../..' . '/tests', @@ -175,6 +194,10 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 array ( 0 => __DIR__ . '/..' . '/doctrine/doctrine-bundle', ), + 'DeepCopy\\' => + array ( + 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', + ), ); public static $fallbackDirsPsr4 = array ( @@ -196,6 +219,13 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 0 => __DIR__ . '/..' . '/sensiolabs/security-checker', ), ), + 'P' => + array ( + 'Prophecy\\' => + array ( + 0 => __DIR__ . '/..' . '/phpspec/prophecy/src', + ), + ), 'D' => array ( 'Doctrine\\ORM\\' => @@ -233,11 +263,473 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 'Collator' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Collator.php', 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php', + 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', + 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', + 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', 'IntlDateFormatter' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/IntlDateFormatter.php', 'Locale' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Locale.php', 'NumberFormatter' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/NumberFormatter.php', + 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', + 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', + 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', + 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', + 'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', + 'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', + 'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', + 'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', + 'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php', + 'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php', + 'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php', + 'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php', + 'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php', + 'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit_Framework_Constraint_DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', + 'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', + 'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit_Framework_Constraint_IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', + 'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit_Framework_Constraint_IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', + 'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit_Framework_Constraint_IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', + 'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit_Framework_Constraint_IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', + 'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit_Framework_Constraint_IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', + 'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', + 'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php', + 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php', + 'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', + 'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', + 'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', + 'PHPUnit_Framework_CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', + 'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php', + 'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit_Framework_MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', + 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', + 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', + 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', + 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', + 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', + 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', + 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', + 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', + 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', + 'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', + 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit_Framework_WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php', + 'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php', + 'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', + 'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', + 'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php', + 'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', + 'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php', + 'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php', + 'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php', + 'PHPUnit_Util_Log_TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php', + 'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php', + 'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php', + 'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php', + 'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php', + 'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php', + 'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', + 'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', + 'PHPUnit_Util_TestDox_ResultPrinter_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php', + 'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', + 'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php', + 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', + 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', + 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/HHVM.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', + 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', + 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', + 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', + 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', + 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', + 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php', + 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', + 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', + 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php', + 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php', + 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php', + 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', 'SqlFormatter' => __DIR__ . '/..' . '/jdorn/sql-formatter/lib/SqlFormatter.php', + 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', ); diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index c4781264..ff2e580f 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2148,5 +2148,1255 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "time": "2016-10-03T07:35:21+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "time": "2015-07-28T20:34:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2016-11-19T07:33:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "time": "2017-02-18T15:18:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "version_normalized": "1.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "time": "2015-10-12T03:26:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ] + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "time": "2016-11-19T08:54:04+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ] + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "time": "2016-11-26T07:53:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ] + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "version_normalized": "1.4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "time": "2015-12-08T07:14:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ] + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "version_normalized": "1.2.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2017-01-29T09:50:25+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ] + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "version_normalized": "1.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2015-06-21T13:50:34+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ] + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "version_normalized": "3.4.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "time": "2016-12-08T20:27:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ] + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "version_normalized": "1.0.9.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "time": "2017-02-26T11:10:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ] + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "version_normalized": "1.4.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2016-10-03T07:40:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ] + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "time": "2017-03-04T06:30:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.11", + "version_normalized": "1.4.11.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "time": "2017-02-27T10:12:30+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ] + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.7", + "version_normalized": "4.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/09e2277d14ea467e5a984010f501343ef29ffc69", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "time": "2017-03-01T09:12:17+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ] + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "time": "2016-11-23T20:04:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ] + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "time": "2015-12-27T11:43:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ] + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "version_normalized": "0.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "time": "2016-11-25T06:54:22+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ] + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "version_normalized": "3.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "time": "2016-09-30T07:12:33+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock." + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "time": "2017-03-02T20:05:34+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ] + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.0", + "version_normalized": "1.6.0.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "time": "2017-01-26T22:05:40+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ] + }, + { + "name": "phpunit/phpunit", + "version": "5.7.15", + "version_normalized": "5.7.15.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b99112aecc01f62acf3d81a3f59646700a1849e5", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "time": "2017-03-02T15:22:43+00:00", + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ] } ] diff --git a/vendor/myclabs/deep-copy/.gitattributes b/vendor/myclabs/deep-copy/.gitattributes new file mode 100755 index 00000000..8018068b --- /dev/null +++ b/vendor/myclabs/deep-copy/.gitattributes @@ -0,0 +1,7 @@ +# Auto detect text files and perform LF normalization +* text=auto + +*.png binary + +tests/ export-ignore +phpunit.xml.dist export-ignore diff --git a/vendor/myclabs/deep-copy/.gitignore b/vendor/myclabs/deep-copy/.gitignore new file mode 100755 index 00000000..93541710 --- /dev/null +++ b/vendor/myclabs/deep-copy/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +.idea/* + +vendor/* +composer.phar +composer.lock diff --git a/vendor/myclabs/deep-copy/.travis.yml b/vendor/myclabs/deep-copy/.travis.yml new file mode 100755 index 00000000..347c6e75 --- /dev/null +++ b/vendor/myclabs/deep-copy/.travis.yml @@ -0,0 +1,37 @@ +language: php + +php: + - '5.5' + - '5.6' + - '7.0' + - '7.1' + - nightly + - hhvm + +matrix: + fast_finish: true + include: + - php: '5.4' + env: COMPOSER_FLAGS="--prefer-lowest" + allow_failures: + - php: nightly + - php: hhvm + +before_install: + - | + if [ "$TRAVIS_PHP_VERSION" = "nightly" ] || "$TRAVIS_PHP_VERSION" = "7.1" ]; then + COMPOSER_FLAGS="$COMPOSER_FLAGS --ignore-platform-reqs" + fi; + +install: + - composer update -n --prefer-dist $COMPOSER_FLAGS + - wget https://github.com/satooshi/php-coveralls/releases/download/v1.0.0/coveralls.phar + +before_script: + - mkdir -p build/logs + +script: + - vendor/bin/phpunit --coverage-clover build/logs/clover.xml + +after_script: + - php coveralls.phar -v diff --git a/vendor/myclabs/deep-copy/LICENSE b/vendor/myclabs/deep-copy/LICENSE new file mode 100644 index 00000000..c3e83500 --- /dev/null +++ b/vendor/myclabs/deep-copy/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 My C-Sense + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/myclabs/deep-copy/README.md b/vendor/myclabs/deep-copy/README.md new file mode 100644 index 00000000..f2592046 --- /dev/null +++ b/vendor/myclabs/deep-copy/README.md @@ -0,0 +1,290 @@ +# DeepCopy + +DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph. + +[![Build Status](https://travis-ci.org/myclabs/DeepCopy.png?branch=master)](https://travis-ci.org/myclabs/DeepCopy) [![Coverage Status](https://coveralls.io/repos/myclabs/DeepCopy/badge.png?branch=master)](https://coveralls.io/r/myclabs/DeepCopy?branch=master) [![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/myclabs/DeepCopy/badges/quality-score.png?s=2747100c19b275f93a777e3297c6c12d1b68b934)](https://scrutinizer-ci.com/g/myclabs/DeepCopy/) +[![Total Downloads](https://poser.pugx.org/myclabs/deep-copy/downloads.svg)](https://packagist.org/packages/myclabs/deep-copy) + + +## Table of Contents + +1. [How](#how) +1. [Why](#why) + 1. [Using simply `clone`](#using-simply-clone) + 1. [Overridding `__clone()`](#overridding-__clone) + 1. [With `DeepCopy`](#with-deepcopy) +1. [How it works](#how-it-works) +1. [Going further](#going-further) + 1. [Matchers](#matchers) + 1. [Property name](#property-name) + 1. [Specific property](#specific-property) + 1. [Type](#type) + 1. [Filters](#filters) + 1. [`SetNullFilter`](#setnullfilter) + 1. [`KeepFilter`](#keepfilter) + 1. [`ReplaceFilter`](#replacefilter) + 1. [`ShallowCopyFilter`](#doctrinecollectionfilter) + 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter) + 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter) +1. [Contributing](#contributing) + 1. [Tests](#tests) + +## How? + +Install with Composer: + +```json +composer require myclabs/deep-copy +``` + +Use simply: + +```php +use DeepCopy\DeepCopy; + +$deepCopy = new DeepCopy(); +$myCopy = $deepCopy->copy($myObject); +``` + + +## Why? + +- How do you create copies of your objects? + +```php +$myCopy = clone $myObject; +``` + +- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)? + +You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior yourself. + +- But how do you handle **cycles** in the association graph? + +Now you're in for a big mess :( + +![association graph](doc/graph.png) + +### Using simply `clone` + +![Using clone](doc/clone.png) + +### Overridding `__clone()` + +![Overridding __clone](doc/deep-clone.png) + +### With `DeepCopy` + +![With DeepCopy](doc/deep-copy.png) + +## How it works + +DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it keeps a hash map of all instances and thus preserves the object graph. + +## Going further + +You can add filters to customize the copy process. + +The method to add a filter is `$deepCopy->addFilter($filter, $matcher)`, +with `$filter` implementing `DeepCopy\Filter\Filter` +and `$matcher` implementing `DeepCopy\Matcher\Matcher`. + +We provide some generic filters and matchers. + +### Matchers + + - `DeepCopy\Matcher` applies on a object attribute. + - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements. + +#### Property name + +The `PropertyNameMatcher` will match a property by its name: + +```php +use DeepCopy\Matcher\PropertyNameMatcher; + +$matcher = new PropertyNameMatcher('id'); +// will apply a filter to any property of any objects named "id" +``` + +#### Specific property + +The `PropertyMatcher` will match a specific property of a specific class: + +```php +use DeepCopy\Matcher\PropertyMatcher; + +$matcher = new PropertyMatcher('MyClass', 'id'); +// will apply a filter to the property "id" of any objects of the class "MyClass" +``` + +#### Type + +The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of [gettype()](http://php.net/manual/en/function.gettype.php) function): + +```php +use DeepCopy\TypeMatcher\TypeMatcher; + +$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection'); +// will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection +``` + +### Filters + + - `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher`. + - `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher`. + +#### `SetNullFilter` + +Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have any ID: + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\SetNullFilter; +use DeepCopy\Matcher\PropertyNameMatcher; + +$myObject = MyClass::load(123); +echo $myObject->id; // 123 + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new SetNullFilter(), new PropertyNameMatcher('id')); +$myCopy = $deepCopy->copy($myObject); + +echo $myCopy->id; // null +``` + +#### `KeepFilter` + +If you want a property to remain untouched (for example, an association to an object): + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\KeepFilter; +use DeepCopy\Matcher\PropertyMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category')); +$myCopy = $deepCopy->copy($myObject); + +// $myCopy->category has not been touched +``` + +#### `ReplaceFilter` + + 1. If you want to replace the value of a property: + + ```php + use DeepCopy\DeepCopy; + use DeepCopy\Filter\ReplaceFilter; + use DeepCopy\Matcher\PropertyMatcher; + + $deepCopy = new DeepCopy(); + $callback = function ($currentValue) { + return $currentValue . ' (copy)' + }; + $deepCopy->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title')); + $myCopy = $deepCopy->copy($myObject); + + // $myCopy->title will contain the data returned by the callback, e.g. 'The title (copy)' + ``` + + 2. If you want to replace whole element: + + ```php + use DeepCopy\DeepCopy; + use DeepCopy\TypeFilter\ReplaceFilter; + use DeepCopy\TypeMatcher\TypeMatcher; + + $deepCopy = new DeepCopy(); + $callback = function (MyClass $myClass) { + return get_class($myClass); + }; + $deepCopy->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass')); + $myCopy = $deepCopy->copy(array(new MyClass, 'some string', new MyClass)); + + // $myCopy will contain ['MyClass', 'some stirng', 'MyClass'] + ``` + + +The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable. + +#### `ShallowCopyFilter` + +Stop *DeepCopy* from recursively copying element, using standard `clone` instead: + +```php +use DeepCopy\DeepCopy; +use DeepCopy\TypeFilter\ShallowCopyFilter; +use DeepCopy\TypeMatcher\TypeMatcher; +use Mockery as m; + +$this->deepCopy = new DeepCopy(); +$this->deepCopy->addTypeFilter( + new ShallowCopyFilter, + new TypeMatcher(m\MockInterface::class) +); + +$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class)); +// all mocks will be just cloned, not deep-copied +``` + +#### `DoctrineCollectionFilter` + +If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`: + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter; +use DeepCopy\Matcher\PropertyTypeMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection')); +$myCopy = $deepCopy->copy($myObject); +``` + +#### `DoctrineEmptyCollectionFilter` + +If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the `DoctrineEmptyCollectionFilter` + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter; +use DeepCopy\Matcher\PropertyMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty')); +$myCopy = $deepCopy->copy($myObject); + +// $myCopy->myProperty will return an empty collection +``` + +#### `DoctrineProxyFilter` + +If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a +Doctrine proxy class (...\\\_\_CG\_\_\Proxy). +You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class. +**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded before other filters are applied!** + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\Doctrine\DoctrineProxyFilter; +use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new DoctrineProxyFilter(), new DoctrineProxyMatcher()); +$myCopy = $deepCopy->copy($myObject); + +// $myCopy should now contain a clone of all entities, including those that were not yet fully loaded. +``` + +## Contributing + +DeepCopy is distributed under the MIT license. + +### Tests + +Running the tests is simple: + +```php +phpunit +``` diff --git a/vendor/myclabs/deep-copy/composer.json b/vendor/myclabs/deep-copy/composer.json new file mode 100644 index 00000000..d20287ab --- /dev/null +++ b/vendor/myclabs/deep-copy/composer.json @@ -0,0 +1,21 @@ +{ + "name": "myclabs/deep-copy", + "type": "library", + "description": "Create deep copies (clones) of your objects", + "keywords": ["clone", "copy", "duplicate", "object", "object graph"], + "homepage": "https://github.com/myclabs/DeepCopy", + "license": "MIT", + "autoload": { + "psr-4": { "DeepCopy\\": "src/DeepCopy/" } + }, + "autoload-dev": { + "psr-4": { "DeepCopyTest\\": "tests/DeepCopyTest/" } + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + } +} diff --git a/vendor/myclabs/deep-copy/doc/clone.png b/vendor/myclabs/deep-copy/doc/clone.png new file mode 100644 index 0000000000000000000000000000000000000000..376afd491257d44a8c3772b0b7b0bd7b6c747086 GIT binary patch literal 12380 zcmdsddpy)z_y3H+sH*yKN#S8~ckxM4S7|e)t&gnvlA(!El zawkGAW5_8nLd1-_j>}+%k;{y`-yS;8d7kI{{XOUTe*gRZ{zxy|XYalCTI>B@Ywxvw zHa9)D>APLuK_HM#7ta4+0fE4X5D4_z25~SlvHAB^@E;Usaqbi(w^4o+{341qG%OZc3(!$BZYHNt<;TJLmM2t?!Sg&z#90?^|W+?cY>oXut0Db^h_j9z$A`*Tvs{+ZgKAZ)Bjk7k#vBZ^VbaA9o+cZo76# z^Sk}cFKI-W2~JO8C2XM*)8T^j7{7EmE3^HnOT(*VWkO+A*44{4ZT6fbo_8bis-r)U zsmdoD1%Z&E65uEhm<%8M6yL{%LLidoSuhA>XH-5M0@2*#EDeD;8N5Y+3FQ9=C)7qI zFLSY3QX3(|=3Vd%{=21cRD_j>W@a$7O5S~OPg`XiHNQ5>$a22UEacad2TTxTWISv^ z1!ti17I9j|WT;ku<<(fqQ37PxRca)w0Xn{cD0v~8msLM-bF?Mxa`0rBLeR`75%Rbe zeCF~n882M^X?7+_O2}YPou= z^G%r6H+@UP+BPMQM%Skx4H>mar-Vg8C-Y>k%z`_{rSaPoM8eXGS$+w9`RUo$xT<14PholFT;BZ2mzOzJSgC90ST5(&GJ>WP`W&o+mpK^yfI4He zFDtGPHg}IccklAEN=|NhCbe*V1@E;LB6X)eR2L@CX1B3l^v=A{b}a1K?caUVHDO6V z4^0dFh{wesQ+7K??wxHP)Xr%Np1@@>w9u2ccgS}K3wpB7E>BVD6$?n?HCLZK4!_~C zx>8(1^PDBvO$)qN`QB~g77Ftp&RKW8a8LEg{ZkuXA9x?id|{$%LMX$Xx1_U^iJ4R; zaZMj3NGG{PL0<5y)=G3rF5OpE>|O`5C8T0N&e6f}~0H?wQJY#nYHFZa{0o5)SgjC9Rhb7DO6 z-EmNejM<|?+4VLN6U0lVgBsPpAeFcclBmc+g5d)dG#@>ZR2>ybp(I5jP84G>M_^4`<-V=4}Q?)o3?;5 zdg%f!{Ww_X7XD6)>nf%DLnMx&rua*2{nbhD33d0`yZ|2yVRKsj zHE(qxuT3d2Lr}p+wT%xS_@<9Epbxt@%fIiS2ejSqn|rT~E;Pv<&^RZ4MVmYQWWRJ( zVqhH1exi@L+EK6C?TjzgUVT5w1u|3i5J(YMMBJfu90tcU#&#U zm@bf-{^TRYNZpp;?Ea=xV$H+BAAco1?7X{f{f`TK+h8mTFbs@-#|^-FHo*$+b1-cI^#|Twn-vq@?^sP?ouTJ-8m<5lG;TUNtMV?o_d3%x9RD#v`fo?la z`xWn;kn!F%zEWe8kpdnEyO~HEt6gVc;2*ObT6>RwU+{BeA8B>DZM>b6;~mTyo6e=L zEQFDknWP*qrsbMz4#{gWSAxre$A%NU_1^dn8Toa!1Ct7Is|LV+jP~1rn+DO&FTp;T zUr0symcEzkos1a6qt-=kgyOh;%&=a&6@9fo-BUqz{FUBxe3Sh35nd2mC#$PXg>tvs zm!X!`^zl&zgQ8(mGM=_(On0d`msRw}Ku*_;^*7JVtn;>SJ)2~#J5kQ79K+YP1wPYf zG(JDGCT^R2K4*Dxv2S%nQ2}$R+4!5sWbLP4$WbWOF?)vA_hk_anL<9ghjd~t3Y5?t zmj57`%6QI-&`ZuMu2JI{Ub(F;%O>*Zl02$H&`Zqf;+wA-{4kswxLO%v&C8BSs0>;f zP@oU5BF}x>?jC?^4}qPO^`7`Bsb89MBsV9 zwKM-2-=EhBE(^8r=Lm@SF{(CJ@PFC(X%OZwN76DJDue9)qb%!sNUwUM;*zR_Sx8WOml#9fdYZ9}mM{HY0YnN_oBc5)sD9qp$Q!m<62j zOK6`3`M~ld@y7CUJZxAQIHG-6hhJJK+P}vSZbqoL%v9i|PSJ*l4N@8WuZ|SJK_FpF z@w7T+$xky2Y>Ada2;S80p0H%9c74|KpD^0+Q7|7@tNS8>*Cem0?;J_{+R3csKiyxL zv#{K^x_o)-@*;h8aqKwiGY7M}&?X=-)Jm*M;tL^8>ewXM$|!YZw4dMQt>2B&8<1@} zF?RZ@A{UjZmk9G7&PLjq;uRPr@=JkfmeK4&1E&@a$WlESX7n z{RDFDaS396D)$E?#l|f)pIou=R5eQZn;%5UrTaeb%XaH4t2mOp*^9-t7y24Q`gI%}mHbzD0W)?($lqzB$+XOje`L!TW8xZe z{-+#AyuC>BvRe5*ZuP;IaK@!KOFF)mjZN10^YeDl{)z&#gWBd7@{yiNj>X2C9Tqxr z21L*zH%bSss$A58%70B9H;V4PJFJVkH!76`xslmzF!b6F-;oz9m+neEay$II#g?TNxa#>G%DwMBgIh z6?I;PZUk#G^}vjC;!ViGMU{-< zOEAT|KbvTP@-N$AOX@aR)t@Z?w5n?mQaPn#w~BJ5#zjg59J-Sa-zsrLse2IfWtc=# zc7uH2iIUxn3@+F*LK_P5vV_*-AN>4;Y_muk44!9=?4=x*AZoty_V4X}QkVo`Ja&5Q zL@B(PkX>jTCp#{#^0KaS{0-SAL|Fu3tjw)`mTjhE*Y5fx$q7$}%=T*rc^WD1$omEBdD~gP1{lhlX zFG~eAYC0Vio5=cBm7eoG@;fGd`;UKNRmzV6;UDT4dD-9#h6JO&vQB+Z{P4)1Y;$*J zwB1Tda`G(`tys!+r?*yUC~S@Ta_cREsPrY5d#K=5bfYOa;=XWOmtr}))0gm#^UPi6okm+~Uuc_mxF$K?PFnFl-l46m%LJgny)EiH zmtTDnw{`L>drWW_eS!xY!D>&`(+P+xYqU#Hyv$rBpo1}j)h7W8?#(Ao+w6i zykdoN9~Qo>l6fMRexslFNKL}z!^Fsl$j$CoQiksDWTzq^&x6Zqyp zjNl5kM28?>5UGYD*(>!UN8rMjk%Kz11p`f6&JI(cDcN`G=noTNJ1(_%C|PCaEk3or z?P!NpW{tnU0L{zBZJSJyev7E7Gffwzac8b8hglO2X>Eht_%*wbQC;TSoNnFfhkyId zD~-w)I1qKGDuXV*iC6)9yz6+r;tElP89wBTTvXb#kCmnm)YG`hYFM$qdP;&QsdO%& zaBF?XzH@}dM~1nQ8wheNGbBWt7HWi?rlScYJ1kpVWxBrd2wh-bWy~^_76erJf`t`z zUKX78{am7tbjKhR4CUWb3^Zw>_18Jvf+V^0*N>7D5st+BqPn)n!R`74?zN=suBn|v z>9kO(_ZI8u5xqC#4iD+98@RkNV6=%KDWg?Q@E6 z@!u*AFiBw&N<)89Rqxc9@a~Txv%UMP1Hw_;)tpngueE%d>4~3IBkdYzpur3ed|9K{ zE}0jXy;2^J%W&lzMr(kfA}M6}z*fHPA?(kws#vl5sz=qEM@}z{2#sX0W+diI-3TPd zUOjcDOM-wKg8pr=!aTax3#_3>f(G#PIFNuBCkeG!C@ zymRE4`iEKE58SF)Rm$d}!`oQSf~j4`dp>Y-9sYJHYxJZ}9wS8Q79|Bul$<_XEx(y> zD~}C-Z_y4>nk?P6qge5D$il#NKv^7aw}G3iQB~F*Kd5y27QXEhc{g>PV#&jYFd}GK zhpD_OI5wIoj6{G5aj=-74_4Gx&&wa(3i-a4v`JFx$>x>4> z$as<*2YXsns~t&f?EH>XwI67&x`X=FjjUF4QQWFZL8VW*R;)sP!`4aiv<%-ioI6r) z+O%ctrd!-Wm}zfB@MCBFrbUzXju^Rg0GJ!K%bO~e{Cj!c{m>ms+)p$~JvaEsPqTAc z{ZE{02R^3zHoHgr;fKUk+B+Vcu7VBk<9<4Z4dh!QvmSk^^G+Lt|jk#`;7&EJkw4Eot{aJ??v2#`YQGDjZV1`EmX^|7_-u zDm50e$=z?rrOyR}^LRjXQ!8sY;@1G8YZ8M>kNli}&c-+1QZ~h5;?x&Hb*_oGFh~Hl z>d+X~A#{5*JFA_`^0l}-(Srr`z*cTi)Lw&k9r4T7BE1XKXVzD?ipchry}WYl*3GAq zXt$jVyPbT?Kp|V*tXAh~0F~itPwGr{Bh~wd3=A4Ybjmm0KgD{M;cIsp|K>I#!RUi( zP5iTo#l1EDAmWGo-1B-(Bo~!MimtM+lhZQNQY4wZQS*D}$g5hf-OeSXV3iqmgq8cM zky!C*-S;nh43xU|i3UpLPdq16*bm8YF3dS{e*sKgr>9~Q`_gTLhYdPMDlUSwX1}(1 zd~RXbQ(daeiU(W*Fk3@fMU~zbeq7J3kC(-@PvnVK_+G%=771ny#4t%{0imLuX&h6( zIQ>DQ_31b3}EUj*;(y#3r7b&S*|@mKpxN)IVp*RLg-axC#8bz~oel zbAqSLBm~^|UTy8jpd1mCML2uOsxbD%mk2J{VJTncU(2O~tfRVks5A}+FJe3MH_gW} z$WS~WBIWw{Fv)0%kmggTF3KJ{x9JEWScx@+{b)d|9L})nrAAVm*nV}nAm7soJJb(t z0Fj*ID`6|E?)dn$M=N_^18f*@+z^+L12Q2|!?0uJv1lsW4WwG7PYXH8cOlb2_RP`v zZT@D@;K;Dc;>}Ct&yUyx(|(Q^v6zpOOV=#XWlmLO?Y?yY+9c~rE)GW(U!^k7e=145 zbbz9Lb;I~2adw5*@ilw>n6w+G1H64UhMh)+H}7zc%=rK@j~L}nrfL%&##SG#aW|Hr z0>)(+plG4L?0vd@%E1JKAtlF>*(y@x5DB7#t$4GRsH@K%bkT{$L}u-uV0zW~uw7J_ ze0T%V;k zQr`#jj0ly4i$i0-hj|iu(Swrq$bFaT~%1ih|o+&-U)dSE4H>pV%JP#g4ed{ z$BFFww}6eHbL%!TGy|&|-USJyM>SM}{AvR+(fFY_1-jR}rp0wcjgsXynPfDl3T_W& zp+>#>j@Xh5*TPFg;DJ+kL>A zT<(#okS%I$Gu52g{dTAXnL}B60#Y5D}Gn& zhZC)a-o6*?)$_VRBALtpamHDR3Wql)$$=KS)2q zv-lvC_l6!y5zNa4KyKX2KX(~fpJ>Qzt|mNjqOe;);4m!@HQG3I!vzhO3h>#YEHsv= zE(CAL8rUUU!Pxx!eer}3)B9@N8zb5xIxOaGi|gDxj03!oH6PCmB15`6TjfRTI90gs z$c{4n6L0O6OrxR4n;w85Gyc1{3XaiqMIHIE38s7ynukArr3&Wc^%kKjYf*3h*jdci z&TidM;vL`(LAz5kftsLDVk7$-A~beAsP)X3i!gGz(FHA((($s(xw&}WZtY+ zv2G=yXYit6!6QvnH&ub0EI}kT#{cpaT!>_UFe?wOzm>E*;R56U_SDv;oeU8FBTLBe zs>d6M#2aPe2fYh*WiK*LmbZGPXgOlp_dmaLWoghk@|w;arVDZb1dQG=NSN|}c-xz7 zWN@J7q6maxe!J%acqE7s-bErl_k7?LFI8?8x7`kvCI|1~j_<`P#qN!?6mQf$TNL`* z3S5+Z@$Exy)Aa+E2)H(T1cO#U+FB4%Ll7hM>Bc~qri`<9lWWw$Fw>P|teL&1uZe#I zHd10Kx!PixcXbhj8`;EhOGI=Uvm@ee3GIu;)W}jBvE}za1Y0k)vufgROWR1G$ zWfi!&%mH1~@u69ZjR6Fcn8JR9GK3$RUve%nG!7#!OfZHH$AbjJKGm&mzyZ-Esy|F& zngn()R7cB9I$YgYr655+sj(ws`~bkw#biK@AmQelAr_~CCgtCpfJ#Fe%~*1Aem}5}fQ)k;I8%hp z$b5@r#oHe`V(6hZ;1c3CALo|?@j2=2?KIT#R#eY$FhGfw1VCv8h|~$&Jh+cQi(z6` zW*2lEB?5*7$JK-jpJT~AIkM4j-qH111MlT=tJwP5f(LTxK4|bswvW^{pPZ?{Y}$6* zB*?wU_qOoGpFlGtFCsS<`jq26vbZw7p){F3XnYk(X0q{IRFllf6Rk?rY z80X>v$c?-C+Hs>jkgaI`ncI#bd|_6X(jfE|BfQ#|G~LxHzTQdo{ut&nG8|IAm%GUo z)A+sX0bSsP;E93~_Q@zYYzSGZfsLGgYOG+dKlymIaZxaz34_Gl%h&!%G({$`V8v~p z>_c3v7VP&6YYC=r?4If!fsfhV$uA{zp6TfWHyIIrEOT3CE;a~h711AF6kZ&C+fgs} z%cqk%vES!0rV<MeK<(&0fs|4HELnXeHTGQORF8b0Pwo>(TTn`Z|Z zNysnRjC4=ltNJBl$sef`#W-=LUhueDqwk!j<{@EJk}PQy$>;e-J*zlg&q+;0ddx1I zIM_c_bss2{@jX}V2U*FjvG%!(bt#nmSf27KZ&dR{PC=u3O{!eFfun>!0mUx5+}_tn zAYgC1t&ob2OwO-N1^Oe8K@LTOz1=nw1?7FTlViywe`L7ZTp~#JMH^=87msW!3;iz9 z1g+Z2#G(5LI(Y(!J7QpKv(>Uq`j*ABvOSlEME6#o|46`4sR z@*$;uXjRB&{&uJ3^GgY!#9w3h6&o^)wdOH~Ftv4i?Akk$wsEIkNs`+;s=bD0FQfe> z&;-w6KU6R(`PM=9O~bsz(LAw=AleeCq8RE#+CWTFJ-1|>zxbeU?tvn#+Xa-TYN~S` zOiRI|W7+s?tvMx4dn|mK!8uy(fr^SL3`}#!wlc%eDsbFXU~-68rl>A<2~knaV8-l_z&GEm*pAyDyvz;G(4UXiC){GJ zUcTLXB>C(8Fdbe+;jT#;5#Z%}!fB0dBHbFxEgCuPV{Ptb!q*Zf*{MKBeK{(V^c7B; zgx}>68(a`L*90pO^r>e|9f+n9*Du@QEx`g%xL1mZ%LlhMC05#0S@Md124+46gPd#C zUv3R6pD1H^C_vJ8X>n1D9ZiT|y(+%G4-?k#Xjea|#wac^F{I_{P1@Z)lL_?sgtoj- zmemgKP4u+3R_e-34O1|nusS!!S$#8Bx&s0MSM=@XNFoI~VMCg=k=EeU2huvDD1n`= z$=1ueP}>^P_)AxOV-QjG)k!nAl~JP?;E}}c0VxhUWP)vt+SAouc~)8s(%>5;4%2;|ynmZgqH7y{P{ znvOs}R_D%>+~t0_KB(3iMwX8L-xpr*=lP#4EUb@M{^i0Ug7W{V#KCNxzDs|#@OtCU zzm?d-N?6X7$^}k!q-`s8?zb>A(n4!n9up_DmP}yPh1sXfiWi+Q3s96I*(@g}8w(8; zAw}$4XfG+t0c}^$+6=v-RZ{c#e#ApStyfM-+vYWqR;J$1qt!IOT;TA=YMw z)6V)m%BR>{^dA{HT%t5XzMgbzKks?jmk2qjN>IAGOuuUOht0i1rW1PF&*@D)YOCVk z-cixt|K+Yiu9tRB32oeyDH&*!htBcpvRs$cU`$x#t2RbYJyy))e7=eLf}<{WAH%N3 zHpAD=?qS82AZE-u^T25{LBGKt^B(F<*wSK~S~j*zFI6lJY2#EDlrv=~uO zv#D*w)`VWGo{85_`M0M-9w65M0`y)wZd%`ONf2IsOW$jS~IN?xBP@mimHY znE@PKLC?M2fv6Z#^G42%0!J7jjs^0dt+3-*6szzzA($Sd)}Y(p&De9CHAt#i#XYal zpt~qfPZ{uP(RiS07@{jmF6s$;WozxIGeBw5 zy2tDJIy&<%nbh>!sZxT2r=qFZAw392O6~D|ETw*>5fhBGM)0VybXdPt6KW3!_fp%M zFd)}w`ww#+_i@u=kM7wu!+PQHHr^OXoqF<8o?xOYC~ZQm)i2+eG@%SwtuRpZ1vHW< zF;b*8auMD(ZPm_2&Gm=1<@H$(y-E*WH5&g_M#PfFCucWZktP<6pUrHEzJr2*CwXT2 z3ug@velD73-{WP^IsLnxUWwb#tGJLRqwz9f2a6YxoUhD?~_?#S>qe{71 zIdVqBKDe)>H_*ec{Lwlsu46{WzxP(F343L!6lkcpf)~uwaY(R9Ud(VPm@fkb)(=#d z5gNQ=>~fxc1IJ%(4MlI!&&tlTj7{#o`+G}}UpWGB?(xB4)gdIc9vbO;I@XUSAdhnN z{h7zMYXm^Eanczd2UaySgG!kZn=NR0wDy*{d)=6*`g2!6pzrP6EIl~&%$Jt`~g7qM`J}( zwW%Jk?&~p74U%OZ{}@qioqA8?`pyp@q0Tpqar9@kNz>YGO`Otoa``V&&rR*VI|gj{ z0`$?YpEe_j^6z8dlH+Bk{L37ev~J4D1OH|Y04#7_`dG@pIn%%HBb?LYPyM%ZKu*!K)^zg^0{v?q;sP?J zcN!s={;je=nq-9mo}*sGrn+N*mB16HWuY+gd`>211_M6V%-dUo{^)^O?DP=d)K=_d z8fZWggK%T>Uq1a?!v*P)JP5g`Ga=u9v_+}y67cvdN@PJD&{2=^96E(p3(2 z+V=j*0gZK+V~+0sHRmWIP1k$(jbLF_aZ#VlDO99|z=)UT!K|z5;qC^i8NTTscc-^s z;S4dES{h}KteLg=Iv1%&gQJU@9(4{M4pGV$(qCB*wvR3rzN`ENrtvfykS4tuArC$_ zilMk5Xn8XU@Q5_vwFFbTy9nG6v@!-K3_;ji{D5KTxBtf=&+LL}IjeU-X1c|EhAgBX zuVrMjuwlLwv~6S0rR*?ib%gvgzsnyBN*={PukxU6&Fa#Yg$UQnxcHMbPd*PPIvQbJ zEugs5k}KuOT;)$lMmxoi7y4nO_ypJA9=R%;uEwn5fo7e4{%n8Z%iAdB&Bz+!&8}1i z7gmoT7$H0X*_=Snm_i#6ZVNPnnk2f_T>Az}G{ znmKGGs>7UA`DNwxU$HTTh?CFMv6iAJxkFiz!hf8}mA{4$W8^Q3IK+cABy-(ADT$Ql zFI<~-^jYLT&2$Pkm})N`~=hx$)-ytyLvSL*naf{OOuv-Pg?FZJxJ%t^(t z7h@e+<5rX@o2xLpM|-$tr)P+)DQ{Vg!0A+WYgibg6YosCd+4XuAM;7=PPB3ea?+cv z9!(D^?W3fK@vSGbY`obMM7D=sS@nk}D`ZQE?BD>V z2+XoX%5g=M<4Lm&N>t)ZcKcf)8IGuGINrycN3Q3D>B#Y*v!ns*|s?a zPr9#9-+ZS|XEN{b-oXnhwbVPOz8ct?qN7E!-bB{I+%9}^kZ0~by=yRVGyoo-NfGnG zU-;Ban~7Fhq3u6z5m2kw_)VPVK%5Md9L(Bsj78d zvWOpa?$mmp5#R6AqS)CmUoXWz%b2ek2=<^vQ%3QaFbch5$vY{vYXYXV11QgL}Qs>7MpNmRWD%)_P1_;TIgh4jz`%4EQ* zEZ8W2^G9B1r%xxL?Ebw`%jU-SsWLtrG7J-qnZd7}l+xG9Nhq?z&T=Kv9Kf zIn1I(h@@E-QD4&X*bi^HtrT@N6*&I|>r)g1r3XV7o9~}$EY;a-1Cw~KPH-D_u+!;j zZNQYxg71dlvCPRz)o&5#SnbiGy})K>OGipy9dtkB0SA@r-U)0Bi`7G9&%eJDrIZ}z z9cX>dtIy^efBDora%}&rm)A!a6D95JNmp2M`6KEXr!jb~Sc&;@`LCfC1lC;UzB?oL z8#maJ(Kj||B~!ij(5ZogbIeNbLG8t1WlR!P$$W{%YQb&YgUr6WcITc6$HvNgF-p2&qJ3eQ$B`?;!~6|7e*Z|VjS2^Y2Trxa8yC&+QJC&LZwl++I$nKJ8!uQOUL?GG?YA9muDfd`X?wNdH%}*1qyQX2oreipP)+!7ugE3RF4e#{Nc@H z<*FsNuKSbjFqxB-?(18%nrKNb>DC`Z5+c54r^D9|RSfip%+z&`+>hVyTY1hicW1&< zE>R_OMNQA_rTTT2mU!>xwN%@?lwEh)Yp;=`b)*4-obT0S4?D8A)KY_YG0T*QUq0mo zmJC-GNx}ivs01Mbtfh`HxY!n$>)3a=gT$EYG7#am*pWQhU#-IQh>l@jqqQe9EA;e1sQArJ$i}Y_ z(FUCLjtas2aIt}s`e<6aYRn{=oO{C`;so-1?JUBj0t!)phkW91>pmgB1SbHz9=6hU- zze0uj<7rf_%>28RBQ+DnDa8nf(E08%$IItb2)jh{4Rd5Cb9C`+%3IRj-#ENbUd}|O zn`?z2_QVeGGwqstpvA5**JkVN1os-B@f8E;{ssQm{ z9<@4?Dqk$R9U-5Yo%^0vmGVwo1PUh|KaeuYkvwo3y(Mm1A(I~Eb)&2kDsP>YuWYl4 z%-l&>9iDY@Hj{#Qd8dn6%N|}7PT3n$k(?P%7DN5=ICR}?ym%;`)2T55MNGFQsdUQ! z7BDjqx=?T?0qnIJA>SR;*n3j#lmK!?hZt#km!-?HQCUgCG})>R)wv5He|#VJ12qu{ zD$l@RRny#@!uq#9T`7vn-zs31zWgDI#yJ;=B*k9hifB+&i0YACX#i5S;x2-@N#H{J zu}P5@>obsy&q7J6pW|5uXHsDg{M%)wd`syzNP0Eju@;|{m5Lxl*l|8dnJ!bh%i&P> zb3^X5!PV~r;(ZvVCl@$r3E=YdJn2!5-RfmXPp@C@H70r5oCbF`y;AMOWn5;lwim~J zKVivWm5jh4r2|(Vw@|q9Hr9F6NyPQ9wn*$NbG?d-zwB$NobG2)>tPW>pVnd?hfvq% zo+lU2WIv8)q)z36%ah2F{nwhe?1$op5;7k2n;u@lU#Jkb?qXv?TX6tJM{p~&!@IaN zQjrzvXL@FVe!v1iG>ARibKYkM6xA`aGd%NlDwiy{w64hfTv7kZ8xnbZTytt{@KkE? zjY|gng{}7D=W9-Mufg>V0mEsHEhy}LH*+ly{19K}KV_s(tUWY5wjE08o{>#II4C0Y ze6tKf-nW}*rI+b(GphhPqsQ4UZ#7viXD``PG_2WoaXA3J9&$YV@vGy|p8DgK^+Pk! zAk?*9R`IRx(5bn1l#8%I@Vwv^7u%J9e??=HdDX z!}~(UR)oCm+vWXda}IU0sO}a};mFYAOP!Cm3Ka8Skspg7k)G%7Te0`TKnpL)W_|zq zM_ruS3T)YE7aHx<$uM2Eu(tY*kDo9$)h{Es@rI-^Yop`?=Lh}x!zR3zd!DVqHG%^q z+LDfaw7b0Kx%+E|Rrew@cQ-;_V&qz%S`d(+B;T&aMlpZ)orKbj`EvgC_hh+m8gs_( zg(Pq_wBRN_8cmS=ZppBywJu5K{Dpvmcc?xH%d!4I_It?DFQdv^*Qc zC((_0S|`hgC@;bAnADiAYI{aGFY=7^{8z6G7ZuHYqG+`mL{Iur(xL3K0;-KP)rNN# zh*-=t%t?My2bwz8Liv>`H0z9ZdY-es^-|U+Xv(L8-!?v&XxnmI79nrUpi2kK?68d% zk7cGqy`2~h?C2_ju$$toHbQQwoInu)7;f5XO z%z|KuHK>5M?{|4F1yW#m}v4Bc+Lt}(5-p+(8D5KWckY2Dg?oR#k?a)a#rCl z+%zKR6^GVAL==PwTor#IW4!|GL5}{k7HM=YUkrKJi<+_7TcQW4IxDzKq9=XViq z7`TI|bJ#>l2a(ret>o?-fWHpU_GDd$)PDnwEG8G|s)a=RE_GfNIGs?BwkUd>I_sn{cV1QEmpsrvoJypE*f zLJkn>;qK*r^W+0F5l^|!kn2h6Xz{hLazb}c;pH|wgmz%upbsQH8DpkvmBakFh7W%s zVz}N^-i`+%sJRK;8ZY2eTAdWDQ230bj?CX!{qSPK`48NrFF`{xiZm(G01?BXlw8F5 z-`c&+rVI1oA~20J*9)v%kAm#VB45&_iK6%#Hchz2%OjwXP4gTt#am>am#bwRZabkR zSLz>gOM@Xyh&O81-LmxOBXmBRg!b@~ac9fa4@55vmrLCR@rlH!Hou%nQ0{a=OJe6X zPKO^iUFN*pP7xxUOXnfoQWHDSNa|J7&k)@X5*LcdR#E6W9DWC*Q&~{l&_e2cz(3hjAY#f(2qemO)QDK%^$B?tEN7hd-%zj~h_ifA(C`&h#m z6BFT23n^~|C^E{iGvUX3W>t6x(i`s)e zv%c_BeE;^{g1qFRjw>Y+mRhSs!`fpn;dY+WSoYqZ&nIB=^_#MtX1rt)!zEgCm8j*o zW9X2NG&--Q?_#Rn#rTd}$>H5|V&~=`?+`;>GLqVp$R<@+uU{^@tBU7w^}Ok)2ghB{ z^B3-~p5r6840vQ6;uh3x$m5;j`jh)SGJRE zqJ>r}By1``uCQCh9W^}gp;8PbPaC}Z_9}^>HvJ1i#y3Ye?oAn43E{!h#z0!%DCAx> zUsC?b!WUKOH-E7}toJlpu{CtN*%g3e^FW>8u=SOyW|GbAO&VtUoF;e1-F7K6V~)Q> zarwnkJKF0F2#@`3ACUHL22;s#fu&rkYUg?9gAxwg@)us793)~GkI&+N?RwX=-K-Ow zwiCxq?;W5WmN&anvBOW*9i!!vWbSfW{YS3*X$ipBI z#l1(0J&p5PWrR1j(t7HIw$Jc$jFgSuZwE-!!JE;aqZJW7DS{b{Q zN5STvJe4qh!h7X0PBWFJ?R#=3K`BCI?@Qh&Lv-}|wU_o}&j&LKb01t+2JwV@Zsz*z zL3Bj>a4<U6IUZc zd`eQs29m}mmlKjH^VlBB{yrZoeUwlaywK}hN`O24@#7tS0&=10od-l~a)-@NpjBD( zNSju5u!->mgTibt;v3&d@Y+v*o_s|r?DYX*w6t@I1>?e9j43`4o7zoAAZr=2SskO* zwLVXRGc*wsTm2I`*^<>7Z)4b0C+?SzD2;uAoatGC*6|X)4q;0wQRBS8R7%}Ruv+lz zYCnDRV;$Ei`TKMDD*fp9p(z7=pC8ehu|6>BWgPKy6cNR^+k(YfQ-d=K*0}9Y8NV_Q zl@|~Wrqa@zgr z6>Af@xXKFo&?uh?99&6eRIHuAmGT#+yi5yPyrlE_QVxbq!?S6nX=+pbv{Ia(^~RUs zb3rC1`NXEfw6WCH1RPVlXQHDtugN4`aT9hyinUb4w;t+z4Lr%dSi zP<@Pc5A}dWO?JBu@}w5@4y|RDi1WY1NaS3YupP9iX_FMKoZH8_g86)f<}&DnL}Ii) zOnGDaf}umwp>3S$8FpK62H_-PA}7&7Jpx>``3(bz8GUJS?t3b+Cvq~zm+d~;Z zQkQ&)11B@e`@^=)BXZs^=;Y&@KsFYNi|ONJhy8IrQmD`|bUuEW!3qu8`a8T&BgK)5 z?)wY#c;a$-pBk-D&G<}WEIp`{6MT0mxFZYmxVr9$JdLzLx`B^!GXy|vLZ_b_BH`T9 z&%eD|hOym&`HN-nJ{LY-US>e2M+Y>8p^tW9QAZJZdWsRk71$2&;g-n@a&NLoz>#o0 zfe2w$tWDQN)X^2&Oavn0Mck1ear3k7I*E|miP6)j{~atA=b!y|U~8pNOAj)){$}5Q zf@RGe`{m!j{sXJArrOc}hE-Th?{4ZO{2SPRVwEwr>0hx5i}=fj1OEzE6crN0pxu=P z#i2g4HXY8F=8~}ag30!%R9Ig*m&FN|UUl>2GXe&SuWp9LvC^A>P31T%ZljK3n0gS zpqO5FvK9mm#lBqU7iKHA6*&tSSo`6)~o&x+pFz-9k{6FB}%9o^xz=HmO< zPRXrP54|5PItSF+F*Go}IN!d5M&AT=+dj^#T(EUd{(&okPE}DWK>%9jxmDtE$|_TWiak-$tSMw=#PNW7LPxnP0Yp1WursmJafajLRc zgdej?Td*=c+&?g~bNXKsfJSS)COzv; z^_<6JXUw6i-?T4|>Zu*;Z>6_tz~*!hyaZf`^3S*|Zgv4}vR7UIMSIvn8BOr~aJy` zSw#y_x=x~cMZ?0h6o}{@_2|KgxMOh@i7)n)f^s6qHsEyjp?Zodz~)vD4mYy!t^I2W zF=kyI@7%g93Hzo>(XTAKhCXr(^m_0nd~#3J4G_31+>u?{jM6z|n@-eWrN{YosaDyS15a4(ShF{)kKV2^^RRiKE+lcoX!@FJ-s}+b;_8uP8phaN zw0bIh?bm$_LfLzXi!VxB)_4?2b#WUN97Wt&SX>TE2aTS}8Eo2q_JXNOD+b`VtoEl)iS~PfhH!idl~?URmU4%Nf!D2K ze3_J~Sm5#oNyohl>l&(U{w)%8iY4V4V)jvQlu@!nY;Q>Eq_Y-5=~~GL6BezvS)f$z zs0XsPZA;idy^u~SwbJ4%|1$H7 zuHX3I!W#C|IHInIVa(Ac16ZwL(4J3qsf)bG@p^{vvJsv~gdB zM^7#hvt)5VzAs0!$Uo&vNjsZ0=%@~h_zfuj7}M_sFvE;$zR(x?yd4+rr2umtN%8g? znbo-Y)l0g@X2DxviR?OizgKh2jym^tZRVMPKJl;ioJSem^xd9e?XmgZTwI}ad%Z@0 zLaqI8OGX!*VP4gKH~X0#{Z@|kD-R@RmKc9%SIAm=o5oD5mzBoX7@EVpz@gjD(Br;Y zb&)3G7syCRu0X#6?zU4R6lL<~V9s9%Cx{mt&QY7_A zy|jJK20uZ`s*t0ll@UKbQ?@)K@h#a!P0p58WL>U6!skZ7`EwcO�+9eLb17NhZax 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 literal 0 HcmV?d00001 diff --git a/vendor/myclabs/deep-copy/doc/graph.png b/vendor/myclabs/deep-copy/doc/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5c9428f719bf6ad68f25a46d6e935c2362c4a5 GIT binary patch literal 6436 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 literal 0 HcmV?d00001 diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php new file mode 100644 index 00000000..aee9e729 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php @@ -0,0 +1,246 @@ +useCloneMethod = $useCloneMethod; + + $this->addTypeFilter(new SplDoublyLinkedList($this), new TypeMatcher('\SplDoublyLinkedList')); + } + + /** + * Cloning uncloneable properties won't throw exception. + * @param $skipUncloneable + * @return $this + */ + public function skipUncloneable($skipUncloneable = true) + { + $this->skipUncloneable = $skipUncloneable; + return $this; + } + + /** + * Perform a deep copy of the object. + * @param mixed $object + * @return mixed + */ + public function copy($object) + { + $this->hashMap = []; + + return $this->recursiveCopy($object); + } + + public function addFilter(Filter $filter, Matcher $matcher) + { + $this->filters[] = [ + 'matcher' => $matcher, + 'filter' => $filter, + ]; + } + + public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher) + { + $this->typeFilters[] = [ + 'matcher' => $matcher, + 'filter' => $filter, + ]; + } + + + private function recursiveCopy($var) + { + // Matches Type Filter + if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) { + return $filter->apply($var); + } + + // Resource + if (is_resource($var)) { + return $var; + } + // Array + if (is_array($var)) { + return $this->copyArray($var); + } + // Scalar + if (! is_object($var)) { + return $var; + } + // Object + return $this->copyObject($var); + } + + /** + * Copy an array + * @param array $array + * @return array + */ + private function copyArray(array $array) + { + foreach ($array as $key => $value) { + $array[$key] = $this->recursiveCopy($value); + } + + return $array; + } + + /** + * Copy an object + * @param object $object + * @return object + */ + private function copyObject($object) + { + $objectHash = spl_object_hash($object); + + if (isset($this->hashMap[$objectHash])) { + return $this->hashMap[$objectHash]; + } + + $reflectedObject = new \ReflectionObject($object); + + if (false === $isCloneable = $reflectedObject->isCloneable() and $this->skipUncloneable) { + $this->hashMap[$objectHash] = $object; + return $object; + } + + if (false === $isCloneable) { + throw new CloneException(sprintf( + 'Class "%s" is not cloneable.', + $reflectedObject->getName() + )); + } + + $newObject = clone $object; + $this->hashMap[$objectHash] = $newObject; + if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) { + return $object; + } + + if ($newObject instanceof \DateTimeInterface) { + return $newObject; + } + foreach (ReflectionHelper::getProperties($reflectedObject) as $property) { + $this->copyObjectProperty($newObject, $property); + } + + return $newObject; + } + + private function copyObjectProperty($object, ReflectionProperty $property) + { + // Ignore static properties + if ($property->isStatic()) { + return; + } + + // Apply the filters + foreach ($this->filters as $item) { + /** @var Matcher $matcher */ + $matcher = $item['matcher']; + /** @var Filter $filter */ + $filter = $item['filter']; + + if ($matcher->matches($object, $property->getName())) { + $filter->apply( + $object, + $property->getName(), + function ($object) { + return $this->recursiveCopy($object); + } + ); + // If a filter matches, we stop processing this property + return; + } + } + + $property->setAccessible(true); + $propertyValue = $property->getValue($object); + + // Copy the property + $property->setValue($object, $this->recursiveCopy($propertyValue)); + } + + /** + * Returns first filter that matches variable, NULL if no such filter found. + * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and + * 'matcher' with value of type {@see TypeMatcher} + * @param mixed $var + * @return TypeFilter|null + */ + private function getFirstMatchedTypeFilter(array $filterRecords, $var) + { + $matched = $this->first( + $filterRecords, + function (array $record) use ($var) { + /* @var TypeMatcher $matcher */ + $matcher = $record['matcher']; + + return $matcher->matches($var); + } + ); + + return isset($matched) ? $matched['filter'] : null; + } + + /** + * Returns first element that matches predicate, NULL if no such element found. + * @param array $elements + * @param callable $predicate Predicate arguments are: element. + * @return mixed|null + */ + private function first(array $elements, callable $predicate) + { + foreach ($elements as $element) { + if (call_user_func($predicate, $element)) { + return $element; + } + } + + return null; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php new file mode 100644 index 00000000..dd3b617b --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php @@ -0,0 +1,6 @@ +setAccessible(true); + $oldCollection = $reflectionProperty->getValue($object); + + $newCollection = $oldCollection->map( + function ($item) use ($objectCopier) { + return $objectCopier($item); + } + ); + + $reflectionProperty->setValue($object, $newCollection); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php new file mode 100644 index 00000000..f9b3f7ac --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php @@ -0,0 +1,24 @@ +setAccessible(true); + + $reflectionProperty->setValue($object, new ArrayCollection()); + } +} \ No newline at end of file diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php new file mode 100644 index 00000000..a855277a --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php @@ -0,0 +1,20 @@ +__load(); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php new file mode 100644 index 00000000..48076a1b --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php @@ -0,0 +1,17 @@ +callback = $callable; + } + + /** + * {@inheritdoc} + */ + public function apply($object, $property, $objectCopier) + { + $reflectionProperty = new \ReflectionProperty($object, $property); + $reflectionProperty->setAccessible(true); + + $value = call_user_func($this->callback, $reflectionProperty->getValue($object)); + + $reflectionProperty->setValue($object, $value); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php new file mode 100644 index 00000000..d48f15b6 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php @@ -0,0 +1,22 @@ +setAccessible(true); + $reflectionProperty->setValue($object, null); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php new file mode 100644 index 00000000..6a7bcf5d --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php @@ -0,0 +1,20 @@ +class = $class; + $this->property = $property; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + return ($object instanceof $this->class) && ($property == $this->property); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php new file mode 100644 index 00000000..9d9575f0 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php @@ -0,0 +1,30 @@ +property = $property; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + return $property == $this->property; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php new file mode 100644 index 00000000..6935541d --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php @@ -0,0 +1,38 @@ +propertyType = $propertyType; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + $reflectionProperty = new ReflectionProperty($object, $property); + $reflectionProperty->setAccessible(true); + + return $reflectionProperty->getValue($object) instanceof $this->propertyType; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php new file mode 100644 index 00000000..a094e729 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php @@ -0,0 +1,39 @@ +getProperties() does not return private properties from ancestor classes. + * + * @author muratyaman@gmail.com + * @see http://php.net/manual/en/reflectionclass.getproperties.php + * + * @param \ReflectionClass $ref + * @return \ReflectionProperty[] + */ + public static function getProperties(\ReflectionClass $ref) + { + $props = $ref->getProperties(); + $propsArr = array(); + + foreach ($props as $prop) { + $propertyName = $prop->getName(); + $propsArr[$propertyName] = $prop; + } + + if ($parentClass = $ref->getParentClass()) { + $parentPropsArr = self::getProperties($parentClass); + foreach ($propsArr as $key => $property) { + $parentPropsArr[$key] = $property; + } + + return $parentPropsArr; + } + + return $propsArr; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php new file mode 100644 index 00000000..0e42b0fe --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php @@ -0,0 +1,27 @@ +callback = $callable; + } + + /** + * {@inheritdoc} + */ + public function apply($element) + { + return call_user_func($this->callback, $element); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php new file mode 100644 index 00000000..408d18bb --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php @@ -0,0 +1,14 @@ +deepCopy = $deepCopy; + } + + /** + * {@inheritdoc} + */ + public function apply($element) + { + $newElement = clone $element; + + if ($element instanceof \SplDoublyLinkedList) { + // Replace each element in the list with a deep copy of itself + for ($i = 1; $i <= $newElement->count(); $i++) { + $newElement->push($this->deepCopy->copy($newElement->shift())); + } + } + + return $newElement; + + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php new file mode 100644 index 00000000..a37a8ba8 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php @@ -0,0 +1,12 @@ +type = $type; + } + + /** + * @param $element + * @return boolean + */ + public function matches($element) + { + return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type; + } +} diff --git a/vendor/phpdocumentor/reflection-common/.gitignore b/vendor/phpdocumentor/reflection-common/.gitignore new file mode 100644 index 00000000..c56f6719 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/.gitignore @@ -0,0 +1,4 @@ +composer.phar +vendor/ +build/ + diff --git a/vendor/phpdocumentor/reflection-common/LICENSE b/vendor/phpdocumentor/reflection-common/LICENSE new file mode 100644 index 00000000..ed6926c1 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 phpDocumentor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/phpdocumentor/reflection-common/README.md b/vendor/phpdocumentor/reflection-common/README.md new file mode 100644 index 00000000..52b12bc0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/README.md @@ -0,0 +1 @@ +# ReflectionCommon diff --git a/vendor/phpdocumentor/reflection-common/composer.json b/vendor/phpdocumentor/reflection-common/composer.json new file mode 100644 index 00000000..90eee0f0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/composer.json @@ -0,0 +1,29 @@ +{ + "name": "phpdocumentor/reflection-common", + "keywords": ["phpdoc", "phpDocumentor", "reflection", "static analysis", "FQSEN"], + "homepage": "http://www.phpdoc.org", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "license": "MIT", + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "require": { + "php": ">=5.5" + }, + "autoload" : { + "psr-4" : { + "phpDocumentor\\Reflection\\": ["src"] + } + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/vendor/phpdocumentor/reflection-common/composer.lock b/vendor/phpdocumentor/reflection-common/composer.lock new file mode 100644 index 00000000..e01dc3c1 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/composer.lock @@ -0,0 +1,974 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "49ee00389e4ccd00d7e93a147103b2ab", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.0.*@ALPHA" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Instantiator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2014-10-13 12:58:55" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2015-02-03 12:10:50" + }, + { + "name": "phpspec/prophecy", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", + "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2015-04-27 22:15:08" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "6b7d2094ca2a685a2cad846cb7cd7a30e8b9470f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6b7d2094ca2a685a2cad846cb7cd7a30e8b9470f", + "reference": "6b7d2094ca2a685a2cad846cb7cd7a30e8b9470f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "~1.0", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-06-01 07:35:26" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb", + "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2015-04-02 05:19:05" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "Text/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2014-01-30 17:20:04" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2013-08-02 07:42:54" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "eab81d02569310739373308137284e0158424330" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330", + "reference": "eab81d02569310739373308137284e0158424330", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-04-08 04:46:07" + }, + { + "name": "phpunit/phpunit", + "version": "4.6.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "816d12536a7a032adc3b68737f82cfbbf98b79c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/816d12536a7a032adc3b68737f82cfbbf98b79c1", + "reference": "816d12536a7a032adc3b68737f82cfbbf98b79c1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "~1.3,>=1.3.1", + "phpunit/php-code-coverage": "~2.0,>=2.0.11", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "~1.0", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.2", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.6.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2015-05-29 06:00:03" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/253c005852591fd547fc18cd5b7b43a1ec82d8f7", + "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-05-29 05:19:18" + }, + { + "name": "sebastian/comparator", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-01-29 16:28:08" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2015-01-01 10:01:08" + }, + { + "name": "sebastian/exporter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "84839970d05254c73cde183a721c7af13aede943" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", + "reference": "84839970d05254c73cde183a721c7af13aede943", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2015-01-27 07:23:06" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-01-24 09:48:32" + }, + { + "name": "sebastian/version", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-02-24 06:35:25" + }, + { + "name": "symfony/yaml", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/4a29a5248aed4fb45f626a7bbbd330291492f5c3", + "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2015-05-02 15:21:08" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/vendor/phpdocumentor/reflection-common/phpunit.xml.dist b/vendor/phpdocumentor/reflection-common/phpunit.xml.dist new file mode 100644 index 00000000..31811501 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/phpunit.xml.dist @@ -0,0 +1,26 @@ + + + + + + ./tests/unit/ + + + + + src + + + + + + + + diff --git a/vendor/phpdocumentor/reflection-common/src/Element.php b/vendor/phpdocumentor/reflection-common/src/Element.php new file mode 100644 index 00000000..712e30e8 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Element.php @@ -0,0 +1,32 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Interface for files processed by the ProjectFactory + */ +interface File +{ + /** + * Returns the content of the file as a string. + * + * @return string + */ + public function getContents(); + + /** + * Returns md5 hash of the file. + * + * @return string + */ + public function md5(); + + /** + * Returns an relative path to the file. + * + * @return string + */ + public function path(); +} diff --git a/vendor/phpdocumentor/reflection-common/src/Fqsen.php b/vendor/phpdocumentor/reflection-common/src/Fqsen.php new file mode 100644 index 00000000..c7be3f15 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php @@ -0,0 +1,78 @@ +fqsen = $fqsen; + + if (isset($matches[2])) { + $this->name = $matches[2]; + } else { + $matches = explode('\\', $fqsen); + $this->name = trim(end($matches), '()'); + } + } + + /** + * converts this class to string. + * + * @return string + */ + public function __toString() + { + return $this->fqsen; + } + + /** + * Returns the name of the element without path. + * + * @return string + */ + public function getName() + { + return $this->name; + } +} diff --git a/vendor/phpdocumentor/reflection-common/src/Location.php b/vendor/phpdocumentor/reflection-common/src/Location.php new file mode 100644 index 00000000..57603219 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Location.php @@ -0,0 +1,57 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * The location where an element occurs within a file. + */ +final class Location +{ + /** @var int */ + private $lineNumber = 0; + + /** @var int */ + private $columnNumber = 0; + + /** + * Initializes the location for an element using its line number in the file and optionally the column number. + * + * @param int $lineNumber + * @param int $columnNumber + */ + public function __construct($lineNumber, $columnNumber = 0) + { + $this->lineNumber = $lineNumber; + $this->columnNumber = $columnNumber; + } + + /** + * Returns the line number that is covered by this location. + * + * @return integer + */ + public function getLineNumber() + { + return $this->lineNumber; + } + + /** + * Returns the column number (character position on a line) for this location object. + * + * @return integer + */ + public function getColumnNumber() + { + return $this->columnNumber; + } +} diff --git a/vendor/phpdocumentor/reflection-common/src/Project.php b/vendor/phpdocumentor/reflection-common/src/Project.php new file mode 100644 index 00000000..3ed1e393 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Project.php @@ -0,0 +1,25 @@ +assertEquals($name, $instance->getName()); + } + + /** + * Data provider for ValidFormats tests. Contains a complete list from psr-5 draft. + * + * @return array + */ + public function validFqsenProvider() + { + return [ + ['\\', ''], + ['\My\Space', 'Space'], + ['\My\Space\myFunction()', 'myFunction'], + ['\My\Space\MY_CONSTANT', 'MY_CONSTANT'], + ['\My\Space\MY_CONSTANT2', 'MY_CONSTANT2'], + ['\My\Space\MyClass', 'MyClass'], + ['\My\Space\MyInterface', 'MyInterface'], + ['\My\Space\MyTrait', 'MyTrait'], + ['\My\Space\MyClass::myMethod()', 'myMethod'], + ['\My\Space\MyClass::$my_property', 'my_property'], + ['\My\Space\MyClass::MY_CONSTANT', 'MY_CONSTANT'], + ]; + } + + /** + * @param string $fqsen + * @covers ::__construct + * @dataProvider invalidFqsenProvider + * @expectedException \InvalidArgumentException + */ + public function testInValidFormats($fqsen) + { + new Fqsen($fqsen); + } + + /** + * Data provider for invalidFormats tests. Contains a complete list from psr-5 draft. + * + * @return array + */ + public function invalidFqsenProvider() + { + return [ + ['\My\*'], + ['\My\Space\.()'], + ['My\Space'], + ]; + } + + /** + * @covers ::__construct + * @covers ::__toString + */ + public function testToString() + { + $className = new Fqsen('\\phpDocumentor\\Application'); + + $this->assertEquals('\\phpDocumentor\\Application', (string)$className); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/.gitignore b/vendor/phpdocumentor/reflection-docblock/.gitignore new file mode 100644 index 00000000..3ce5adbb --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/.gitignore @@ -0,0 +1,2 @@ +.idea +vendor diff --git a/vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml b/vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml new file mode 100644 index 00000000..5061d523 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml @@ -0,0 +1,32 @@ +before_commands: + - "composer install --no-dev --prefer-source" + +tools: + external_code_coverage: true + php_code_sniffer: + enabled: true + config: + standard: PSR2 + filter: + paths: ["src/*", "tests/*"] + php_cpd: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_loc: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_mess_detector: + enabled: true + config: + ruleset: phpmd.xml.dist + design_rules: { eval_expression: false } + filter: + paths: ["src/*"] + php_pdepend: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_analyzer: + enabled: true + filter: + paths: ["src/*", "tests/*"] + sensiolabs_security_checker: true diff --git a/vendor/phpdocumentor/reflection-docblock/.travis.yml b/vendor/phpdocumentor/reflection-docblock/.travis.yml new file mode 100644 index 00000000..920958df --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/.travis.yml @@ -0,0 +1,36 @@ +language: php +php: + - 5.5 + - 5.6 + - 7.0 + - hhvm + - nightly + +matrix: + allow_failures: + - php: + - hhvm + - nightly + +cache: + directories: + - $HOME/.composer/cache + +script: + - vendor/bin/phpunit --coverage-clover=coverage.clover -v + - composer update --no-interaction --prefer-source + - vendor/bin/phpunit -v + +before_script: + - composer install --no-interaction + +after_script: + - wget https://scrutinizer-ci.com/ocular.phar + - php ocular.phar code-coverage:upload --format=php-clover coverage.clover + +notifications: + irc: "irc.freenode.org#phpdocumentor" + email: + - mike.vanriel@naenius.com + - ashnazg@php.net + - boen.robot@gmail.com diff --git a/vendor/phpdocumentor/reflection-docblock/LICENSE b/vendor/phpdocumentor/reflection-docblock/LICENSE new file mode 100644 index 00000000..792e4040 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010 Mike van Riel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/phpdocumentor/reflection-docblock/README.md b/vendor/phpdocumentor/reflection-docblock/README.md new file mode 100644 index 00000000..a1984a15 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/README.md @@ -0,0 +1,69 @@ +The ReflectionDocBlock Component [![Build Status](https://secure.travis-ci.org/phpDocumentor/ReflectionDocBlock.png)](https://travis-ci.org/phpDocumentor/ReflectionDocBlock) +================================ + +Introduction +------------ + +The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser +that is 100% compatible with the [PHPDoc standard](http://phpdoc.org/docs/latest). + +With this component, a library can provide support for annotations via DocBlocks +or otherwise retrieve information that is embedded in a DocBlock. + +> **Note**: *this is a core component of phpDocumentor and is constantly being +> optimized for performance.* + +Installation +------------ + +You can install the component in the following ways: + +* Use the official Github repository (https://github.com/phpDocumentor/ReflectionDocBlock) +* Via Composer (http://packagist.org/packages/phpdocumentor/reflection-docblock) + +Usage +----- + +In order to parse the DocBlock one needs a DocBlockFactory that can be +instantiated using its `createInstance` factory method like this: + +```php +$factory = \phpDocumentor\Reflection\DocBlockFactory::createInstance(); +``` + +Then we can use the `create` method of the factory to interpret the DocBlock. +Please note that it is also possible to provide a class that has the +`getDocComment()` method, such as an object of type `ReflectionClass`, the +create method will read that if it exists. + +```php +$docComment = <<create($docComment); +``` + +The `create` method will yield an object of type `\phpDocumentor\Reflection\DocBlock` +whose methods can be queried as shown in the following example. + +```php +// Should contain the summary for this DocBlock +$summary = $docblock->getSummary(); + +// Contains an object of type \phpDocumentor\Reflection\DocBlock\Description; +// you can either cast it to string or use the render method to get a string +// representation of the Description. +$description = $docblock->getDescription(); +``` + +> For more examples it would be best to review the scripts in the `/examples` +> folder. + diff --git a/vendor/phpdocumentor/reflection-docblock/composer.json b/vendor/phpdocumentor/reflection-docblock/composer.json new file mode 100644 index 00000000..85be2fdd --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/composer.json @@ -0,0 +1,28 @@ +{ + "name": "phpdocumentor/reflection-docblock", + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "autoload": { + "psr-4": {"phpDocumentor\\Reflection\\": ["src/"]} + }, + "autoload-dev": { + "psr-4": {"phpDocumentor\\Reflection\\": ["tests/unit"]} + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/composer.lock b/vendor/phpdocumentor/reflection-docblock/composer.lock new file mode 100644 index 00000000..b4da3c1b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/composer.lock @@ -0,0 +1,1120 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "9dfabded4193c3fd2ec85874de3b2e3c", + "content-hash": "69f6ae6608b8524fa04ddb0264bbf091", + "packages": [ + { + "name": "phpdocumentor/reflection-common", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "9969bd1c9661a73fdab104df7dbf132639d5c4d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/9969bd1c9661a73fdab104df7dbf132639d5c4d8", + "reference": "9969bd1c9661a73fdab104df7dbf132639d5c4d8", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-06-12 22:21:38" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-06-10 07:14:17" + }, + { + "name": "webmozart/assert", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "b8ef76d0f0c3b9a0a1bc987085fe0a0ddba984ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/b8ef76d0f0c3b9a0a1bc987085fe0a0ddba984ab", + "reference": "b8ef76d0f0c3b9a0a1bc987085fe0a0ddba984ab", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2015-05-12 15:19:25" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", + "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "satooshi/php-coveralls": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "hamcrest" + ], + "files": [ + "hamcrest/Hamcrest.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2015-05-11 14:41:42" + }, + { + "name": "mockery/mockery", + "version": "0.9.4", + "source": { + "type": "git", + "url": "https://github.com/padraic/mockery.git", + "reference": "70bba85e4aabc9449626651f48b9018ede04f86b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/padraic/mockery/zipball/70bba85e4aabc9449626651f48b9018ede04f86b", + "reference": "70bba85e4aabc9449626651f48b9018ede04f86b", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "~1.1", + "lib-pcre": ">=7.0", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", + "homepage": "http://github.com/padraic/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "time": "2015-04-02 19:54:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.1.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/631e365cf26bb2c078683e8d9bcf8bc631ac4d44", + "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "~1.0", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-06-19 07:11:55" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "File/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2013-10-10 15:34:57" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d", + "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2015-06-13 07:35:30" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9", + "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2015-06-19 03:43:16" + }, + { + "name": "phpunit/phpunit", + "version": "4.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "2e8580deebb7d1ac92ac878595e6bffe01069c2a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2e8580deebb7d1ac92ac878595e6bffe01069c2a", + "reference": "2e8580deebb7d1ac92ac878595e6bffe01069c2a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpunit/php-code-coverage": "~2.0", + "phpunit/php-file-iterator": "~1.3.2", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.0", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.1", + "sebastian/exporter": "~1.1", + "sebastian/global-state": "~1.0", + "sebastian/recursion-context": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2015-01-27 16:06:15" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/92408bb1968a81b3217a6fdf6c1a198da83caa35", + "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2015-06-11 15:55:48" + }, + { + "name": "sebastian/comparator", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2015-01-29 16:28:08" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2015-01-01 10:01:08" + }, + { + "name": "sebastian/exporter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "84839970d05254c73cde183a721c7af13aede943" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", + "reference": "84839970d05254c73cde183a721c7af13aede943", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2015-01-27 07:23:06" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-01-24 09:48:32" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21 13:59:46" + }, + { + "name": "symfony/yaml", + "version": "v2.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160", + "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2015-06-10 15:30:22" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "phpdocumentor/reflection-common": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.5" + }, + "platform-dev": [] +} diff --git a/vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php b/vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php new file mode 100644 index 00000000..6d67dea4 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php @@ -0,0 +1,27 @@ +create($docComment); + +// Should contain the first line of the DocBlock +$summary = $docblock->getSummary(); + +// Contains an object of type Description; you can either cast it to string or use +// the render method to get a string representation of the Description. +// +// In subsequent examples we will be fiddling a bit more with the Description. +$description = $docblock->getDescription(); diff --git a/vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php b/vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php new file mode 100644 index 00000000..23995889 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php @@ -0,0 +1,24 @@ +create($docComment); + +// You can check if a DocBlock has one or more see tags +$hasSeeTag = $docblock->hasTag('see'); + +// Or we can get a complete list of all tags +$tags = $docblock->getTags(); + +// But we can also grab all tags of a specific type, such as `see` +$seeTags = $docblock->getTagsByName('see'); diff --git a/vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php b/vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php new file mode 100644 index 00000000..6bc10baf --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php @@ -0,0 +1,27 @@ +create($docComment); + +// Create the serializer that will reconstitute the DocBlock back to its original form. +$serializer = new Serializer(); + +// Reconstitution is performed by the `getDocComment()` method. +$reconstitutedDocComment = $serializer->getDocComment($docblock); + diff --git a/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php b/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php new file mode 100644 index 00000000..026d6069 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php @@ -0,0 +1,135 @@ + Important: Tag classes that act as Factories using the `create` method should implement the TagFactory interface. + */ +final class MyTag extends BaseTag implements StaticMethod +{ + /** + * A required property that is used by Formatters to reconstitute the complete tag line. + * + * @see Formatter + * + * @var string + */ + protected $name = 'my-tag'; + + /** + * The constructor for this Tag; this should contain all properties for this object. + * + * @param Description $description An example of how to add a Description to the tag; the Description is often + * an optional variable so passing null is allowed in this instance (though you can + * also construct an empty description object). + * + * @see BaseTag for the declaration of the description property and getDescription method. + */ + public function __construct(Description $description = null) + { + $this->description = $description; + } + + /** + * A static Factory that creates a new instance of the current Tag. + * + * In this example the MyTag tag can be created by passing a description text as $body. Because we have added + * a $descriptionFactory that is type-hinted as DescriptionFactory we can now construct a new Description object + * and pass that to the constructor. + * + * > You could directly instantiate a Description object here but that won't be parsed for inline tags and Types + * > won't be resolved. The DescriptionFactory will take care of those actions. + * + * The `create` method's interface states that this method only features a single parameter (`$body`) but the + * {@see TagFactory} will read the signature of this method and if it has more parameters then it will try + * to find declarations for it in the ServiceLocator of the TagFactory (see {@see TagFactory::$serviceLocator}). + * + * > Important: all properties following the `$body` should default to `null`, otherwise PHP will error because + * > it no longer matches the interface. This is why you often see the default tags check that an optional argument + * > is not null nonetheless. + * + * @param string $body + * @param DescriptionFactory $descriptionFactory + * @param Context|null $context The Context is used to resolve Types and FQSENs, although optional + * it is highly recommended to pass it. If you omit it then it is assumed that + * the DocBlock is in the global namespace and has no `use` statements. + * + * @see Tag for the interface declaration of the `create` method. + * @see Tag::create() for more information on this method's workings. + * + * @return MyTag + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, Context $context = null) + { + Assert::string($body); + Assert::notNull($descriptionFactory); + + return new static($descriptionFactory->create($body, $context)); + } + + /** + * Returns a rendition of the original tag line. + * + * This method is used to reconstitute a DocBlock into its original form by the {@see Serializer}. It should + * feature all parts of the tag so that the serializer can put it back together. + * + * @return string + */ + public function __toString() + { + return (string)$this->description; + } +} + +$docComment = << MyTag::class]; + +// Do pass the list of custom tags to the Factory for the DocBlockFactory. +$factory = DocBlockFactory::createInstance($customTags); +// You can also add Tags later using `$factory->registerTagHandler()` with a tag name and Tag class name. + +// Create the DocBlock +$docblock = $factory->create($docComment); + +// Take a look: the $customTagObjects now contain an array with your newly added tag +$customTagObjects = $docblock->getTagsByName('my-tag'); + +// As an experiment: let's reconstitute the DocBlock and observe that because we added a __toString() method +// to the tag class that we can now also see it. +$serializer = new Serializer(); +$reconstitutedDocComment = $serializer->getDocComment($docblock); diff --git a/vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php b/vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php new file mode 100644 index 00000000..5ec772fe --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php @@ -0,0 +1,47 @@ +create($docComment); + +// Escaping is automatic so this happens in the DescriptionFactory. +$description = $docblock->getDescription(); + +// This is the rendition that we will receive of the Description. +$receivedDocComment = <<render(); diff --git a/vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist b/vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist new file mode 100644 index 00000000..9abf85cf --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + 40 + + + diff --git a/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist b/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist new file mode 100644 index 00000000..3c2e9a37 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist @@ -0,0 +1,33 @@ + + + + + + ./tests/unit + + + ./tests/integration + + + + + ./src/ + + + ./vendor/ + + + + + + diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php new file mode 100644 index 00000000..39911406 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php @@ -0,0 +1,220 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Tag; +use Webmozart\Assert\Assert; + +final class DocBlock +{ + /** @var string The opening line for this docblock. */ + private $summary = ''; + + /** @var DocBlock\Description The actual description for this docblock. */ + private $description = null; + + /** @var Tag[] An array containing all the tags in this docblock; except inline. */ + private $tags = array(); + + /** @var Types\Context Information about the context of this DocBlock. */ + private $context = null; + + /** @var Location Information about the location of this DocBlock. */ + private $location = null; + + /** @var bool Is this DocBlock (the start of) a template? */ + private $isTemplateStart = false; + + /** @var bool Does this DocBlock signify the end of a DocBlock template? */ + private $isTemplateEnd = false; + + /** + * @param string $summary + * @param DocBlock\Description $description + * @param DocBlock\Tag[] $tags + * @param Types\Context $context The context in which the DocBlock occurs. + * @param Location $location The location within the file that this DocBlock occurs in. + * @param bool $isTemplateStart + * @param bool $isTemplateEnd + */ + public function __construct( + $summary = '', + DocBlock\Description $description = null, + array $tags = [], + Types\Context $context = null, + Location $location = null, + $isTemplateStart = false, + $isTemplateEnd = false + ) + { + Assert::string($summary); + Assert::boolean($isTemplateStart); + Assert::boolean($isTemplateEnd); + Assert::allIsInstanceOf($tags, Tag::class); + + $this->summary = $summary; + $this->description = $description ?: new DocBlock\Description(''); + foreach ($tags as $tag) { + $this->addTag($tag); + } + + $this->context = $context; + $this->location = $location; + + $this->isTemplateEnd = $isTemplateEnd; + $this->isTemplateStart = $isTemplateStart; + } + + /** + * @return string + */ + public function getSummary() + { + return $this->summary; + } + + /** + * @return DocBlock\Description + */ + public function getDescription() + { + return $this->description; + } + + /** + * Returns the current context. + * + * @return Types\Context + */ + public function getContext() + { + return $this->context; + } + + /** + * Returns the current location. + * + * @return Location + */ + public function getLocation() + { + return $this->location; + } + + /** + * Returns whether this DocBlock is the start of a Template section. + * + * A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker + * (`#@+`) that is appended directly after the opening `/**` of a DocBlock. + * + * An example of such an opening is: + * + * ``` + * /**#@+ + * * My DocBlock + * * / + * ``` + * + * The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all + * elements that follow until another DocBlock is found that contains the closing marker (`#@-`). + * + * @see self::isTemplateEnd() for the check whether a closing marker was provided. + * + * @return boolean + */ + public function isTemplateStart() + { + return $this->isTemplateStart; + } + + /** + * Returns whether this DocBlock is the end of a Template section. + * + * @see self::isTemplateStart() for a more complete description of the Docblock Template functionality. + * + * @return boolean + */ + public function isTemplateEnd() + { + return $this->isTemplateEnd; + } + + /** + * Returns the tags for this DocBlock. + * + * @return Tag[] + */ + public function getTags() + { + return $this->tags; + } + + /** + * Returns an array of tags matching the given name. If no tags are found + * an empty array is returned. + * + * @param string $name String to search by. + * + * @return Tag[] + */ + public function getTagsByName($name) + { + Assert::string($name); + + $result = array(); + + /** @var Tag $tag */ + foreach ($this->getTags() as $tag) { + if ($tag->getName() != $name) { + continue; + } + + $result[] = $tag; + } + + return $result; + } + + /** + * Checks if a tag of a certain type is present in this DocBlock. + * + * @param string $name Tag name to check for. + * + * @return bool + */ + public function hasTag($name) + { + Assert::string($name); + + /** @var Tag $tag */ + foreach ($this->getTags() as $tag) { + if ($tag->getName() == $name) { + return true; + } + } + + return false; + } + + /** + * Adds a tag to this DocBlock. + * + * @param Tag $tag The tag to add. + * + * @return void + */ + private function addTag(Tag $tag) + { + $this->tags[] = $tag; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php new file mode 100644 index 00000000..d1d7fc64 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php @@ -0,0 +1,103 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter; +use Webmozart\Assert\Assert; + +/** + * Object representing to description for a DocBlock. + * + * A Description object can consist of plain text but can also include tags. A Description Formatter can then combine + * a body template with sprintf-style placeholders together with formatted tags in order to reconstitute a complete + * description text using the format that you would prefer. + * + * Because parsing a Description text can be a verbose process this is handled by the {@see DescriptionFactory}. It is + * thus recommended to use that to create a Description object, like this: + * + * $description = $descriptionFactory->create('This is a {@see Description}', $context); + * + * The description factory will interpret the given body and create a body template and list of tags from them, and pass + * that onto the constructor if this class. + * + * > The $context variable is a class of type {@see \phpDocumentor\Reflection\Types\Context} and contains the namespace + * > and the namespace aliases that apply to this DocBlock. These are used by the Factory to resolve and expand partial + * > type names and FQSENs. + * + * If you do not want to use the DescriptionFactory you can pass a body template and tag listing like this: + * + * $description = new Description( + * 'This is a %1$s', + * [ new See(new Fqsen('\phpDocumentor\Reflection\DocBlock\Description')) ] + * ); + * + * It is generally recommended to use the Factory as that will also apply escaping rules, while the Description object + * is mainly responsible for rendering. + * + * @see DescriptionFactory to create a new Description. + * @see Description\Formatter for the formatting of the body and tags. + */ +class Description +{ + /** @var string */ + private $bodyTemplate; + + /** @var Tag[] */ + private $tags; + + /** + * Initializes a Description with its body (template) and a listing of the tags used in the body template. + * + * @param string $bodyTemplate + * @param Tag[] $tags + */ + public function __construct($bodyTemplate, array $tags = []) + { + Assert::string($bodyTemplate); + + $this->bodyTemplate = $bodyTemplate; + $this->tags = $tags; + } + + /** + * Renders this description as a string where the provided formatter will format the tags in the expected string + * format. + * + * @param Formatter|null $formatter + * + * @return string + */ + public function render(Formatter $formatter = null) + { + if ($formatter === null) { + $formatter = new PassthroughFormatter(); + } + + $tags = []; + foreach ($this->tags as $tag) { + $tags[] = '{' . $formatter->format($tag) . '}'; + } + return vsprintf($this->bodyTemplate, $tags); + } + + /** + * Returns a plain string representation of this description. + * + * @return string + */ + public function __toString() + { + return $this->render(); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php new file mode 100644 index 00000000..f34d0f7e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php @@ -0,0 +1,192 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\Types\Context as TypeContext; + +/** + * Creates a new Description object given a body of text. + * + * Descriptions in phpDocumentor are somewhat complex entities as they can contain one or more tags inside their + * body that can be replaced with a readable output. The replacing is done by passing a Formatter object to the + * Description object's `render` method. + * + * In addition to the above does a Description support two types of escape sequences: + * + * 1. `{@}` to escape the `@` character to prevent it from being interpreted as part of a tag, i.e. `{{@}link}` + * 2. `{}` to escape the `}` character, this can be used if you want to use the `}` character in the description + * of an inline tag. + * + * If a body consists of multiple lines then this factory will also remove any superfluous whitespace at the beginning + * of each line while maintaining any indentation that is used. This will prevent formatting parsers from tripping + * over unexpected spaces as can be observed with tag descriptions. + */ +class DescriptionFactory +{ + /** @var TagFactory */ + private $tagFactory; + + /** + * Initializes this factory with the means to construct (inline) tags. + * + * @param TagFactory $tagFactory + */ + public function __construct(TagFactory $tagFactory) + { + $this->tagFactory = $tagFactory; + } + + /** + * Returns the parsed text of this description. + * + * @param string $contents + * @param TypeContext $context + * + * @return Description + */ + public function create($contents, TypeContext $context = null) + { + list($text, $tags) = $this->parse($this->lex($contents), $context); + + return new Description($text, $tags); + } + + /** + * Strips the contents from superfluous whitespace and splits the description into a series of tokens. + * + * @param string $contents + * + * @return string[] A series of tokens of which the description text is composed. + */ + private function lex($contents) + { + $contents = $this->removeSuperfluousStartingWhitespace($contents); + + // performance optimalization; if there is no inline tag, don't bother splitting it up. + if (strpos($contents, '{@') === false) { + return [$contents]; + } + + return preg_split( + '/\{ + # "{@}" is not a valid inline tag. This ensures that we do not treat it as one, but treat it literally. + (?!@\}) + # We want to capture the whole tag line, but without the inline tag delimiters. + (\@ + # Match everything up to the next delimiter. + [^{}]* + # Nested inline tag content should not be captured, or it will appear in the result separately. + (?: + # Match nested inline tags. + (?: + # Because we did not catch the tag delimiters earlier, we must be explicit with them here. + # Notice that this also matches "{}", as a way to later introduce it as an escape sequence. + \{(?1)?\} + | + # Make sure we match hanging "{". + \{ + ) + # Match content after the nested inline tag. + [^{}]* + )* # If there are more inline tags, match them as well. We use "*" since there may not be any + # nested inline tags. + ) + \}/Sux', + $contents, + null, + PREG_SPLIT_DELIM_CAPTURE + ); + } + + /** + * Parses the stream of tokens in to a new set of tokens containing Tags. + * + * @param string[] $tokens + * @param TypeContext $context + * + * @return string[]|Tag[] + */ + private function parse($tokens, TypeContext $context) + { + $count = count($tokens); + $tagCount = 0; + $tags = []; + + for ($i = 1; $i < $count; $i += 2) { + $tags[] = $this->tagFactory->create($tokens[$i], $context); + $tokens[$i] = '%' . ++$tagCount . '$s'; + } + + //In order to allow "literal" inline tags, the otherwise invalid + //sequence "{@}" is changed to "@", and "{}" is changed to "}". + //"%" is escaped to "%%" because of vsprintf. + //See unit tests for examples. + for ($i = 0; $i < $count; $i += 2) { + $tokens[$i] = str_replace(['{@}', '{}', '%'], ['@', '}', '%%'], $tokens[$i]); + } + + return [implode('', $tokens), $tags]; + } + + /** + * Removes the superfluous from a multi-line description. + * + * When a description has more than one line then it can happen that the second and subsequent lines have an + * additional indentation. This is commonly in use with tags like this: + * + * {@}since 1.1.0 This is an example + * description where we have an + * indentation in the second and + * subsequent lines. + * + * If we do not normalize the indentation then we have superfluous whitespace on the second and subsequent + * lines and this may cause rendering issues when, for example, using a Markdown converter. + * + * @param string $contents + * + * @return string + */ + private function removeSuperfluousStartingWhitespace($contents) + { + $lines = explode("\n", $contents); + + // if there is only one line then we don't have lines with superfluous whitespace and + // can use the contents as-is + if (count($lines) <= 1) { + return $contents; + } + + // determine how many whitespace characters need to be stripped + $startingSpaceCount = 9999999; + for ($i = 1; $i < count($lines); $i++) { + // lines with a no length do not count as they are not indented at all + if (strlen(trim($lines[$i])) === 0) { + continue; + } + + // determine the number of prefixing spaces by checking the difference in line length before and after + // an ltrim + $startingSpaceCount = min($startingSpaceCount, strlen($lines[$i]) - strlen(ltrim($lines[$i]))); + } + + // strip the number of spaces from each line + if ($startingSpaceCount > 0) { + for ($i = 1; $i < count($lines); $i++) { + $lines[$i] = substr($lines[$i], $startingSpaceCount); + } + } + + return implode("\n", $lines); + } + +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php new file mode 100644 index 00000000..3cc5dab3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php @@ -0,0 +1,170 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Tags\Example; + +/** + * Class used to find an example file's location based on a given ExampleDescriptor. + */ +class ExampleFinder +{ + /** @var string */ + private $sourceDirectory = ''; + + /** @var string[] */ + private $exampleDirectories = array(); + + /** + * Attempts to find the example contents for the given descriptor. + * + * @param Example $example + * + * @return string + */ + public function find(Example $example) + { + $filename = $example->getFilePath(); + + $file = $this->getExampleFileContents($filename); + if (!$file) { + return "** File not found : {$filename} **"; + } + + return implode('', array_slice($file, $example->getStartingLine() - 1, $example->getLineCount())); + } + + /** + * Registers the project's root directory where an 'examples' folder can be expected. + * + * @param string $directory + * + * @return void + */ + public function setSourceDirectory($directory = '') + { + $this->sourceDirectory = $directory; + } + + /** + * Returns the project's root directory where an 'examples' folder can be expected. + * + * @return string + */ + public function getSourceDirectory() + { + return $this->sourceDirectory; + } + + /** + * Registers a series of directories that may contain examples. + * + * @param string[] $directories + */ + public function setExampleDirectories(array $directories) + { + $this->exampleDirectories = $directories; + } + + /** + * Returns a series of directories that may contain examples. + * + * @return string[] + */ + public function getExampleDirectories() + { + return $this->exampleDirectories; + } + + /** + * Attempts to find the requested example file and returns its contents or null if no file was found. + * + * This method will try several methods in search of the given example file, the first one it encounters is + * returned: + * + * 1. Iterates through all examples folders for the given filename + * 2. Checks the source folder for the given filename + * 3. Checks the 'examples' folder in the current working directory for examples + * 4. Checks the path relative to the current working directory for the given filename + * + * @param string $filename + * + * @return string|null + */ + private function getExampleFileContents($filename) + { + $normalizedPath = null; + + foreach ($this->exampleDirectories as $directory) { + $exampleFileFromConfig = $this->constructExamplePath($directory, $filename); + if (is_readable($exampleFileFromConfig)) { + $normalizedPath = $exampleFileFromConfig; + break; + } + } + + if (!$normalizedPath) { + if (is_readable($this->getExamplePathFromSource($filename))) { + $normalizedPath = $this->getExamplePathFromSource($filename); + } elseif (is_readable($this->getExamplePathFromExampleDirectory($filename))) { + $normalizedPath = $this->getExamplePathFromExampleDirectory($filename); + } elseif (is_readable($filename)) { + $normalizedPath = $filename; + } + } + + return $normalizedPath && is_readable($normalizedPath) ? file($normalizedPath) : null; + } + + /** + * Get example filepath based on the example directory inside your project. + * + * @param string $file + * + * @return string + */ + private function getExamplePathFromExampleDirectory($file) + { + return getcwd() . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $file; + } + + /** + * Returns a path to the example file in the given directory.. + * + * @param string $directory + * @param string $file + * + * @return string + */ + private function constructExamplePath($directory, $file) + { + return rtrim($directory, '\\/') . DIRECTORY_SEPARATOR . $file; + } + + /** + * Get example filepath based on sourcecode. + * + * @param string $file + * + * @return string + */ + private function getExamplePathFromSource($file) + { + return sprintf( + '%s%s%s', + trim($this->getSourceDirectory(), '\\/'), + DIRECTORY_SEPARATOR, + trim($file, '"') + ); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php new file mode 100644 index 00000000..7f1c89d3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php @@ -0,0 +1,143 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock; +use Webmozart\Assert\Assert; + +/** + * Converts a DocBlock back from an object to a complete DocComment including Asterisks. + */ +class Serializer +{ + /** @var string The string to indent the comment with. */ + protected $indentString = ' '; + + /** @var int The number of times the indent string is repeated. */ + protected $indent = 0; + + /** @var bool Whether to indent the first line with the given indent amount and string. */ + protected $isFirstLineIndented = true; + + /** @var int|null The max length of a line. */ + protected $lineLength = null; + + /** + * Create a Serializer instance. + * + * @param int $indent The number of times the indent string is repeated. + * @param string $indentString The string to indent the comment with. + * @param bool $indentFirstLine Whether to indent the first line. + * @param int|null $lineLength The max length of a line or NULL to disable line wrapping. + */ + public function __construct($indent = 0, $indentString = ' ', $indentFirstLine = true, $lineLength = null) + { + Assert::integer($indent); + Assert::string($indentString); + Assert::boolean($indentFirstLine); + Assert::nullOrInteger($lineLength); + + $this->indent = $indent; + $this->indentString = $indentString; + $this->isFirstLineIndented = $indentFirstLine; + $this->lineLength = $lineLength; + } + + /** + * Generate a DocBlock comment. + * + * @param DocBlock $docblock The DocBlock to serialize. + * + * @return string The serialized doc block. + */ + public function getDocComment(DocBlock $docblock) + { + $indent = str_repeat($this->indentString, $this->indent); + $firstIndent = $this->isFirstLineIndented ? $indent : ''; + // 3 === strlen(' * ') + $wrapLength = $this->lineLength ? $this->lineLength - strlen($indent) - 3 : null; + + $text = $this->removeTrailingSpaces( + $indent, + $this->addAsterisksForEachLine( + $indent, + $this->getSummaryAndDescriptionTextBlock($docblock, $wrapLength) + ) + ); + + $comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n"; + $comment = $this->addTagBlock($docblock, $wrapLength, $indent, $comment); + $comment .= $indent . ' */'; + + return $comment; + } + + /** + * @param $indent + * @param $text + * @return mixed + */ + private function removeTrailingSpaces($indent, $text) + { + return str_replace("\n{$indent} * \n", "\n{$indent} *\n", $text); + } + + /** + * @param $indent + * @param $text + * @return mixed + */ + private function addAsterisksForEachLine($indent, $text) + { + return str_replace("\n", "\n{$indent} * ", $text); + } + + /** + * @param DocBlock $docblock + * @param $wrapLength + * @return string + */ + private function getSummaryAndDescriptionTextBlock(DocBlock $docblock, $wrapLength) + { + $text = $docblock->getSummary() . ((string)$docblock->getDescription() ? "\n\n" . $docblock->getDescription() + : ''); + if ($wrapLength !== null) { + $text = wordwrap($text, $wrapLength); + return $text; + } + return $text; + } + + /** + * @param DocBlock $docblock + * @param $wrapLength + * @param $indent + * @param $comment + * @return string + */ + private function addTagBlock(DocBlock $docblock, $wrapLength, $indent, $comment) + { + foreach ($docblock->getTags() as $tag) { + $formatter = new DocBlock\Tags\Formatter\PassthroughFormatter(); + $tagText = $formatter->format($tag); + if ($wrapLength !== null) { + $tagText = wordwrap($tagText, $wrapLength); + } + $tagText = str_replace("\n", "\n{$indent} * ", $tagText); + + $comment .= "{$indent} * {$tagText}\n"; + } + + return $comment; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php new file mode 100644 index 00000000..0a656466 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php @@ -0,0 +1,314 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock\Tags\Factory\StaticMethod; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Creates a Tag object given the contents of a tag. + * + * This Factory is capable of determining the appropriate class for a tag and instantiate it using its `create` + * factory method. The `create` factory method of a Tag can have a variable number of arguments; this way you can + * pass the dependencies that you need to construct a tag object. + * + * > Important: each parameter in addition to the body variable for the `create` method must default to null, otherwise + * > it violates the constraint with the interface; it is recommended to use the {@see Assert::notNull()} method to + * > verify that a dependency is actually passed. + * + * This Factory also features a Service Locator component that is used to pass the right dependencies to the + * `create` method of a tag; each dependency should be registered as a service or as a parameter. + * + * When you want to use a Tag of your own with custom handling you need to call the `registerTagHandler` method, pass + * the name of the tag and a Fully Qualified Class Name pointing to a class that implements the Tag interface. + */ +final class StandardTagFactory implements TagFactory +{ + /** PCRE regular expression matching a tag name. */ + const REGEX_TAGNAME = '[\w\-\_\\\\]+'; + + /** + * @var string[] An array with a tag as a key, and an FQCN to a class that handles it as an array value. + */ + private $tagHandlerMappings = [ + 'author' => '\phpDocumentor\Reflection\DocBlock\Tags\Author', + 'covers' => '\phpDocumentor\Reflection\DocBlock\Tags\Covers', + 'deprecated' => '\phpDocumentor\Reflection\DocBlock\Tags\Deprecated', + // 'example' => '\phpDocumentor\Reflection\DocBlock\Tags\Example', + 'link' => '\phpDocumentor\Reflection\DocBlock\Tags\Link', + 'method' => '\phpDocumentor\Reflection\DocBlock\Tags\Method', + 'param' => '\phpDocumentor\Reflection\DocBlock\Tags\Param', + 'property-read' => '\phpDocumentor\Reflection\DocBlock\Tags\PropertyRead', + 'property' => '\phpDocumentor\Reflection\DocBlock\Tags\Property', + 'property-write' => '\phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite', + 'return' => '\phpDocumentor\Reflection\DocBlock\Tags\Return_', + 'see' => '\phpDocumentor\Reflection\DocBlock\Tags\See', + 'since' => '\phpDocumentor\Reflection\DocBlock\Tags\Since', + 'source' => '\phpDocumentor\Reflection\DocBlock\Tags\Source', + 'throw' => '\phpDocumentor\Reflection\DocBlock\Tags\Throws', + 'throws' => '\phpDocumentor\Reflection\DocBlock\Tags\Throws', + 'uses' => '\phpDocumentor\Reflection\DocBlock\Tags\Uses', + 'var' => '\phpDocumentor\Reflection\DocBlock\Tags\Var_', + 'version' => '\phpDocumentor\Reflection\DocBlock\Tags\Version' + ]; + + /** + * @var \ReflectionParameter[][] a lazy-loading cache containing parameters for each tagHandler that has been used. + */ + private $tagHandlerParameterCache = []; + + /** + * @var FqsenResolver + */ + private $fqsenResolver; + + /** + * @var mixed[] an array representing a simple Service Locator where we can store parameters and + * services that can be inserted into the Factory Methods of Tag Handlers. + */ + private $serviceLocator = []; + + /** + * Initialize this tag factory with the means to resolve an FQSEN and optionally a list of tag handlers. + * + * If no tag handlers are provided than the default list in the {@see self::$tagHandlerMappings} property + * is used. + * + * @param FqsenResolver $fqsenResolver + * @param string[] $tagHandlers + * + * @see self::registerTagHandler() to add a new tag handler to the existing default list. + */ + public function __construct(FqsenResolver $fqsenResolver, array $tagHandlers = null) + { + $this->fqsenResolver = $fqsenResolver; + if ($tagHandlers !== null) { + $this->tagHandlerMappings = $tagHandlers; + } + + $this->addService($fqsenResolver, FqsenResolver::class); + } + + /** + * {@inheritDoc} + */ + public function create($tagLine, TypeContext $context = null) + { + if (! $context) { + $context = new TypeContext(''); + } + + list($tagName, $tagBody) = $this->extractTagParts($tagLine); + + return $this->createTag($tagBody, $tagName, $context); + } + + /** + * {@inheritDoc} + */ + public function addParameter($name, $value) + { + $this->serviceLocator[$name] = $value; + } + + /** + * {@inheritDoc} + */ + public function addService($service, $alias = null) + { + $this->serviceLocator[$alias ?: get_class($service)] = $service; + } + + /** + * {@inheritDoc} + */ + public function registerTagHandler($tagName, $handler) + { + Assert::stringNotEmpty($tagName); + Assert::stringNotEmpty($handler); + Assert::classExists($handler); + Assert::implementsInterface($handler, StaticMethod::class); + + if (strpos($tagName, '\\') && $tagName[0] !== '\\') { + throw new \InvalidArgumentException( + 'A namespaced tag must have a leading backslash as it must be fully qualified' + ); + } + + $this->tagHandlerMappings[$tagName] = $handler; + } + + /** + * Extracts all components for a tag. + * + * @param string $tagLine + * + * @return string[] + */ + private function extractTagParts($tagLine) + { + $matches = array(); + if (! preg_match('/^@(' . self::REGEX_TAGNAME . ')(?:\s*([^\s].*)|$)?/us', $tagLine, $matches)) { + throw new \InvalidArgumentException( + 'The tag "' . $tagLine . '" does not seem to be wellformed, please check it for errors' + ); + } + + if (count($matches) < 3) { + $matches[] = ''; + } + + return array_slice($matches, 1); + } + + /** + * Creates a new tag object with the given name and body or returns null if the tag name was recognized but the + * body was invalid. + * + * @param string $body + * @param string $name + * @param TypeContext $context + * + * @return Tag|null + */ + private function createTag($body, $name, TypeContext $context) + { + $handlerClassName = $this->findHandlerClassName($name, $context); + $arguments = $this->getArgumentsForParametersFromWiring( + $this->fetchParametersForHandlerFactoryMethod($handlerClassName), + $this->getServiceLocatorWithDynamicParameters($context, $name, $body) + ) + ; + + return call_user_func_array([$handlerClassName, 'create'], $arguments); + } + + /** + * Determines the Fully Qualified Class Name of the Factory or Tag (containing a Factory Method `create`). + * + * @param string $tagName + * @param TypeContext $context + * + * @return string + */ + private function findHandlerClassName($tagName, TypeContext $context) + { + $handlerClassName = Generic::class; + if (isset($this->tagHandlerMappings[$tagName])) { + $handlerClassName = $this->tagHandlerMappings[$tagName]; + } elseif ($this->isAnnotation($tagName)) { + // TODO: Annotation support is planned for a later stage and as such is disabled for now + // $tagName = (string)$this->fqsenResolver->resolve($tagName, $context); + // if (isset($this->annotationMappings[$tagName])) { + // $handlerClassName = $this->annotationMappings[$tagName]; + // } + } + + return $handlerClassName; + } + + /** + * Retrieves the arguments that need to be passed to the Factory Method with the given Parameters. + * + * @param \ReflectionParameter[] $parameters + * @param mixed[] $locator + * + * @return mixed[] A series of values that can be passed to the Factory Method of the tag whose parameters + * is provided with this method. + */ + private function getArgumentsForParametersFromWiring($parameters, $locator) + { + $arguments = []; + foreach ($parameters as $index => $parameter) { + $typeHint = $parameter->getClass() ? $parameter->getClass()->getName() : null; + if (isset($locator[$typeHint])) { + $arguments[] = $locator[$typeHint]; + continue; + } + + $parameterName = $parameter->getName(); + if (isset($locator[$parameterName])) { + $arguments[] = $locator[$parameterName]; + continue; + } + + $arguments[] = null; + } + + return $arguments; + } + + /** + * Retrieves a series of ReflectionParameter objects for the static 'create' method of the given + * tag handler class name. + * + * @param string $handlerClassName + * + * @return \ReflectionParameter[] + */ + private function fetchParametersForHandlerFactoryMethod($handlerClassName) + { + if (! isset($this->tagHandlerParameterCache[$handlerClassName])) { + $methodReflection = new \ReflectionMethod($handlerClassName, 'create'); + $this->tagHandlerParameterCache[$handlerClassName] = $methodReflection->getParameters(); + } + + return $this->tagHandlerParameterCache[$handlerClassName]; + } + + /** + * Returns a copy of this class' Service Locator with added dynamic parameters, such as the tag's name, body and + * Context. + * + * @param TypeContext $context The Context (namespace and aliasses) that may be passed and is used to resolve FQSENs. + * @param string $tagName The name of the tag that may be passed onto the factory method of the Tag class. + * @param string $tagBody The body of the tag that may be passed onto the factory method of the Tag class. + * + * @return mixed[] + */ + private function getServiceLocatorWithDynamicParameters(TypeContext $context, $tagName, $tagBody) + { + $locator = array_merge( + $this->serviceLocator, + [ + 'name' => $tagName, + 'body' => $tagBody, + TypeContext::class => $context + ] + ); + + return $locator; + } + + /** + * Returns whether the given tag belongs to an annotation. + * + * @param string $tagContent + * + * @todo this method should be populated once we implement Annotation notation support. + * + * @return bool + */ + private function isAnnotation($tagContent) + { + // 1. Contains a namespace separator + // 2. Contains parenthesis + // 3. Is present in a list of known annotations (make the algorithm smart by first checking is the last part + // of the annotation class name matches the found tag name + + return false; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php new file mode 100644 index 00000000..e7653678 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php @@ -0,0 +1,26 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +interface Tag +{ + public function getName(); + + public static function create($body); + + public function render(Formatter $formatter = null); + + public function __toString(); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php new file mode 100644 index 00000000..3c1d1132 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php @@ -0,0 +1,93 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\Types\Context as TypeContext; + +interface TagFactory +{ + /** + * Adds a parameter to the service locator that can be injected in a tag's factory method. + * + * When calling a tag's "create" method we always check the signature for dependencies to inject. One way is to + * typehint a parameter in the signature so that we can use that interface or class name to inject a dependency + * (see {@see addService()} for more information on that). + * + * Another way is to check the name of the argument against the names in the Service Locator. With this method + * you can add a variable that will be inserted when a tag's create method is not typehinted and has a matching + * name. + * + * Be aware that there are two reserved names: + * + * - name, representing the name of the tag. + * - body, representing the complete body of the tag. + * + * These parameters are injected at the last moment and will override any existing parameter with those names. + * + * @param string $name + * @param mixed $value + * + * @return void + */ + public function addParameter($name, $value); + + /** + * Registers a service with the Service Locator using the FQCN of the class or the alias, if provided. + * + * When calling a tag's "create" method we always check the signature for dependencies to inject. If a parameter + * has a typehint then the ServiceLocator is queried to see if a Service is registered for that typehint. + * + * Because interfaces are regularly used as type-hints this method provides an alias parameter; if the FQCN of the + * interface is passed as alias then every time that interface is requested the provided service will be returned. + * + * @param object $service + * @param string $alias + * + * @return void + */ + public function addService($service); + + /** + * Factory method responsible for instantiating the correct sub type. + * + * @param string $tagLine The text for this tag, including description. + * @param TypeContext $context + * + * @throws \InvalidArgumentException if an invalid tag line was presented. + * + * @return Tag A new tag object. + */ + public function create($tagLine, TypeContext $context = null); + + /** + * Registers a handler for tags. + * + * If you want to use your own tags then you can use this method to instruct the TagFactory to register the name + * of a tag with the FQCN of a 'Tag Handler'. The Tag handler should implement the {@see Tag} interface (and thus + * the create method). + * + * @param string $tagName Name of tag to register a handler for. When registering a namespaced tag, the full + * name, along with a prefixing slash MUST be provided. + * @param string $handler FQCN of handler. + * + * @throws \InvalidArgumentException if the tag name is not a string + * @throws \InvalidArgumentException if the tag name is namespaced (contains backslashes) but does not start with + * a backslash + * @throws \InvalidArgumentException if the handler is not a string + * @throws \InvalidArgumentException if the handler is not an existing class + * @throws \InvalidArgumentException if the handler does not implement the {@see Tag} interface + * + * @return void + */ + public function registerTagHandler($tagName, $handler); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php new file mode 100644 index 00000000..41a27886 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php @@ -0,0 +1,100 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Webmozart\Assert\Assert; + +/** + * Reflection class for an {@}author tag in a Docblock. + */ +final class Author extends BaseTag implements Factory\StaticMethod +{ + /** @var string register that this is the author tag. */ + protected $name = 'author'; + + /** @var string The name of the author */ + private $authorName = ''; + + /** @var string The email of the author */ + private $authorEmail = ''; + + /** + * Initializes this tag with the author name and e-mail. + * + * @param string $authorName + * @param string $authorEmail + */ + public function __construct($authorName, $authorEmail) + { + Assert::string($authorName); + Assert::string($authorEmail); + if ($authorEmail && !filter_var($authorEmail, FILTER_VALIDATE_EMAIL)) { + throw new \InvalidArgumentException('The author tag does not have a valid e-mail address'); + } + + $this->authorName = $authorName; + $this->authorEmail = $authorEmail; + } + + /** + * Gets the author's name. + * + * @return string The author's name. + */ + public function getAuthorName() + { + return $this->authorName; + } + + /** + * Returns the author's email. + * + * @return string The author's email. + */ + public function getEmail() + { + return $this->authorEmail; + } + + /** + * Returns this tag in string form. + * + * @return string + */ + public function __toString() + { + return $this->authorName . '<' . $this->authorEmail . '>'; + } + + /** + * Attempts to create a new Author object based on †he tag body. + * + * @param string $body + * + * @return static + */ + public static function create($body) + { + Assert::string($body); + + $splitTagContent = preg_match('/^([^\<]*)(?:\<([^\>]*)\>)?$/u', $body, $matches); + if (!$splitTagContent) { + return null; + } + + $authorName = trim($matches[1]); + $email = isset($matches[2]) ? trim($matches[2]) : ''; + + return new static($authorName, $email); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php new file mode 100644 index 00000000..14bb7177 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php @@ -0,0 +1,52 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock; +use phpDocumentor\Reflection\DocBlock\Description; + +/** + * Parses a tag definition for a DocBlock. + */ +abstract class BaseTag implements DocBlock\Tag +{ + /** @var string Name of the tag */ + protected $name = ''; + + /** @var Description|null Description of the tag. */ + protected $description; + + /** + * Gets the name of this tag. + * + * @return string The name of this tag. + */ + public function getName() + { + return $this->name; + } + + public function getDescription() + { + return $this->description; + } + + public function render(Formatter $formatter = null) + { + if ($formatter === null) { + $formatter = new Formatter\PassthroughFormatter(); + } + + return $formatter->format($this); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php new file mode 100644 index 00000000..31b4f82c --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php @@ -0,0 +1,84 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\FqsenResolver; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a @covers tag in a Docblock. + */ +final class Covers extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'covers'; + + /** @var Fqsen */ + private $refers = null; + + /** + * Initializes this tag. + * + * @param Fqsen $refers + * @param Description $description + */ + public function __construct(Fqsen $refers, Description $description = null) + { + $this->refers = $refers; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + DescriptionFactory $descriptionFactory = null, + FqsenResolver $resolver = null, + TypeContext $context = null + ) + { + Assert::string($body); + Assert::notEmpty($body); + + $parts = preg_split('/\s+/Su', $body, 2); + + return new static( + $resolver->resolve($parts[0], $context), + $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context) + ); + } + + /** + * Returns the structural element this tag refers to. + * + * @return Fqsen + */ + public function getReference() + { + return $this->refers; + } + + /** + * Returns a string representation of this tag. + * + * @return string + */ + public function __toString() + { + return $this->refers . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php new file mode 100644 index 00000000..7c1039fa --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php @@ -0,0 +1,97 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}deprecated tag in a Docblock. + */ +final class Deprecated extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'deprecated'; + + /** + * PCRE regular expression matching a version vector. + * Assumes the "x" modifier. + */ + const REGEX_VECTOR = '(?: + # Normal release vectors. + \d\S* + | + # VCS version vectors. Per PHPCS, they are expected to + # follow the form of the VCS name, followed by ":", followed + # by the version vector itself. + # By convention, popular VCSes like CVS, SVN and GIT use "$" + # around the actual version vector. + [^\s\:]+\:\s*\$[^\$]+\$ + )'; + + /** @var string The version vector. */ + private $version = ''; + + public function __construct($version = null, Description $description = null) + { + Assert::nullOrStringNotEmpty($version); + + $this->version = $version; + $this->description = $description; + } + + /** + * @return static + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::nullOrString($body); + if (empty($body)) { + return new static(); + } + + $matches = []; + if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) { + return new static( + null, + null !== $descriptionFactory ? $descriptionFactory->create($body, $context) : null + ); + } + + return new static( + $matches[1], + $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context) + ); + } + + /** + * Gets the version section of the tag. + * + * @return string + */ + public function getVersion() + { + return $this->version; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->version . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php new file mode 100644 index 00000000..571ef8df --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php @@ -0,0 +1,158 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Tag; + +/** + * Reflection class for a {@}example tag in a Docblock. + */ +final class Example extends BaseTag +{ + /** + * @var string Path to a file to use as an example. May also be an absolute URI. + */ + private $filePath = ''; + + /** + * @var bool Whether the file path component represents an URI. This determines how the file portion + * appears at {@link getContent()}. + */ + private $isURI = false; + + /** + * {@inheritdoc} + */ + public function getContent() + { + if (null === $this->description) { + $filePath = '"' . $this->filePath . '"'; + if ($this->isURI) { + $filePath = $this->isUriRelative($this->filePath) + ? str_replace('%2F', '/', rawurlencode($this->filePath)) + :$this->filePath; + } + + $this->description = $filePath . ' ' . parent::getContent(); + } + + return $this->description; + } + + /** + * {@inheritdoc} + */ + public static function create($body) + { + // File component: File path in quotes or File URI / Source information + if (! preg_match('/^(?:\"([^\"]+)\"|(\S+))(?:\s+(.*))?$/sux', $body, $matches)) { + return null; + } + + $filePath = null; + $fileUri = null; + if ('' !== $matches[1]) { + $filePath = $matches[1]; + } else { + $fileUri = $matches[2]; + } + + $startingLine = 1; + $lineCount = null; + $description = null; + + // Starting line / Number of lines / Description + if (preg_match('/^([1-9]\d*)\s*(?:((?1))\s+)?(.*)$/sux', $matches[3], $matches)) { + $startingLine = (int)$matches[1]; + if (isset($matches[2]) && $matches[2] !== '') { + $lineCount = (int)$matches[2]; + } + $description = $matches[3]; + } + + return new static($filePath, $fileUri, $startingLine, $lineCount, $description); + } + + /** + * Returns the file path. + * + * @return string Path to a file to use as an example. + * May also be an absolute URI. + */ + public function getFilePath() + { + return $this->filePath; + } + + /** + * Sets the file path. + * + * @param string $filePath The new file path to use for the example. + * + * @return $this + */ + public function setFilePath($filePath) + { + $this->isURI = false; + $this->filePath = trim($filePath); + + $this->description = null; + return $this; + } + + /** + * Sets the file path as an URI. + * + * This function is equivalent to {@link setFilePath()}, except that it + * converts an URI to a file path before that. + * + * There is no getFileURI(), as {@link getFilePath()} is compatible. + * + * @param string $uri The new file URI to use as an example. + * + * @return $this + */ + public function setFileURI($uri) + { + $this->isURI = true; + $this->description = null; + + $this->filePath = $this->isUriRelative($uri) + ? rawurldecode(str_replace(array('/', '\\'), '%2F', $uri)) + : $this->filePath = $uri; + + return $this; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->filePath . ($this->description ? ' ' . $this->description->render() : ''); + } + + /** + * Returns true if the provided URI is relative or contains a complete scheme (and thus is absolute). + * + * @param string $uri + * + * @return bool + */ + private function isUriRelative($uri) + { + return false === strpos($uri, ':'); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php new file mode 100644 index 00000000..98aea455 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php @@ -0,0 +1,18 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Factory; + +interface StaticMethod +{ + public static function create($body); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php new file mode 100644 index 00000000..b9ca0b8a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php @@ -0,0 +1,18 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Factory; + +interface Strategy +{ + public function create($body); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php new file mode 100644 index 00000000..64b2c603 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php @@ -0,0 +1,27 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Tag; + +interface Formatter +{ + /** + * Formats a tag into a string representation according to a specific format, such as Markdown. + * + * @param Tag $tag + * + * @return string + */ + public function format(Tag $tag); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php new file mode 100644 index 00000000..aa97572c --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +class PassthroughFormatter implements Formatter +{ + /** + * Formats the given tag to return a simple plain text version. + * + * @param Tag $tag + * + * @return string + */ + public function format(Tag $tag) + { + return '@' . $tag->getName() . ' ' . (string)$tag; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php new file mode 100644 index 00000000..e4c53e00 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php @@ -0,0 +1,91 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Parses a tag definition for a DocBlock. + */ +class Generic extends BaseTag implements Factory\StaticMethod +{ + /** + * Parses a tag and populates the member variables. + * + * @param string $name Name of the tag. + * @param Description $description The contents of the given tag. + */ + public function __construct($name, Description $description = null) + { + $this->validateTagName($name); + + $this->name = $name; + $this->description = $description; + } + + /** + * Creates a new tag that represents any unknown tag type. + * + * @param string $body + * @param string $name + * @param DescriptionFactory $descriptionFactory + * @param TypeContext $context + * + * @return static + */ + public static function create( + $body, + $name = '', + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::stringNotEmpty($name); + Assert::notNull($descriptionFactory); + + $description = $descriptionFactory && $body ? $descriptionFactory->create($body, $context) : null; + + return new static($name, $description); + } + + /** + * Returns the tag as a serialized string + * + * @return string + */ + public function __toString() + { + return ($this->description ? $this->description->render() : ''); + } + + /** + * Validates if the tag name matches the expected format, otherwise throws an exception. + * + * @param string $name + * + * @return void + */ + private function validateTagName($name) + { + if (! preg_match('/^' . StandardTagFactory::REGEX_TAGNAME . '$/u', $name)) { + throw new \InvalidArgumentException( + 'The tag name "' . $name . '" is not wellformed. Tags may only consist of letters, underscores, ' + . 'hyphens and backslashes.' + ); + } + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php new file mode 100644 index 00000000..9c0e367e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php @@ -0,0 +1,77 @@ + + * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a @link tag in a Docblock. + */ +final class Link extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'link'; + + /** @var string */ + private $link = ''; + + /** + * Initializes a link to a URL. + * + * @param string $link + * @param Description $description + */ + public function __construct($link, Description $description = null) + { + Assert::string($link); + + $this->link = $link; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::string($body); + Assert::notNull($descriptionFactory); + + $parts = preg_split('/\s+/Su', $body, 2); + $description = isset($parts[1]) ? $descriptionFactory->create($parts[1], $context) : null; + + return new static($parts[0], $description); + } + + /** + * Gets the link + * + * @return string + */ + public function getLink() + { + return $this->link; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->link . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php new file mode 100644 index 00000000..d600aaaa --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php @@ -0,0 +1,230 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\Types\Void_; +use Webmozart\Assert\Assert; + +/** + * Reflection class for an {@}method in a Docblock. + */ +final class Method extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'method'; + + /** @var string */ + private $methodName = ''; + + /** @var string[] */ + private $arguments = []; + + /** @var bool */ + private $isStatic = false; + + /** @var Type */ + private $returnType; + + public function __construct( + $methodName, + array $arguments = [], + Type $returnType = null, + $static = false, + Description $description = null + ) { + Assert::stringNotEmpty($methodName); + Assert::boolean($static); + + if ($returnType === null) { + $returnType = new Void_(); + } + + $this->methodName = $methodName; + $this->arguments = $this->filterArguments($arguments); + $this->returnType = $returnType; + $this->isStatic = $static; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([ $typeResolver, $descriptionFactory ]); + + // 1. none or more whitespace + // 2. optionally the keyword "static" followed by whitespace + // 3. optionally a word with underscores followed by whitespace : as + // type for the return value + // 4. then optionally a word with underscores followed by () and + // whitespace : as method name as used by phpDocumentor + // 5. then a word with underscores, followed by ( and any character + // until a ) and whitespace : as method name with signature + // 6. any remaining text : as description + if (!preg_match( + '/^ + # Static keyword + # Declares a static method ONLY if type is also present + (?: + (static) + \s+ + )? + # Return type + (?: + ( + (?:[\w\|_\\\\]+) + # array notation + (?:\[\])* + )? + \s+ + )? + # Legacy method name (not captured) + (?: + [\w_]+\(\)\s+ + )? + # Method name + ([\w\|_\\\\]+) + # Arguments + (?: + \(([^\)]*)\) + )? + \s* + # Description + (.*) + $/sux', + $body, + $matches + )) { + return null; + } + + list(, $static, $returnType, $methodName, $arguments, $description) = $matches; + + $static = $static === 'static'; + $returnType = $typeResolver->resolve($returnType, $context); + $description = $descriptionFactory->create($description, $context); + + if ('' !== $arguments) { + $arguments = explode(',', $arguments); + foreach($arguments as &$argument) { + $argument = explode(' ', self::stripRestArg(trim($argument)), 2); + if ($argument[0][0] === '$') { + $argumentName = substr($argument[0], 1); + $argumentType = new Void_(); + } else { + $argumentType = $typeResolver->resolve($argument[0], $context); + $argumentName = ''; + if (isset($argument[1])) { + $argument[1] = self::stripRestArg($argument[1]); + $argumentName = substr($argument[1], 1); + } + } + + $argument = [ 'name' => $argumentName, 'type' => $argumentType]; + } + } else { + $arguments = []; + } + + return new static($methodName, $arguments, $returnType, $static, $description); + } + + /** + * Retrieves the method name. + * + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * @return string[] + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Checks whether the method tag describes a static method or not. + * + * @return bool TRUE if the method declaration is for a static method, FALSE otherwise. + */ + public function isStatic() + { + return $this->isStatic; + } + + /** + * @return Type + */ + public function getReturnType() + { + return $this->returnType; + } + + public function __toString() + { + $arguments = []; + foreach ($this->arguments as $argument) { + $arguments[] = $argument['type'] . ' $' . $argument['name']; + } + + return ($this->isStatic() ? 'static ' : '') + . (string)$this->returnType . ' ' + . $this->methodName + . '(' . implode(', ', $arguments) . ')' + . ($this->description ? ' ' . $this->description->render() : ''); + } + + private function filterArguments($arguments) + { + foreach ($arguments as &$argument) { + if (is_string($argument)) { + $argument = [ 'name' => $argument ]; + } + if (! isset($argument['type'])) { + $argument['type'] = new Void_(); + } + $keys = array_keys($argument); + if ($keys !== [ 'name', 'type' ]) { + throw new \InvalidArgumentException( + 'Arguments can only have the "name" and "type" fields, found: ' . var_export($keys, true) + ); + } + } + + return $arguments; + } + + private static function stripRestArg($argument) + { + if (strpos($argument, '...') === 0) { + $argument = trim(substr($argument, 3)); + } + + return $argument; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php new file mode 100644 index 00000000..1a51dc0d --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php @@ -0,0 +1,141 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for the {@}param tag in a Docblock. + */ +final class Param extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'param'; + + /** @var Type */ + private $type; + + /** @var string */ + private $variableName = ''; + + /** @var bool determines whether this is a variadic argument */ + private $isVariadic = false; + + /** + * @param string $variableName + * @param Type $type + * @param bool $isVariadic + * @param Description $description + */ + public function __construct($variableName, Type $type = null, $isVariadic = false, Description $description = null) + { + Assert::string($variableName); + Assert::boolean($isVariadic); + + $this->variableName = $variableName; + $this->type = $type; + $this->isVariadic = $isVariadic; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + $isVariadic = false; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 3) === '...') { + $isVariadic = true; + $variableName = substr($variableName, 3); + } + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $isVariadic, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns whether this tag is variadic. + * + * @return boolean + */ + public function isVariadic() + { + return $this->isVariadic; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . ($this->isVariadic() ? '...' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php new file mode 100644 index 00000000..3c597133 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}property tag in a Docblock. + */ +class Property extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'property'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php new file mode 100644 index 00000000..bf2b8056 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}property-read tag in a Docblock. + */ +class PropertyRead extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'property-read'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php new file mode 100644 index 00000000..db37e0fb --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}property-write tag in a Docblock. + */ +class PropertyWrite extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'property-write'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php new file mode 100644 index 00000000..09a5870e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php @@ -0,0 +1,73 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}return tag in a Docblock. + */ +final class Return_ extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'return'; + + /** @var Type */ + private $type; + + public function __construct(Type $type, Description $description = null) + { + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) + { + Assert::string($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + + $type = $typeResolver->resolve(isset($parts[0]) ? $parts[0] : '', $context); + $description = $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context); + + return new static($type, $description); + } + + /** + * Returns the type section of the variable. + * + * @return Type + */ + public function getType() + { + return $this->type; + } + + public function __toString() + { + return $this->type . ' ' . $this->description; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php new file mode 100644 index 00000000..64ee3d8e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php @@ -0,0 +1,81 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use Webmozart\Assert\Assert; + +/** + * Reflection class for an {@}see tag in a Docblock. + */ +class See extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'see'; + + /** @var Fqsen */ + protected $refers = null; + + /** + * Initializes this tag. + * + * @param Fqsen $refers + * @param Description $description + */ + public function __construct(Fqsen $refers, Description $description = null) + { + $this->refers = $refers; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + FqsenResolver $resolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::allNotNull([$resolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + $description = isset($parts[1]) ? $descriptionFactory->create($parts[1], $context) : null; + + return new static($resolver->resolve($parts[0], $context), $description); + } + + /** + * Returns the structural element this tag refers to. + * + * @return Fqsen + */ + public function getReference() + { + return $this->refers; + } + + /** + * Returns a string representation of this tag. + * + * @return string + */ + public function __toString() + { + return $this->refers . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php new file mode 100644 index 00000000..3d002ed3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php @@ -0,0 +1,94 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}since tag in a Docblock. + */ +final class Since extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'since'; + + /** + * PCRE regular expression matching a version vector. + * Assumes the "x" modifier. + */ + const REGEX_VECTOR = '(?: + # Normal release vectors. + \d\S* + | + # VCS version vectors. Per PHPCS, they are expected to + # follow the form of the VCS name, followed by ":", followed + # by the version vector itself. + # By convention, popular VCSes like CVS, SVN and GIT use "$" + # around the actual version vector. + [^\s\:]+\:\s*\$[^\$]+\$ + )'; + + /** @var string The version vector. */ + private $version = ''; + + public function __construct($version = null, Description $description = null) + { + Assert::nullOrStringNotEmpty($version); + + $this->version = $version; + $this->description = $description; + } + + /** + * @return static + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::nullOrString($body); + if (empty($body)) { + return new static(); + } + + $matches = []; + if (! preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) { + return null; + } + + return new static( + $matches[1], + $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context) + ); + } + + /** + * Gets the version section of the tag. + * + * @return string + */ + public function getVersion() + { + return $this->version; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->version . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php new file mode 100644 index 00000000..b0646b96 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php @@ -0,0 +1,96 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}source tag in a Docblock. + */ +final class Source extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'source'; + + /** @var int The starting line, relative to the structural element's location. */ + private $startingLine = 1; + + /** @var int|null The number of lines, relative to the starting line. NULL means "to the end". */ + private $lineCount = null; + + public function __construct($startingLine, $lineCount = null, Description $description = null) + { + Assert::integerish($startingLine); + Assert::nullOrIntegerish($lineCount); + + $this->startingLine = (int)$startingLine; + $this->lineCount = $lineCount !== null ? (int)$lineCount : null; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::stringNotEmpty($body); + Assert::notNull($descriptionFactory); + + $startingLine = 1; + $lineCount = null; + $description = null; + + // Starting line / Number of lines / Description + if (preg_match('/^([1-9]\d*)\s*(?:((?1))\s+)?(.*)$/sux', $body, $matches)) { + $startingLine = (int)$matches[1]; + if (isset($matches[2]) && $matches[2] !== '') { + $lineCount = (int)$matches[2]; + } + $description = $matches[3]; + } + + return new static($startingLine, $lineCount, $descriptionFactory->create($description, $context)); + } + + /** + * Gets the starting line. + * + * @return int The starting line, relative to the structural element's + * location. + */ + public function getStartingLine() + { + return $this->startingLine; + } + + /** + * Returns the number of lines. + * + * @return int|null The number of lines, relative to the starting line. NULL + * means "to the end". + */ + public function getLineCount() + { + return $this->lineCount; + } + + public function __toString() + { + return $this->startingLine + . ($this->lineCount !== null ? ' ' . $this->lineCount : '') + . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php new file mode 100644 index 00000000..349e773b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php @@ -0,0 +1,72 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}throws tag in a Docblock. + */ +final class Throws extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'throws'; + + /** @var Type */ + private $type; + + public function __construct(Type $type, Description $description = null) + { + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + + $type = $typeResolver->resolve(isset($parts[0]) ? $parts[0] : '', $context); + $description = $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context); + + return new static($type, $description); + } + + /** + * Returns the type section of the variable. + * + * @return Type + */ + public function getType() + { + return $this->type; + } + + public function __toString() + { + return $this->type . ' ' . $this->description; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php new file mode 100644 index 00000000..00dc3e3b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php @@ -0,0 +1,83 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}uses tag in a Docblock. + */ +final class Uses extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'uses'; + + /** @var Fqsen */ + protected $refers = null; + + /** + * Initializes this tag. + * + * @param Fqsen $refers + * @param Description $description + */ + public function __construct(Fqsen $refers, Description $description = null) + { + $this->refers = $refers; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + FqsenResolver $resolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::allNotNull([$resolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + + return new static( + $resolver->resolve($parts[0], $context), + $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context) + ); + } + + /** + * Returns the structural element this tag refers to. + * + * @return Fqsen + */ + public function getReference() + { + return $this->refers; + } + + /** + * Returns a string representation of this tag. + * + * @return string + */ + public function __toString() + { + return $this->refers . ' ' . $this->description->render(); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php new file mode 100644 index 00000000..e23c694b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}var tag in a Docblock. + */ +class Var_ extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'var'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php new file mode 100644 index 00000000..3e0e5bef --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php @@ -0,0 +1,94 @@ + + * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}version tag in a Docblock. + */ +final class Version extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'version'; + + /** + * PCRE regular expression matching a version vector. + * Assumes the "x" modifier. + */ + const REGEX_VECTOR = '(?: + # Normal release vectors. + \d\S* + | + # VCS version vectors. Per PHPCS, they are expected to + # follow the form of the VCS name, followed by ":", followed + # by the version vector itself. + # By convention, popular VCSes like CVS, SVN and GIT use "$" + # around the actual version vector. + [^\s\:]+\:\s*\$[^\$]+\$ + )'; + + /** @var string The version vector. */ + private $version = ''; + + public function __construct($version = null, Description $description = null) + { + Assert::nullOrStringNotEmpty($version); + + $this->version = $version; + $this->description = $description; + } + + /** + * @return static + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::nullOrString($body); + if (empty($body)) { + return new static(); + } + + $matches = []; + if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) { + return null; + } + + return new static( + $matches[1], + $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context) + ); + } + + /** + * Gets the version section of the tag. + * + * @return string + */ + public function getVersion() + { + return $this->version; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->version . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php new file mode 100644 index 00000000..9ec2455d --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php @@ -0,0 +1,277 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\TagFactory; +use Webmozart\Assert\Assert; + +final class DocBlockFactory implements DocBlockFactoryInterface +{ + /** @var DocBlock\DescriptionFactory */ + private $descriptionFactory; + + /** @var DocBlock\TagFactory */ + private $tagFactory; + + /** + * Initializes this factory with the required subcontractors. + * + * @param DescriptionFactory $descriptionFactory + * @param TagFactory $tagFactory + */ + public function __construct(DescriptionFactory $descriptionFactory, TagFactory $tagFactory) + { + $this->descriptionFactory = $descriptionFactory; + $this->tagFactory = $tagFactory; + } + + /** + * Factory method for easy instantiation. + * + * @param string[] $additionalTags + * + * @return DocBlockFactory + */ + public static function createInstance(array $additionalTags = []) + { + $fqsenResolver = new FqsenResolver(); + $tagFactory = new StandardTagFactory($fqsenResolver); + $descriptionFactory = new DescriptionFactory($tagFactory); + + $tagFactory->addService($descriptionFactory); + $tagFactory->addService(new TypeResolver($fqsenResolver)); + + $docBlockFactory = new self($descriptionFactory, $tagFactory); + foreach ($additionalTags as $tagName => $tagHandler) { + $docBlockFactory->registerTagHandler($tagName, $tagHandler); + } + + return $docBlockFactory; + } + + /** + * @param object|string $docblock A string containing the DocBlock to parse or an object supporting the + * getDocComment method (such as a ReflectionClass object). + * @param Types\Context $context + * @param Location $location + * + * @return DocBlock + */ + public function create($docblock, Types\Context $context = null, Location $location = null) + { + if (is_object($docblock)) { + if (!method_exists($docblock, 'getDocComment')) { + $exceptionMessage = 'Invalid object passed; the given object must support the getDocComment method'; + throw new \InvalidArgumentException($exceptionMessage); + } + + $docblock = $docblock->getDocComment(); + } + + Assert::stringNotEmpty($docblock); + + if ($context === null) { + $context = new Types\Context(''); + } + + $parts = $this->splitDocBlock($this->stripDocComment($docblock)); + list($templateMarker, $summary, $description, $tags) = $parts; + + return new DocBlock( + $summary, + $description ? $this->descriptionFactory->create($description, $context) : null, + array_filter($this->parseTagBlock($tags, $context), function($tag) { + return $tag instanceof Tag; + }), + $context, + $location, + $templateMarker === '#@+', + $templateMarker === '#@-' + ); + } + + public function registerTagHandler($tagName, $handler) + { + $this->tagFactory->registerTagHandler($tagName, $handler); + } + + /** + * Strips the asterisks from the DocBlock comment. + * + * @param string $comment String containing the comment text. + * + * @return string + */ + private function stripDocComment($comment) + { + $comment = trim(preg_replace('#[ \t]*(?:\/\*\*|\*\/|\*)?[ \t]{0,1}(.*)?#u', '$1', $comment)); + + // reg ex above is not able to remove */ from a single line docblock + if (substr($comment, -2) == '*/') { + $comment = trim(substr($comment, 0, -2)); + } + + return str_replace(array("\r\n", "\r"), "\n", $comment); + } + + /** + * Splits the DocBlock into a template marker, summary, description and block of tags. + * + * @param string $comment Comment to split into the sub-parts. + * + * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split. + * @author Mike van Riel for extending the regex with template marker support. + * + * @return string[] containing the template marker (if any), summary, description and a string containing the tags. + */ + private function splitDocBlock($comment) + { + // Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This + // method does not split tags so we return this verbatim as the fourth result (tags). This saves us the + // performance impact of running a regular expression + if (strpos($comment, '@') === 0) { + return array('', '', '', $comment); + } + + // clears all extra horizontal whitespace from the line endings to prevent parsing issues + $comment = preg_replace('/\h*$/Sum', '', $comment); + + /* + * Splits the docblock into a template marker, summary, description and tags section. + * + * - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may + * occur after it and will be stripped). + * - The short description is started from the first character until a dot is encountered followed by a + * newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing + * errors). This is optional. + * - The long description, any character until a new line is encountered followed by an @ and word + * characters (a tag). This is optional. + * - Tags; the remaining characters + * + * Big thanks to RichardJ for contributing this Regular Expression + */ + preg_match( + '/ + \A + # 1. Extract the template marker + (?:(\#\@\+|\#\@\-)\n?)? + + # 2. Extract the summary + (?: + (?! @\pL ) # The summary may not start with an @ + ( + [^\n.]+ + (?: + (?! \. \n | \n{2} ) # End summary upon a dot followed by newline or two newlines + [\n.] (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line + [^\n.]+ # Include anything else + )* + \.? + )? + ) + + # 3. Extract the description + (?: + \s* # Some form of whitespace _must_ precede a description because a summary must be there + (?! @\pL ) # The description may not start with an @ + ( + [^\n]+ + (?: \n+ + (?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line + [^\n]+ # Include anything else + )* + ) + )? + + # 4. Extract the tags (anything that follows) + (\s+ [\s\S]*)? # everything that follows + /ux', + $comment, + $matches + ); + array_shift($matches); + + while (count($matches) < 4) { + $matches[] = ''; + } + + return $matches; + } + + /** + * Creates the tag objects. + * + * @param string $tags Tag block to parse. + * @param Types\Context $context Context of the parsed Tag + * + * @return DocBlock\Tag[] + */ + private function parseTagBlock($tags, Types\Context $context) + { + $tags = $this->filterTagBlock($tags); + if (!$tags) { + return []; + } + + $result = $this->splitTagBlockIntoTagLines($tags); + foreach ($result as $key => $tagLine) { + $result[$key] = $this->tagFactory->create(trim($tagLine), $context); + } + + return $result; + } + + /** + * @param string $tags + * + * @return string[] + */ + private function splitTagBlockIntoTagLines($tags) + { + $result = array(); + foreach (explode("\n", $tags) as $tag_line) { + if (isset($tag_line[0]) && ($tag_line[0] === '@')) { + $result[] = $tag_line; + } else { + $result[count($result) - 1] .= "\n" . $tag_line; + } + } + + return $result; + } + + /** + * @param $tags + * @return string + */ + private function filterTagBlock($tags) + { + $tags = trim($tags); + if (!$tags) { + return null; + } + + if ('@' !== $tags[0]) { + // @codeCoverageIgnoreStart + // Can't simulate this; this only happens if there is an error with the parsing of the DocBlock that + // we didn't foresee. + throw new \LogicException('A tag block started with text instead of an at-sign(@): ' . $tags); + // @codeCoverageIgnoreEnd + } + + return $tags; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php new file mode 100644 index 00000000..b3533429 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php @@ -0,0 +1,23 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\See; + +/** + * @coversNothing + */ +class InterpretingDocBlocksTest extends \PHPUnit_Framework_TestCase +{ + public function testInterpretingASimpleDocBlock() + { + /** + * @var DocBlock $docblock + * @var string $summary + * @var Description $description + */ + include(__DIR__ . '/../../examples/01-interpreting-a-simple-docblock.php'); + + $descriptionText = <<assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is an example of a summary.', $summary); + $this->assertInstanceOf(Description::class, $description); + $this->assertSame($descriptionText, $description->render()); + $this->assertEmpty($docblock->getTags()); + } + + public function testInterpretingTags() + { + /** + * @var DocBlock $docblock + * @var boolean $hasSeeTag + * @var Tag[] $tags + * @var See[] $seeTags + */ + include(__DIR__ . '/../../examples/02-interpreting-tags.php'); + + $this->assertTrue($hasSeeTag); + $this->assertCount(1, $tags); + $this->assertCount(1, $seeTags); + + $this->assertInstanceOf(See::class, $tags[0]); + $this->assertInstanceOf(See::class, $seeTags[0]); + + $seeTag = $seeTags[0]; + $this->assertSame('\\' . StandardTagFactory::class, (string)$seeTag->getReference()); + $this->assertSame('', (string)$seeTag->getDescription()); + } + + public function testDescriptionsCanEscapeAtSignsAndClosingBraces() + { + /** + * @var string $docComment + * @var DocBlock $docblock + * @var Description $description + * @var string $receivedDocComment + * @var string $foundDescription + */ + + include(__DIR__ . '/../../examples/playing-with-descriptions/02-escaping.php'); + $this->assertSame(<<<'DESCRIPTION' +You can escape the @-sign by surrounding it with braces, for example: @. And escape a closing brace within an +inline tag by adding an opening brace in front of it like this: }. + +Here are example texts where you can see how they could be used in a real life situation: + + This is a text with an {@internal inline tag where a closing brace (}) is shown}. + Or an {@internal inline tag with a literal {@link} in it}. + +Do note that an {@internal inline tag that has an opening brace ({) does not break out}. +DESCRIPTION + , + $foundDescription + ) + ; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php b/vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php new file mode 100644 index 00000000..92ac22ed --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php @@ -0,0 +1,35 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\See; + +/** + * @coversNothing + */ +class ReconstitutingADocBlockTest extends \PHPUnit_Framework_TestCase +{ + public function testReconstituteADocBlock() + { + /** + * @var string $docComment + * @var string $reconstitutedDocComment + */ + include(__DIR__ . '/../../examples/03-reconstituting-a-docblock.php'); + + $this->assertSame($docComment, $reconstitutedDocComment); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php b/vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php new file mode 100644 index 00000000..984811b1 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php @@ -0,0 +1,39 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\See; + +/** + * @coversNothing + */ +class UsingTagsTest extends \PHPUnit_Framework_TestCase +{ + public function testAddingYourOwnTagUsingAStaticMethodAsFactory() + { + /** + * @var object[] $customTagObjects + * @var string $docComment + * @var string $reconstitutedDocComment + */ + include(__DIR__ . '/../../examples/04-adding-your-own-tag.php'); + + $this->assertInstanceOf(\MyTag::class, $customTagObjects[0]); + $this->assertSame('my-tag', $customTagObjects[0]->getName()); + $this->assertSame('I have a description', (string)$customTagObjects[0]->getDescription()); + $this->assertSame($docComment, $reconstitutedDocComment); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php new file mode 100644 index 00000000..d3043f9a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php @@ -0,0 +1,174 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Tags\Link; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @covers :: + */ +class DescriptionFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @dataProvider provideSimpleExampleDescriptions + */ + public function testDescriptionCanParseASimpleString($contents) + { + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->never(); + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, new Context('')); + + $this->assertSame($contents, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @dataProvider provideEscapeSequences + */ + public function testEscapeSequences($contents, $expected) + { + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->never(); + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, new Context('')); + + $this->assertSame($expected, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Link + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testDescriptionCanParseAStringWithInlineTag() + { + $contents = 'This is text for a {@link http://phpdoc.org/ description} that uses an inline tag.'; + $context = new Context(''); + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create') + ->once() + ->with('@link http://phpdoc.org/ description', $context) + ->andReturn(new Link('http://phpdoc.org/', new Description('description'))) + ; + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, $context); + + $this->assertSame($contents, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Link + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testDescriptionCanParseAStringStartingWithInlineTag() + { + $contents = '{@link http://phpdoc.org/ This} is text for a description that starts with an inline tag.'; + $context = new Context(''); + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create') + ->once() + ->with('@link http://phpdoc.org/ This', $context) + ->andReturn(new Link('http://phpdoc.org/', new Description('This'))) + ; + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, $context); + + $this->assertSame($contents, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testIfSuperfluousStartingSpacesAreRemoved() + { + $factory = new DescriptionFactory(m::mock(TagFactory::class)); + $descriptionText = <<create($descriptionText, new Context('')); + + $this->assertSame($expectedDescription, $description->render()); + } + + /** + * Provides a series of example strings that the parser should correctly interpret and return. + * + * @return string[][] + */ + public function provideSimpleExampleDescriptions() + { + return [ + ['This is text for a description.'], + ['This is text for a description containing { that is literal.'], + ['This is text for a description containing } that is literal.'], + ['This is text for a description with {just a text} that is not a tag.'], + ]; + } + + public function provideEscapeSequences() + { + return [ + ['This is text for a description with a {@}.', 'This is text for a description with a @.'], + ['This is text for a description with a {}.', 'This is text for a description with a }.'], + ]; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php new file mode 100644 index 00000000..b5917a9e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php @@ -0,0 +1,75 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Description + */ +class DescriptionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::render + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + */ + public function testDescriptionCanRenderUsingABodyWithPlaceholdersAndTags() + { + $body = 'This is a %1$s body.'; + $expected = 'This is a {@internal significant } body.'; + $tags = [new Generic('internal', new Description('significant '))]; + + $fixture = new Description($body, $tags); + + // without formatter (thus the PassthroughFormatter by default) + $this->assertSame($expected, $fixture->render()); + + // with a custom formatter + $formatter = m::mock(PassthroughFormatter::class); + $formatter->shouldReceive('format')->with($tags[0])->andReturn('@internal significant '); + $this->assertSame($expected, $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::render + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + */ + public function testDescriptionCanBeCastToString() + { + $body = 'This is a %1$s body.'; + $expected = 'This is a {@internal significant } body.'; + $tags = [new Generic('internal', new Description('significant '))]; + + $fixture = new Description($body, $tags); + + $this->assertSame($expected, (string)$fixture); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testBodyTemplateMustBeAString() + { + new Description([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php new file mode 100644 index 00000000..cb2b400f --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php @@ -0,0 +1,201 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Serializer + * @covers :: + */ +class SerializerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testReconstructsADocCommentFromADocBlock() + { + $expected = <<<'DOCCOMMENT' +/** + * This is a summary + * + * This is a description + * + * @unknown-tag Test description for the unknown tag + */ +DOCCOMMENT; + + $fixture = new Serializer(); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testAddPrefixToDocBlock() + { + $expected = <<<'DOCCOMMENT' +aa/** +aa * This is a summary +aa * +aa * This is a description +aa * +aa * @unknown-tag Test description for the unknown tag +aa */ +DOCCOMMENT; + + $fixture = new Serializer(2, 'a'); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testAddPrefixToDocBlockExceptFirstLine() + { + $expected = <<<'DOCCOMMENT' +/** +aa * This is a summary +aa * +aa * This is a description +aa * +aa * @unknown-tag Test description for the unknown tag +aa */ +DOCCOMMENT; + + $fixture = new Serializer(2, 'a', false); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testWordwrapsAroundTheGivenAmountOfCharacters() + { + $expected = <<<'DOCCOMMENT' +/** + * This is a + * summary + * + * This is a + * description + * + * @unknown-tag + * Test + * description + * for the + * unknown tag + */ +DOCCOMMENT; + + $fixture = new Serializer(0, '', true, 15); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfIndentIsNotAnInteger() + { + new Serializer([]); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfIndentStringIsNotAString() + { + new Serializer(0, []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfIndentFirstLineIsNotABoolean() + { + new Serializer(0, '', []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfLineLengthIsNotNullNorAnInteger() + { + new Serializer(0, '', false, []); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php new file mode 100644 index 00000000..0247da04 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php @@ -0,0 +1,361 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Tags\Author; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; +use phpDocumentor\Reflection\DocBlock\Tags\Return_; +use phpDocumentor\Reflection\DocBlock\Tags\See; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass phpDocumentor\Reflection\DocBlock\StandardTagFactory + * @covers :: + */ +class StandardTagFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreatingAGenericTag() + { + $expectedTagName = 'unknown-tag'; + $expectedDescriptionText = 'This is a description'; + $expectedDescription = new Description($expectedDescriptionText); + $context = new Context(''); + + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory + ->shouldReceive('create') + ->once() + ->with($expectedDescriptionText, $context) + ->andReturn($expectedDescription) + ; + + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + $tagFactory->addService($descriptionFactory, DescriptionFactory::class); + + /** @var Generic $tag */ + $tag = $tagFactory->create('@' . $expectedTagName . ' This is a description', $context); + + $this->assertInstanceOf(Generic::class, $tag); + $this->assertSame($expectedTagName, $tag->getName()); + $this->assertSame($expectedDescription, $tag->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\Author + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + */ + public function testCreatingASpecificTag() + { + $context = new Context(''); + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + + /** @var Author $tag */ + $tag = $tagFactory->create('@author Mike van Riel ', $context); + + $this->assertInstanceOf(Author::class, $tag); + $this->assertSame('author', $tag->getName()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\See + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + */ + public function testAnEmptyContextIsCreatedIfNoneIsProvided() + { + $fqsen = '\Tag'; + $resolver = m::mock(FqsenResolver::class) + ->shouldReceive('resolve') + ->with('Tag', m::type(Context::class)) + ->andReturn(new Fqsen($fqsen)) + ->getMock() + ; + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldIgnoreMissing(); + + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addService($descriptionFactory, DescriptionFactory::class); + + /** @var See $tag */ + $tag = $tagFactory->create('@see Tag'); + + $this->assertInstanceOf(See::class, $tag); + $this->assertSame($fqsen, (string)$tag->getReference()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\Author + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + */ + public function testPassingYourOwnSetOfTagHandlers() + { + $context = new Context(''); + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class), ['user' => Author::class]); + + /** @var Author $tag */ + $tag = $tagFactory->create('@user Mike van Riel ', $context); + + $this->assertInstanceOf(Author::class, $tag); + $this->assertSame('author', $tag->getName()); + } + + /** + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The tag "@user/myuser" does not seem to be wellformed, please check it for errors + */ + public function testExceptionIsThrownIfProvidedTagIsNotWellformed() + { + $this->markTestIncomplete( + 'For some reason this test fails; once I have access to a RegEx analyzer I will have to test the regex' + ) + ; + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + $tagFactory->create('@user[myuser'); + } + + /** + * @covers ::__construct + * @covers ::addParameter + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + */ + public function testAddParameterToServiceLocator() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addParameter('myParam', 'myValue'); + + $this->assertAttributeSame( + [FqsenResolver::class => $resolver, 'myParam' => 'myValue'], + 'serviceLocator', + $tagFactory + ) + ; + } + + /** + * @covers ::addService + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + */ + public function testAddServiceToServiceLocator() + { + $service = new PassthroughFormatter(); + + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addService($service); + + $this->assertAttributeSame( + [FqsenResolver::class => $resolver, PassthroughFormatter::class => $service], + 'serviceLocator', + $tagFactory + ) + ; + } + + /** + * @covers ::addService + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + */ + public function testInjectConcreteServiceForInterfaceToServiceLocator() + { + $interfaceName = Formatter::class; + $service = new PassthroughFormatter(); + + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addService($service, $interfaceName); + + $this->assertAttributeSame( + [FqsenResolver::class => $resolver, $interfaceName => $service], + 'serviceLocator', + $tagFactory + ) + ; + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::create + * @uses phpDocumentor\Reflection\DocBlock\Tags\Author + */ + public function testRegisteringAHandlerForANewTag() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', Author::class); + + // Assert by trying to create one + $tag = $tagFactory->create('@my-tag Mike van Riel '); + $this->assertInstanceOf(Author::class, $tag); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedTagNameIsNotAString() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler([], Author::class); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedTagNameIsEmpty() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('', Author::class); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedTagNameIsNamespaceButNotFullyQualified() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('Name\Spaced\Tag', Author::class); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerIsNotAString() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', []); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerIsEmpty() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', ''); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerIsNotAnExistingClassName() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', 'IDoNotExist'); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerDoesNotImplementTheTagInterface() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', 'stdClass'); + } + + /** + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\Docblock\Description + * @uses phpDocumentor\Reflection\Docblock\Tags\Return_ + * @uses phpDocumentor\Reflection\Docblock\Tags\BaseTag + */ + public function testReturntagIsMappedCorrectly() + { + $context = new Context(''); + + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory + ->shouldReceive('create') + ->once() + ->with('', $context) + ->andReturn(new Description('')) + ; + + $typeResolver = new TypeResolver(); + + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + $tagFactory->addService($descriptionFactory, DescriptionFactory::class); + $tagFactory->addService($typeResolver, TypeResolver::class); + + + /** @var Return_ $tag */ + $tag = $tagFactory->create('@return mixed', $context); + + $this->assertInstanceOf(Return_::class, $tag); + $this->assertSame('return', $tag->getName()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php new file mode 100644 index 00000000..a54954f8 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php @@ -0,0 +1,148 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Author + * @covers :: + */ +class AuthorTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $this->assertSame('author', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $this->assertSame('@author Mike van Riel', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getAuthorName + */ + public function testHasTheAuthorName() + { + $expected = 'Mike van Riel'; + + $fixture = new Author($expected, 'mike@phpdoc.org'); + + $this->assertSame($expected, $fixture->getAuthorName()); + } + + /** + * @covers ::__construct + * @covers ::getAuthorName + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfAuthorNameIsNotAString() + { + new Author([], 'mike@phpdoc.org'); + } + + /** + * @covers ::__construct + * @covers ::getEmail + */ + public function testHasTheAuthorMailAddress() + { + $expected = 'mike@phpdoc.org'; + + $fixture = new Author('Mike van Riel', $expected); + + $this->assertSame($expected, $fixture->getEmail()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfEmailIsNotAString() + { + new Author('Mike van Riel', []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfEmailIsNotValid() + { + new Author('Mike van Riel', 'mike'); + } + + /** + * @covers ::__construct + * @covers ::__toString + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $this->assertSame('Mike van Riel', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author:: + */ + public function testFactoryMethod() + { + $fixture = Author::create('Mike van Riel '); + + $this->assertSame('Mike van Riel', (string)$fixture); + $this->assertSame('Mike van Riel', $fixture->getAuthorName()); + $this->assertSame('mike@phpdoc.org', $fixture->getEmail()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author:: + */ + public function testFactoryMethodReturnsNullIfItCouldNotReadBody() + { + $this->assertNull(Author::create('dfgr<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php new file mode 100644 index 00000000..a2b5e4b3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php @@ -0,0 +1,155 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Covers + * @covers :: + */ +class CoversTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('covers', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('@covers \DateTime Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getReference + */ + public function testHasReferenceToFqsen() + { + $expected = new Fqsen('\DateTime'); + + $fixture = new Covers($expected); + + $this->assertSame($expected, $fixture->getReference()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Covers(new Fqsen('\DateTime'), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('\DateTime Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\FqsenResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = m::mock(FqsenResolver::class); + $context = new Context(''); + + $fqsen = new Fqsen('\DateTime'); + $description = new Description('My Description'); + + $descriptionFactory + ->shouldReceive('create')->with('My Description', $context)->andReturn($description); + $resolver->shouldReceive('resolve')->with('DateTime', $context)->andReturn($fqsen); + + $fixture = Covers::create('DateTime My Description', $descriptionFactory, $resolver, $context); + + $this->assertSame('\DateTime My Description', (string)$fixture); + $this->assertSame($fqsen, $fixture->getReference()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Covers::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Covers::create('')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php new file mode 100644 index 00000000..8be9ad7e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php @@ -0,0 +1,166 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Deprecated + * @covers :: + */ +class DeprecatedTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $this->assertSame('deprecated', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $this->assertSame('@deprecated 1.0 Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVersion + */ + public function testHasVersionNumber() + { + $expected = '1.0'; + + $fixture = new Deprecated($expected); + + $this->assertSame($expected, $fixture->getVersion()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Deprecated('1.0', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $this->assertSame('1.0 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $version = '1.0'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Deprecated::create('1.0 My Description', $descriptionFactory, $context); + + $this->assertSame('1.0 My Description', (string)$fixture); + $this->assertSame($version, $fixture->getVersion()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptyDeprecatedTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Deprecated::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame(null, $fixture->getVersion()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfVersionIsNotString() + { + $this->assertNull(Deprecated::create([])); + } + + /** + * @covers ::create + */ + public function testFactoryMethodReturnsNullIfBodyDoesNotMatchRegex() + { + $this->assertEquals(new Deprecated(), Deprecated::create('dkhf<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php new file mode 100644 index 00000000..045a197f --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php @@ -0,0 +1,41 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + */ +class PassthroughFormatterTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::format + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testFormatterCallsToStringAndReturnsAStandardRepresentation() + { + $expected = '@unknown-tag This is a description'; + + $fixture = new PassthroughFormatter(); + + $this->assertSame( + $expected, + $fixture->format(new Generic('unknown-tag', new Description('This is a description'))) + ); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php new file mode 100644 index 00000000..02fa5300 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php @@ -0,0 +1,146 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @generic http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Generic + * @covers :: + */ +class GenericTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Generic('generic', new Description('Description')); + + $this->assertSame('generic', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Generic('generic', new Description('Description')); + + $this->assertSame('@generic Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Generic('generic', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Generic('generic', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Generic('generic', new Description('Description')); + + $this->assertSame('Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $generics = 'generic'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Generic::create('My Description', 'generic', $descriptionFactory, $context); + + $this->assertSame('My Description', (string)$fixture); + $this->assertSame($generics, $fixture->getName()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfNameIsNotString() + { + Generic::create('', []); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfNameIsNotEmpty() + { + Generic::create('', ''); + } + + /** + * @covers ::create + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfNameContainsIllegalCharacters() + { + Generic::create('', 'name/myname'); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php new file mode 100644 index 00000000..9940aec7 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php @@ -0,0 +1,158 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Link + * @covers :: + */ +class LinkTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $this->assertSame('link', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $this->assertSame('@link http://this.is.my/link Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getLink + */ + public function testHasLinkUrl() + { + $expected = 'http://this.is.my/link'; + + $fixture = new Link($expected); + + $this->assertSame($expected, $fixture->getLink()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Link('http://this.is.my/link', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $this->assertSame('http://this.is.my/link Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $links = 'http://this.is.my/link'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Link::create('http://this.is.my/link My Description', $descriptionFactory, $context); + + $this->assertSame('http://this.is.my/link My Description', (string)$fixture); + $this->assertSame($links, $fixture->getLink()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptyLinkTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Link::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame('', $fixture->getLink()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfVersionIsNotString() + { + $this->assertNull(Link::create([])); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php new file mode 100644 index 00000000..5d6e981e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php @@ -0,0 +1,437 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Compound; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Integer; +use phpDocumentor\Reflection\Types\Object_; +use phpDocumentor\Reflection\Types\String_; +use phpDocumentor\Reflection\Types\Void_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Method + * @covers :: + */ +class MethodTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Method('myMethod'); + + $this->assertSame('method', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::isStatic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $arguments = [ + ['name' => 'argument1', 'type' => new String_()], + ['name' => 'argument2', 'type' => new Object_()] + ]; + $fixture = new Method('myMethod', $arguments, new Void_(), true, new Description('My Description')); + + $this->assertSame( + '@method static void myMethod(string $argument1, object $argument2) My Description', + $fixture->render() + ); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Method('myMethod'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getMethodName + */ + public function testHasMethodName() + { + $expected = 'myMethod'; + + $fixture = new Method($expected); + + $this->assertSame($expected, $fixture->getMethodName()); + } + + /** + * @covers ::__construct + * @covers ::getArguments + */ + public function testHasArguments() + { + $arguments = [ + [ 'name' => 'argument1', 'type' => new String_() ] + ]; + + $fixture = new Method('myMethod', $arguments); + + $this->assertSame($arguments, $fixture->getArguments()); + } + + /** + * @covers ::__construct + * @covers ::getArguments + */ + public function testArgumentsMayBePassedAsString() + { + $arguments = ['argument1']; + $expected = [ + [ 'name' => $arguments[0], 'type' => new Void_() ] + ]; + + $fixture = new Method('myMethod', $arguments); + + $this->assertEquals($expected, $fixture->getArguments()); + } + + /** + * @covers ::__construct + * @covers ::getArguments + */ + public function testArgumentTypeCanBeInferredAsVoid() + { + $arguments = [ [ 'name' => 'argument1' ] ]; + $expected = [ + [ 'name' => $arguments[0]['name'], 'type' => new Void_() ] + ]; + + $fixture = new Method('myMethod', $arguments); + + $this->assertEquals($expected, $fixture->getArguments()); + } + + /** + * @covers ::create + */ + public function testRestArgumentIsParsedAsRegularArg() + { + $expected = [ + [ 'name' => 'arg1', 'type' => new Void_() ], + [ 'name' => 'rest', 'type' => new Void_() ], + [ 'name' => 'rest2', 'type' => new Array_() ], + ]; + + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + $description = new Description(''); + $descriptionFactory->shouldReceive('create')->with('', $context)->andReturn($description); + + $fixture = Method::create( + 'void myMethod($arg1, ...$rest, array ... $rest2)', + $resolver, + $descriptionFactory, + $context + ); + + $this->assertEquals($expected, $fixture->getArguments()); + } + + /** + * @covers ::__construct + * @covers ::getReturnType + */ + public function testHasReturnType() + { + $expected = new String_(); + + $fixture = new Method('myMethod', [], $expected); + + $this->assertSame($expected, $fixture->getReturnType()); + } + + /** + * @covers ::__construct + * @covers ::getReturnType + */ + public function testReturnTypeCanBeInferredAsVoid() + { + $fixture = new Method('myMethod', []); + + $this->assertEquals(new Void_(), $fixture->getReturnType()); + } + + /** + * @covers ::__construct + * @covers ::isStatic + */ + public function testMethodCanBeStatic() + { + $expected = false; + $fixture = new Method('myMethod', [], null, $expected); + $this->assertSame($expected, $fixture->isStatic()); + + $expected = true; + $fixture = new Method('myMethod', [], null, $expected); + $this->assertSame($expected, $fixture->isStatic()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Method('myMethod', [], null, false, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::isStatic + */ + public function testStringRepresentationIsReturned() + { + $arguments = [ + ['name' => 'argument1', 'type' => new String_()], + ['name' => 'argument2', 'type' => new Object_()] + ]; + $fixture = new Method('myMethod', $arguments, new Void_(), true, new Description('My Description')); + + $this->assertSame( + 'static void myMethod(string $argument1, object $argument2) My Description', + (string)$fixture + ); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $description = new Description('My Description'); + $expectedArguments = [ + [ 'name' => 'argument1', 'type' => new String_() ], + [ 'name' => 'argument2', 'type' => new Void_() ] + ]; + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Method::create( + 'static void myMethod(string $argument1, $argument2) My Description', + $resolver, + $descriptionFactory, + $context + ); + + $this->assertSame('static void myMethod(string $argument1, void $argument2) My Description', (string)$fixture); + $this->assertSame('myMethod', $fixture->getMethodName()); + $this->assertEquals($expectedArguments, $fixture->getArguments()); + $this->assertInstanceOf(Void_::class, $fixture->getReturnType()); + $this->assertSame($description, $fixture->getDescription()); + } + + public function collectionReturnTypesProvider() + { + return [ + ['int[]', Array_::class, Integer::class, Compound::class], + ['int[][]', Array_::class, Array_::class, Compound::class], + ['Object[]', Array_::class, Object_::class, Compound::class], + ['array[]', Array_::class, Array_::class, Compound::class], + ]; + } + + /** + * @dataProvider collectionReturnTypesProvider + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method:: + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\Types\Array_ + * @uses \phpDocumentor\Reflection\Types\Compound + * @uses \phpDocumentor\Reflection\Types\Integer + * @uses \phpDocumentor\Reflection\Types\Object_ + * @param string $returnType + * @param string $expectedType + * @param string $expectedValueType + * @param string null $expectedKeyType + */ + public function testCollectionReturnTypes( + $returnType, + $expectedType, + $expectedValueType = null, + $expectedKeyType = null + ) { $resolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->with('', null)->andReturn(new Description('')); + + $fixture = Method::create("$returnType myMethod(\$arg)", $resolver, $descriptionFactory); + $returnType = $fixture->getReturnType(); + $this->assertInstanceOf($expectedType, $returnType); + + if ($returnType instanceof Array_) { + $this->assertInstanceOf($expectedValueType, $returnType->getValueType()); + $this->assertInstanceOf($expectedKeyType, $returnType->getKeyType()); + } + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Method::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsEmpty() + { + Method::create(''); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodReturnsNullIfBodyIsIncorrect() + { + $this->assertNull(Method::create('body(')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Method::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Method::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfBodyIsNotString() + { + new Method([]); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfBodyIsEmpty() + { + new Method(''); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfStaticIsNotBoolean() + { + new Method('body', [], null, []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfArgumentRecordContainsInvalidEntry() + { + new Method('body', [ [ 'name' => 'myName', 'unknown' => 'nah' ] ]); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testCreateMethodParenthesisMissing() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Method::create( + 'static void myMethod My Description', + $resolver, + $descriptionFactory, + $context + ); + + $this->assertSame('static void myMethod() My Description', (string)$fixture); + $this->assertSame('myMethod', $fixture->getMethodName()); + $this->assertEquals([], $fixture->getArguments()); + $this->assertInstanceOf(Void_::class, $fixture->getReturnType()); + $this->assertSame($description, $fixture->getDescription()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php new file mode 100644 index 00000000..0c718ab7 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php @@ -0,0 +1,228 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Param + * @covers :: + */ +class ParamTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Param('myParameter', null, false, new Description('Description')); + + $this->assertSame('param', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::isVariadic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Param('myParameter', new String_(), true, new Description('Description')); + $this->assertSame('@param string ...$myParameter Description', $fixture->render()); + + $fixture = new Param('myParameter', new String_(), false, new Description('Description')); + $this->assertSame('@param string $myParameter Description', $fixture->render()); + + $fixture = new Param('myParameter', null, false, new Description('Description')); + $this->assertSame('@param $myParameter Description', $fixture->render()); + + $fixture = new Param('myParameter'); + $this->assertSame('@param $myParameter', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Param('myParameter'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myParameter'; + + $fixture = new Param($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Param('myParameter', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers ::isVariadic + */ + public function testIfParameterIsVariadic() + { + $fixture = new Param('myParameter', new String_(), false); + $this->assertFalse($fixture->isVariadic()); + + $fixture = new Param('myParameter', new String_(), true); + $this->assertTrue($fixture->isVariadic()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Param('1.0', null, false, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::isVariadic + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Param('myParameter', new String_(), true, new Description('Description')); + + $this->assertSame('string ...$myParameter Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Param::create('string ...$myParameter My Description', $typeResolver, $descriptionFactory, $context); + + $this->assertSame('string ...$myParameter My Description', (string)$fixture); + $this->assertSame('myParameter', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertTrue($fixture->isVariadic()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Param::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Param::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Param::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Param::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new Param([]); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariadicIsNotBoolean() + { + new Param('', null, []); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php new file mode 100644 index 00000000..c3fb7700 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php @@ -0,0 +1,201 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead + * @covers :: + */ +class PropertyReadTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new PropertyRead('myProperty', null, new Description('Description')); + + $this->assertSame('property-read', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new PropertyRead('myProperty', new String_(), new Description('Description')); + $this->assertSame('@property-read string $myProperty Description', $fixture->render()); + + $fixture = new PropertyRead('myProperty', null, new Description('Description')); + $this->assertSame('@property-read $myProperty Description', $fixture->render()); + + $fixture = new PropertyRead('myProperty'); + $this->assertSame('@property-read $myProperty', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new PropertyRead('myProperty'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myProperty'; + + $fixture = new PropertyRead($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new PropertyRead('myProperty', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new PropertyRead('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new PropertyRead('myProperty', new String_(), new Description('Description')); + + $this->assertSame('string $myProperty Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = PropertyRead::create('string $myProperty My Description', $typeResolver, $descriptionFactory, + $context); + + $this->assertSame('string $myProperty My Description', (string)$fixture); + $this->assertSame('myProperty', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + PropertyRead::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + PropertyRead::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + PropertyRead::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + PropertyRead::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new PropertyRead([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php new file mode 100644 index 00000000..908dfb28 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php @@ -0,0 +1,200 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Property + * @covers :: + */ +class PropertyTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Property('myProperty', null, new Description('Description')); + + $this->assertSame('property', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Property('myProperty', new String_(), new Description('Description')); + $this->assertSame('@property string $myProperty Description', $fixture->render()); + + $fixture = new Property('myProperty', null, new Description('Description')); + $this->assertSame('@property $myProperty Description', $fixture->render()); + + $fixture = new Property('myProperty'); + $this->assertSame('@property $myProperty', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Property('myProperty'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myProperty'; + + $fixture = new Property($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Property('myProperty', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Property('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Property('myProperty', new String_(), new Description('Description')); + + $this->assertSame('string $myProperty Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Property::create('string $myProperty My Description', $typeResolver, $descriptionFactory, $context); + + $this->assertSame('string $myProperty My Description', (string)$fixture); + $this->assertSame('myProperty', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Property::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Property::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Property::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Property::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new Property([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php new file mode 100644 index 00000000..5ea6524c --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php @@ -0,0 +1,201 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite + * @covers :: + */ +class PropertyWriteTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new PropertyWrite('myProperty', null, new Description('Description')); + + $this->assertSame('property-write', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new PropertyWrite('myProperty', new String_(), new Description('Description')); + $this->assertSame('@property-write string $myProperty Description', $fixture->render()); + + $fixture = new PropertyWrite('myProperty', null, new Description('Description')); + $this->assertSame('@property-write $myProperty Description', $fixture->render()); + + $fixture = new PropertyWrite('myProperty'); + $this->assertSame('@property-write $myProperty', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new PropertyWrite('myProperty'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myProperty'; + + $fixture = new PropertyWrite($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new PropertyWrite('myProperty', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new PropertyWrite('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new PropertyWrite('myProperty', new String_(), new Description('Description')); + + $this->assertSame('string $myProperty Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = PropertyWrite::create('string $myProperty My Description', $typeResolver, $descriptionFactory, + $context); + + $this->assertSame('string $myProperty My Description', (string)$fixture); + $this->assertSame('myProperty', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + PropertyWrite::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + PropertyWrite::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + PropertyWrite::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + PropertyWrite::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new PropertyWrite([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php new file mode 100644 index 00000000..2bc54391 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php @@ -0,0 +1,170 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Return_ + * @covers :: + */ +class ReturnTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $this->assertSame('return', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $this->assertSame('@return string Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Return_($expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Return_(new String_(), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $this->assertSame('string Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $type = new String_(); + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Return_::create('string My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('string My Description', (string)$fixture); + $this->assertEquals($type, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Return_::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Return_::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Return_::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Return_::create('body', new TypeResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php new file mode 100644 index 00000000..8d3e3e8c --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php @@ -0,0 +1,173 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\See + * @covers :: + */ +class SeeTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('see', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('@see \DateTime Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getReference + */ + public function testHasReferenceToFqsen() + { + $expected = new Fqsen('\DateTime'); + + $fixture = new See($expected); + + $this->assertSame($expected, $fixture->getReference()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new See(new Fqsen('\DateTime'), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('\DateTime Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\FqsenResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = m::mock(FqsenResolver::class); + $context = new Context(''); + + $fqsen = new Fqsen('\DateTime'); + $description = new Description('My Description'); + + $descriptionFactory + ->shouldReceive('create')->with('My Description', $context)->andReturn($description); + $resolver->shouldReceive('resolve')->with('DateTime', $context)->andReturn($fqsen); + + $fixture = See::create('DateTime My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('\DateTime My Description', (string)$fixture); + $this->assertSame($fqsen, $fixture->getReference()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(See::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(See::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + See::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + See::create('body', new FqsenResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php new file mode 100644 index 00000000..3f42db5d --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php @@ -0,0 +1,166 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Since + * @covers :: + */ +class SinceTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Since('1.0', new Description('Description')); + + $this->assertSame('since', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Since('1.0', new Description('Description')); + + $this->assertSame('@since 1.0 Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Since('1.0', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVersion + */ + public function testHasVersionNumber() + { + $expected = '1.0'; + + $fixture = new Since($expected); + + $this->assertSame($expected, $fixture->getVersion()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Since('1.0', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Since('1.0', new Description('Description')); + + $this->assertSame('1.0 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $version = '1.0'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Since::create('1.0 My Description', $descriptionFactory, $context); + + $this->assertSame('1.0 My Description', (string)$fixture); + $this->assertSame($version, $fixture->getVersion()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptySinceTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Since::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame(null, $fixture->getVersion()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfSinceIsNotString() + { + $this->assertNull(Since::create([])); + } + + /** + * @covers ::create + */ + public function testFactoryMethodReturnsNullIfBodyDoesNotMatchRegex() + { + $this->assertNull(Since::create('dkhf<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php new file mode 100644 index 00000000..cbf01f65 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php @@ -0,0 +1,199 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Source + * @covers :: + */ +class SourceTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Source(1, null, new Description('Description')); + + $this->assertSame('source', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Source(1, 10, new Description('Description')); + $this->assertSame('@source 1 10 Description', $fixture->render()); + + $fixture = new Source(1, null, new Description('Description')); + $this->assertSame('@source 1 Description', $fixture->render()); + + $fixture = new Source(1); + $this->assertSame('@source 1', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Source(1); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getStartingLine + */ + public function testHasStartingLine() + { + $expected = 1; + + $fixture = new Source($expected); + + $this->assertSame($expected, $fixture->getStartingLine()); + } + + /** + * @covers ::__construct + * @covers ::getLineCount + */ + public function testHasLineCount() + { + $expected = 2; + + $fixture = new Source(1, $expected); + + $this->assertSame($expected, $fixture->getLineCount()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Source('1', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Source(1, 10, new Description('Description')); + + $this->assertSame('1 10 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Source::create('1 10 My Description', $descriptionFactory, $context); + + $this->assertSame('1 10 My Description', (string)$fixture); + $this->assertSame(1, $fixture->getStartingLine()); + $this->assertSame(10, $fixture->getLineCount()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Source::create('', $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Source::create([]); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Source::create('1'); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfStartingLineIsNotInteger() + { + new Source('blabla'); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfLineCountIsNotIntegerOrNull() + { + new Source('1', []); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php new file mode 100644 index 00000000..657d6ca5 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php @@ -0,0 +1,170 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Throws + * @covers :: + */ +class ThrowsTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $this->assertSame('throws', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $this->assertSame('@throws string Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Throws($expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Throws(new String_(), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $this->assertSame('string Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $type = new String_(); + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Throws::create('string My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('string My Description', (string)$fixture); + $this->assertEquals($type, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Throws::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Throws::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Throws::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Throws::create('body', new TypeResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php new file mode 100644 index 00000000..419f7e36 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php @@ -0,0 +1,174 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Uses + * @covers :: + */ +class UsesTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('uses', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('@uses \DateTime Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getReference + */ + public function testHasReferenceToFqsen() + { + $expected = new Fqsen('\DateTime'); + + $fixture = new Uses($expected); + + $this->assertSame($expected, $fixture->getReference()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Uses(new Fqsen('\DateTime'), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('\DateTime Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\FqsenResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = m::mock(FqsenResolver::class); + $context = new Context(''); + + $fqsen = new Fqsen('\DateTime'); + $description = new Description('My Description'); + + $descriptionFactory + ->shouldReceive('create')->with('My Description', $context)->andReturn($description) + ; + $resolver->shouldReceive('resolve')->with('DateTime', $context)->andReturn($fqsen); + + $fixture = Uses::create('DateTime My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('\DateTime My Description', (string)$fixture); + $this->assertSame($fqsen, $fixture->getReference()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Uses::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Uses::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Uses::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Uses::create('body', new FqsenResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php new file mode 100644 index 00000000..34f290ad --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php @@ -0,0 +1,200 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Var_ + * @covers :: + */ +class VarTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Var_('myVariable', null, new Description('Description')); + + $this->assertSame('var', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Var_('myVariable', new String_(), new Description('Description')); + $this->assertSame('@var string $myVariable Description', $fixture->render()); + + $fixture = new Var_('myVariable', null, new Description('Description')); + $this->assertSame('@var $myVariable Description', $fixture->render()); + + $fixture = new Var_('myVariable'); + $this->assertSame('@var $myVariable', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Var_('myVariable'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myVariable'; + + $fixture = new Var_($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Var_('myVariable', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Var_('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Var_('myVariable', new String_(), new Description('Description')); + + $this->assertSame('string $myVariable Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Var_::create('string $myVariable My Description', $typeResolver, $descriptionFactory, $context); + + $this->assertSame('string $myVariable My Description', (string)$fixture); + $this->assertSame('myVariable', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Var_::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Var_::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Var_::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Var_::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new Var_([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php new file mode 100644 index 00000000..5c487fd3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php @@ -0,0 +1,166 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Version + * @covers :: + */ +class VersionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Version('1.0', new Description('Description')); + + $this->assertSame('version', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Version('1.0', new Description('Description')); + + $this->assertSame('@version 1.0 Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Version('1.0', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVersion + */ + public function testHasVersionNumber() + { + $expected = '1.0'; + + $fixture = new Version($expected); + + $this->assertSame($expected, $fixture->getVersion()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Version('1.0', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Version('1.0', new Description('Description')); + + $this->assertSame('1.0 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $version = '1.0'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Version::create('1.0 My Description', $descriptionFactory, $context); + + $this->assertSame('1.0 My Description', (string)$fixture); + $this->assertSame($version, $fixture->getVersion()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptyVersionTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Version::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame(null, $fixture->getVersion()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfVersionIsNotString() + { + $this->assertNull(Version::create([])); + } + + /** + * @covers ::create + */ + public function testFactoryMethodReturnsNullIfBodyDoesNotMatchRegex() + { + $this->assertNull(Version::create('dkhf<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php new file mode 100644 index 00000000..f1261b65 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php @@ -0,0 +1,290 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\TagFactory; +use phpDocumentor\Reflection\DocBlock\Tags\Param; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass phpDocumentor\Reflection\DocBlockFactory + * @covers :: + * @uses \Webmozart\Assert\Assert + * @uses phpDocumentor\Reflection\DocBlock + */ +class DocBlockFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::createInstance + * @uses \phpDocumentor\Reflection\DocBlock\StandardTagFactory + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + */ + public function testCreateFactoryUsingFactoryMethod() + { + $fixture = DocBlockFactory::createInstance(); + + $this->assertInstanceOf(DocBlockFactory::class, $fixture); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreateDocBlockFromReflection() + { + $fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class)); + + $docBlock = '/** This is a DocBlock */'; + $classReflector = m::mock(\ReflectionClass::class); + $classReflector->shouldReceive('getDocComment')->andReturn($docBlock); + $docblock = $fixture->create($classReflector); + + $this->assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is a DocBlock', $docblock->getSummary()); + $this->assertEquals(new Description(''), $docblock->getDescription()); + $this->assertSame([], $docblock->getTags()); + $this->assertEquals(new Context(''), $docblock->getContext()); + $this->assertNull($docblock->getLocation()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreateDocBlockFromStringWithDocComment() + { + $fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class)); + + $docblock = $fixture->create('/** This is a DocBlock */'); + + $this->assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is a DocBlock', $docblock->getSummary()); + $this->assertEquals(new Description(''), $docblock->getDescription()); + $this->assertSame([], $docblock->getTags()); + $this->assertEquals(new Context(''), $docblock->getContext()); + $this->assertNull($docblock->getLocation()); + } + + /** + * @covers ::create + * @covers ::__construct + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreateDocBlockFromStringWithoutDocComment() + { + $fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class)); + + $docblock = $fixture->create('This is a DocBlock'); + + $this->assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is a DocBlock', $docblock->getSummary()); + $this->assertEquals(new Description(''), $docblock->getDescription()); + $this->assertSame([], $docblock->getTags()); + $this->assertEquals(new Context(''), $docblock->getContext()); + $this->assertNull($docblock->getLocation()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + * @dataProvider provideSummaryAndDescriptions + */ + public function testSummaryAndDescriptionAreSeparated($given, $summary, $description) + { + $tagFactory = m::mock(TagFactory::class); + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $docblock = $fixture->create($given); + + $this->assertSame($summary, $docblock->getSummary()); + $this->assertEquals(new Description($description), $docblock->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testDescriptionsRetainFormatting() + { + $tagFactory = m::mock(TagFactory::class); + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $given = <<create($given); + + $this->assertEquals(new Description($description), $docblock->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testTagsAreInterpretedUsingFactory() + { + $tagString = << This is with + multiline description. +TAG; + + $tag = m::mock(Tag::class); + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->with($tagString, m::type(Context::class))->andReturn($tag); + + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $given = << This is with + * multiline description. + */ +DOCBLOCK; + + $docblock = $fixture->create($given, new Context('')); + + $this->assertEquals([$tag], $docblock->getTags()); + } + + public function provideSummaryAndDescriptions() + { + return [ + ['This is a DocBlock', 'This is a DocBlock', ''], + [ + 'This is a DocBlock. This should still be summary.', + 'This is a DocBlock. This should still be summary.', + '' + ], + [ + <<shouldReceive('create')->with(m::any(), $context)->andReturn(new Param('param')); + $docblock = $fixture->create('/** @param MyType $param */', $context); + } + + /** + * @covers ::__construct + * @covers ::create + * + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testTagsAreFilteredForNullValues() + { + $tagString = << This is with + multiline description. +TAG; + + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->with($tagString, m::any())->andReturn(null); + + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $given = << This is with + * multiline description. + */ +DOCBLOCK; + + $docblock = $fixture->create($given, new Context('')); + + $this->assertEquals([], $docblock->getTags()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php new file mode 100644 index 00000000..4a8d4ded --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php @@ -0,0 +1,252 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use Mockery as m; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass phpDocumentor\Reflection\DocBlock + * @covers :: + * @uses \Webmozart\Assert\Assert + */ +class DocBlockTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::getSummary + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockCanHaveASummary() + { + $summary = 'This is a summary'; + + $fixture = new DocBlock($summary); + + $this->assertSame($summary, $fixture->getSummary()); + } + + /** + * @covers ::__construct + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfSummaryIsNotAString() + { + new DocBlock([]); + } + + /** + * @covers ::__construct + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTemplateStartIsNotABoolean() + { + new DocBlock('', null, [], null, null, ['is not boolean']); + } + + /** + * @covers ::__construct + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTemplateEndIsNotABoolean() + { + new DocBlock('', null, [], null, null, false, ['is not boolean']); + } + + /** + * @covers ::__construct + * @covers ::getDescription + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockCanHaveADescription() + { + $description = new DocBlock\Description(''); + + $fixture = new DocBlock('', $description); + + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::getTags + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + */ + public function testDocBlockCanHaveTags() + { + $tags = [ + m::mock(DocBlock\Tag::class) + ]; + + $fixture = new DocBlock('', null, $tags); + + $this->assertSame($tags, $fixture->getTags()); + } + + /** + * @covers ::__construct + * @covers ::getTags + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + * + * @expectedException \InvalidArgumentException + */ + public function testDocBlockAllowsOnlyTags() + { + $tags = [ + null + ]; + + $fixture = new DocBlock('', null, $tags); + } + + /** + * @covers ::__construct + * @covers ::getTagsByName + * + * @uses \phpDocumentor\Reflection\DocBlock::getTags + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + */ + public function testFindTagsInDocBlockByName() + { + $tag1 = m::mock(DocBlock\Tag::class); + $tag2 = m::mock(DocBlock\Tag::class); + $tag3 = m::mock(DocBlock\Tag::class); + $tags = [$tag1, $tag2, $tag3]; + + $tag1->shouldReceive('getName')->andReturn('abc'); + $tag2->shouldReceive('getName')->andReturn('abcd'); + $tag3->shouldReceive('getName')->andReturn('ab'); + + $fixture = new DocBlock('', null, $tags); + + $this->assertSame([$tag2], $fixture->getTagsByName('abcd')); + $this->assertSame([], $fixture->getTagsByName('Ebcd')); + } + + /** + * @covers ::__construct + * @covers ::getTagsByName + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfNameForTagsIsNotString() + { + $fixture = new DocBlock(); + $fixture->getTagsByName([]); + } + + /** + * @covers ::__construct + * @covers ::hasTag + * + * @uses \phpDocumentor\Reflection\DocBlock::getTags + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + */ + public function testCheckIfThereAreTagsWithAGivenName() + { + $tag1 = m::mock(DocBlock\Tag::class); + $tag2 = m::mock(DocBlock\Tag::class); + $tag3 = m::mock(DocBlock\Tag::class); + $tags = [$tag1, $tag2, $tag3]; + + $tag1->shouldReceive('getName')->twice()->andReturn('abc'); + $tag2->shouldReceive('getName')->twice()->andReturn('abcd'); + $tag3->shouldReceive('getName')->once(); + + $fixture = new DocBlock('', null, $tags); + + $this->assertTrue($fixture->hasTag('abcd')); + $this->assertFalse($fixture->hasTag('Ebcd')); + } + + /** + * @covers ::__construct + * @covers ::hasTag + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfNameForCheckingTagsIsNotString() + { + $fixture = new DocBlock(); + $fixture->hasTag([]); + } + + /** + * @covers ::__construct + * @covers ::getContext + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testDocBlockKnowsInWhichNamespaceItIsAndWhichAliasesThereAre() + { + $context = new Context(''); + + $fixture = new DocBlock('', null, [], $context); + + $this->assertSame($context, $fixture->getContext()); + } + + /** + * @covers ::__construct + * @covers ::getLocation + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Location + */ + public function testDocBlockKnowsAtWhichLineItIs() + { + $location = new Location(10); + + $fixture = new DocBlock('', null, [], null, $location); + + $this->assertSame($location, $fixture->getLocation()); + } + + /** + * @covers ::__construct + * @covers ::isTemplateStart + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockKnowsIfItIsTheStartOfADocBlockTemplate() + { + $fixture = new DocBlock('', null, [], null, null, true); + + $this->assertTrue($fixture->isTemplateStart()); + } + + /** + * @covers ::__construct + * @covers ::isTemplateEnd + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockKnowsIfItIsTheEndOfADocBlockTemplate() + { + $fixture = new DocBlock('', null, [], null, null, false, true); + + $this->assertTrue($fixture->isTemplateEnd()); + } +} diff --git a/vendor/phpdocumentor/type-resolver/.gitignore b/vendor/phpdocumentor/type-resolver/.gitignore new file mode 100644 index 00000000..82cfc4e9 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/.gitignore @@ -0,0 +1,3 @@ +.idea +composer.lock +vendor diff --git a/vendor/phpdocumentor/type-resolver/.scrutinizer.yml b/vendor/phpdocumentor/type-resolver/.scrutinizer.yml new file mode 100644 index 00000000..7d7372a8 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/.scrutinizer.yml @@ -0,0 +1,31 @@ +before_commands: + - "composer install --no-dev --prefer-source" + +tools: + external_code_coverage: true + php_code_sniffer: + config: + standard: PSR2 + filter: + paths: ["src/*", "tests/*"] + php_cpd: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_loc: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_mess_detector: + enabled: true + config: + ruleset: phpmd.xml.dist + design_rules: { eval_expression: false } + filter: + paths: ["src/*"] + php_pdepend: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_analyzer: + enabled: true + filter: + paths: ["src/*", "tests/*"] + sensiolabs_security_checker: true diff --git a/vendor/phpdocumentor/type-resolver/.travis.yml b/vendor/phpdocumentor/type-resolver/.travis.yml new file mode 100644 index 00000000..c882b141 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/.travis.yml @@ -0,0 +1,34 @@ +language: php +php: + - 5.5 + - 5.6 + - 7.0 + - hhvm + - nightly + +matrix: + allow_failures: + - php: + - hhvm + - nightly + +cache: + directories: + - $HOME/.composer/cache + +script: + - vendor/bin/phpunit --coverage-clover=coverage.clover -v + - composer update --no-interaction --prefer-source + - vendor/bin/phpunit -v + +before_script: + - composer install --no-interaction + +after_script: + - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi + +notifications: + irc: "irc.freenode.org#phpdocumentor" + email: + - me@mikevanriel.com + - ashnazg@php.net diff --git a/vendor/phpdocumentor/type-resolver/LICENSE b/vendor/phpdocumentor/type-resolver/LICENSE new file mode 100644 index 00000000..792e4040 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010 Mike van Riel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/phpdocumentor/type-resolver/README.md b/vendor/phpdocumentor/type-resolver/README.md new file mode 100644 index 00000000..ca8147bc --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/README.md @@ -0,0 +1,169 @@ +TypeResolver and FqsenResolver +============================== + +The specification on types in DocBlocks (PSR-5) describes various keywords and special constructs +but also how to statically resolve the partial name of a Class into a Fully Qualified Class Name (FQCN). + +PSR-5 also introduces an additional way to describe deeper elements than Classes, Interfaces and Traits +called the Fully Qualified Structural Element Name (FQSEN). Using this it is possible to refer to methods, +properties and class constants but also functions and global constants. + +This package provides two Resolvers that are capable of + +1. Returning a series of Value Object for given expression while resolving any partial class names, and +2. Returning an FQSEN object after resolving any partial Structural Element Names into Fully Qualified Structural + Element names. + +## Installing + +The easiest way to install this library is with [Composer](https://getcomposer.org) using the following command: + + $ composer require phpdocumentor/type-resolver + +## Examples + +Ready to dive in and don't want to read through all that text below? Just consult the [examples](examples) folder and +check which type of action that your want to accomplish. + +## On Types and Element Names + +This component can be used in one of two ways + +1. To resolve a Type or +2. To resolve a Fully Qualified Structural Element Name + +The big difference between these two is in the number of things it can resolve. + +The TypeResolver can resolve: + +- a php primitive or pseudo-primitive such as a string or void (`@var string` or `@return void`). +- a composite such as an array of string (`@var string[]`). +- a compound such as a string or integer (`@var string|integer`). +- an object or interface such as the TypeResolver class (`@var TypeResolver` + or `@var \phpDocumentor\Reflection\TypeResolver`) + + > please note that if you want to pass partial class names that additional steps are necessary, see the + > chapter `Resolving partial classes and FQSENs` for more information. + +Where the FqsenResolver can resolve: + +- Constant expressions (i.e. `@see \MyNamespace\MY_CONSTANT`) +- Function expressions (i.e. `@see \MyNamespace\myFunction()`) +- Class expressions (i.e. `@see \MyNamespace\MyClass`) +- Interface expressions (i.e. `@see \MyNamespace\MyInterface`) +- Trait expressions (i.e. `@see \MyNamespace\MyTrait`) +- Class constant expressions (i.e. `@see \MyNamespace\MyClass::MY_CONSTANT`) +- Property expressions (i.e. `@see \MyNamespace\MyClass::$myProperty`) +- Method expressions (i.e. `@see \MyNamespace\MyClass::myMethod()`) + +## Resolving a type + +In order to resolve a type you will have to instantiate the class `\phpDocumentor\Reflection\TypeResolver` +and call its `resolve` method like this: + + $typeResolver = new \phpDocumentor\Reflection\TypeResolver(); + $type = $typeResolver->resolve('string|integer'); + +In this example you will receive a Value Object of class `\phpDocumentor\Reflection\Types\Compound` that has two +elements, one of type `\phpDocumentor\Reflection\Types\String_` and one of type +`\phpDocumentor\Reflection\Types\Integer`. + +The real power of this resolver is in its capability to expand partial class names into fully qualified class names; but +in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver +in which namespace the given expression occurs and which namespace aliases (or imports) apply. + +## Resolving an FQSEN + +A Fully Qualified Structural Element Name is a reference to another element in your code bases and can be resolved using +the `\phpDocumentor\Reflection\FqsenResolver` class' `resolve` method, like this: + + $fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver(); + $fqsen = $fqsenResolver->resolve('\phpDocumentor\Reflection\FqsenResolver::resolve()'); + +In this example we resolve a Fully Qualified Structural Element Name (meaning that it includes the full namespace, class +name and element name) and receive a Value Object of type `\phpDocumentor\Reflection\Fqsen`. + +The real power of this resolver is in its capability to expand partial element names into Fully Qualified Structural +Element Names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will +inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply. + +## Resolving partial Classes and Structural Element Names + +Perhaps the best feature of this library is that it knows how to resolve partial class names into fully qualified class +names. + +For example, you have this file: + +```php + '\phpDocumentor\Reflection\Types'] + ); + +Or by using the `\phpDocumentor\Reflection\Types\ContextFactory` to instantiate a new context based on a Reflector +object or by providing the namespace that you'd like to extract and the source code of the file in which the given +type expression occurs. + + $contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory(); + $context = $contextFactory->createFromReflector(new ReflectionMethod('\My\Example\Classy', '__construct')); + +or + + $contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory(); + $context = $contextFactory->createForNamespace('\My\Example', file_get_contents('My/Example/Classy.php')); + +### Using the Context + +After you have obtained a Context it is just a matter of passing it along with the `resolve` method of either Resolver +class as second argument and the Resolvers will take this into account when resolving partial names. + +To obtain the resolved class name for the `@var` tag in the example above you can do: + + $typeResolver = new \phpDocumentor\Reflection\TypeResolver(); + $type = $typeResolver->resolve('Types\Context', $context); + +When you do this you will receive an object of class `\phpDocumentor\Reflection\Types\Object_` for which you can call +the `getFqsen` method to receive a Value Object that represents the complete FQSEN. So that would be +`phpDocumentor\Reflection\Types\Context`. + +> Why is the FQSEN wrapped in another object `Object_`? +> +> The resolve method of the TypeResolver only returns object with the interface `Type` and the FQSEN is a common +> type that does not represent a Type. Also: in some cases a type can represent an "Untyped Object", meaning that it +> is an object (signified by the `object` keyword) but does not refer to a specific element using an FQSEN. + +Another example is on how to resolve the FQSEN of a method as can be seen with the `@see` tag in the example above. To +resolve that you can do the following: + + $fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver(); + $type = $fqsenResolver->resolve('Classy::otherFunction()', $context); + +Because Classy is a Class in the current namespace its FQSEN will have the `My\Example` namespace and by calling the +`resolve` method of the FQSEN Resolver you will receive an `Fqsen` object that refers to +`\My\Example\Classy::otherFunction()`. diff --git a/vendor/phpdocumentor/type-resolver/composer.json b/vendor/phpdocumentor/type-resolver/composer.json new file mode 100644 index 00000000..abaa965d --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/composer.json @@ -0,0 +1,27 @@ +{ + "name": "phpdocumentor/type-resolver", + "type": "library", + "license": "MIT", + "authors": [ + {"name": "Mike van Riel", "email": "me@mikevanriel.com"} + ], + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "autoload": { + "psr-4": {"phpDocumentor\\Reflection\\": ["src/"]} + }, + "autoload-dev": { + "psr-4": {"phpDocumentor\\Reflection\\": ["tests/unit"]} + }, + "require-dev": { + "phpunit/phpunit": "^5.2||^4.8.24", + "mockery/mockery": "^0.9.4" + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php b/vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php new file mode 100644 index 00000000..682b1d3d --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php @@ -0,0 +1,13 @@ +resolve('string|integer')); + +// Will return the string "string|int" +var_dump((string)$typeResolver->resolve('string|integer')); diff --git a/vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php b/vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php new file mode 100644 index 00000000..70aa5e42 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php @@ -0,0 +1,12 @@ + 'Mockery' ]); +var_dump((string)$typeResolver->resolve('Types\Resolver|m\MockInterface', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php b/vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php new file mode 100644 index 00000000..4f4282eb --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php @@ -0,0 +1,17 @@ +resolve('Types\Resolver::resolveFqsen()', $context)); + +// Property named: \phpDocumentor\Types\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php b/vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php new file mode 100644 index 00000000..957c97dd --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php @@ -0,0 +1,30 @@ +createFromReflector(new ReflectionClass('My\\Example\\Classy')); + +// Class named: \phpDocumentor\Reflection\Types\Resolver +var_dump((string)$typeResolver->resolve('Types\Resolver', $context)); + +// String +var_dump((string)$typeResolver->resolve('string', $context)); + +// Property named: \phpDocumentor\Reflection\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); + +// Class named: \My\Example\string +// - Shows the difference between the FqsenResolver and TypeResolver; the FqsenResolver will assume +// that the given value is not a type but most definitely a reference to another element. This is +// because conflicts between type keywords and class names can exist and if you know a reference +// is not a type but an element you can force that keywords are resolved. +var_dump((string)$fqsenResolver->resolve('string', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php b/vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php new file mode 100644 index 00000000..10c0c883 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php @@ -0,0 +1,30 @@ +createFromReflector(new ReflectionMethod('My\\Example\\Classy', '__construct')); + +// Class named: \phpDocumentor\Reflection\Types\Resolver +var_dump((string)$typeResolver->resolve('Types\Resolver', $context)); + +// String +var_dump((string)$typeResolver->resolve('string', $context)); + +// Property named: \phpDocumentor\Reflection\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); + +// Class named: \My\Example\string +// - Shows the difference between the FqsenResolver and TypeResolver; the FqsenResolver will assume +// that the given value is not a type but most definitely a reference to another element. This is +// because conflicts between type keywords and class names can exist and if you know a reference +// is not a type but an element you can force that keywords are resolved. +var_dump((string)$fqsenResolver->resolve('string', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php b/vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php new file mode 100644 index 00000000..a93728c8 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php @@ -0,0 +1,22 @@ +createForNamespace('My\Example', file_get_contents('Classy.php')); + +// Class named: \phpDocumentor\Reflection\Types\Resolver +var_dump((string)$typeResolver->resolve('Types\Resolver', $context)); + +// String +var_dump((string)$typeResolver->resolve('string', $context)); + +// Property named: \phpDocumentor\Reflection\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/Classy.php b/vendor/phpdocumentor/type-resolver/examples/Classy.php new file mode 100644 index 00000000..0705266f --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/Classy.php @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 40 + + + diff --git a/vendor/phpdocumentor/type-resolver/phpunit.xml.dist b/vendor/phpdocumentor/type-resolver/phpunit.xml.dist new file mode 100644 index 00000000..3246bef4 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + ./tests/unit + + + + + ./src/ + + + ./examples/ + ./vendor/ + + + + + + diff --git a/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php new file mode 100644 index 00000000..a0e0041c --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php @@ -0,0 +1,76 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\Types\Context; + +class FqsenResolver +{ + /** @var string Definition of the NAMESPACE operator in PHP */ + const OPERATOR_NAMESPACE = '\\'; + + public function resolve($fqsen, Context $context = null) + { + if ($context === null) { + $context = new Context(''); + } + + if ($this->isFqsen($fqsen)) { + return new Fqsen($fqsen); + } + + return $this->resolvePartialStructuralElementName($fqsen, $context); + } + + /** + * Tests whether the given type is a Fully Qualified Structural Element Name. + * + * @param string $type + * + * @return bool + */ + private function isFqsen($type) + { + return strpos($type, self::OPERATOR_NAMESPACE) === 0; + } + + /** + * Resolves a partial Structural Element Name (i.e. `Reflection\DocBlock`) to its FQSEN representation + * (i.e. `\phpDocumentor\Reflection\DocBlock`) based on the Namespace and aliases mentioned in the Context. + * + * @param string $type + * @param Context $context + * + * @return Fqsen + */ + private function resolvePartialStructuralElementName($type, Context $context) + { + $typeParts = explode(self::OPERATOR_NAMESPACE, $type, 2); + + $namespaceAliases = $context->getNamespaceAliases(); + + // if the first segment is not an alias; prepend namespace name and return + if (!isset($namespaceAliases[$typeParts[0]])) { + $namespace = $context->getNamespace(); + if ('' !== $namespace) { + $namespace .= self::OPERATOR_NAMESPACE; + } + + return new Fqsen(self::OPERATOR_NAMESPACE . $namespace . $type); + } + + $typeParts[0] = $namespaceAliases[$typeParts[0]]; + + return new Fqsen(self::OPERATOR_NAMESPACE . implode(self::OPERATOR_NAMESPACE, $typeParts)); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Type.php b/vendor/phpdocumentor/type-resolver/src/Type.php new file mode 100644 index 00000000..33ca5595 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Type.php @@ -0,0 +1,18 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +interface Type +{ + public function __toString(); +} diff --git a/vendor/phpdocumentor/type-resolver/src/TypeResolver.php b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php new file mode 100644 index 00000000..3a68a4d3 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php @@ -0,0 +1,266 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Compound; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Object_; + +final class TypeResolver +{ + /** @var string Definition of the ARRAY operator for types */ + const OPERATOR_ARRAY = '[]'; + + /** @var string Definition of the NAMESPACE operator in PHP */ + const OPERATOR_NAMESPACE = '\\'; + + /** @var string[] List of recognized keywords and unto which Value Object they map */ + private $keywords = array( + 'string' => 'phpDocumentor\Reflection\Types\String_', + 'int' => 'phpDocumentor\Reflection\Types\Integer', + 'integer' => 'phpDocumentor\Reflection\Types\Integer', + 'bool' => 'phpDocumentor\Reflection\Types\Boolean', + 'boolean' => 'phpDocumentor\Reflection\Types\Boolean', + 'float' => 'phpDocumentor\Reflection\Types\Float_', + 'double' => 'phpDocumentor\Reflection\Types\Float_', + 'object' => 'phpDocumentor\Reflection\Types\Object_', + 'mixed' => 'phpDocumentor\Reflection\Types\Mixed', + 'array' => 'phpDocumentor\Reflection\Types\Array_', + 'resource' => 'phpDocumentor\Reflection\Types\Resource', + 'void' => 'phpDocumentor\Reflection\Types\Void_', + 'null' => 'phpDocumentor\Reflection\Types\Null_', + 'scalar' => 'phpDocumentor\Reflection\Types\Scalar', + 'callback' => 'phpDocumentor\Reflection\Types\Callable_', + 'callable' => 'phpDocumentor\Reflection\Types\Callable_', + 'false' => 'phpDocumentor\Reflection\Types\Boolean', + 'true' => 'phpDocumentor\Reflection\Types\Boolean', + 'self' => 'phpDocumentor\Reflection\Types\Self_', + '$this' => 'phpDocumentor\Reflection\Types\This', + 'static' => 'phpDocumentor\Reflection\Types\Static_' + ); + + /** @var FqsenResolver */ + private $fqsenResolver; + + /** + * Initializes this TypeResolver with the means to create and resolve Fqsen objects. + * + * @param FqsenResolver $fqsenResolver + */ + public function __construct(FqsenResolver $fqsenResolver = null) + { + $this->fqsenResolver = $fqsenResolver ?: new FqsenResolver(); + } + + /** + * Analyzes the given type and returns the FQCN variant. + * + * When a type is provided this method checks whether it is not a keyword or + * Fully Qualified Class Name. If so it will use the given namespace and + * aliases to expand the type to a FQCN representation. + * + * This method only works as expected if the namespace and aliases are set; + * no dynamic reflection is being performed here. + * + * @param string $type The relative or absolute type. + * @param Context $context + * + * @uses Context::getNamespace() to determine with what to prefix the type name. + * @uses Context::getNamespaceAliases() to check whether the first part of the relative type name should not be + * replaced with another namespace. + * + * @return Type|null + */ + public function resolve($type, Context $context = null) + { + if (!is_string($type)) { + throw new \InvalidArgumentException( + 'Attempted to resolve type but it appeared not to be a string, received: ' . var_export($type, true) + ); + } + + $type = trim($type); + if (!$type) { + throw new \InvalidArgumentException('Attempted to resolve "' . $type . '" but it appears to be empty'); + } + + if ($context === null) { + $context = new Context(''); + } + + switch (true) { + case $this->isKeyword($type): + return $this->resolveKeyword($type); + case ($this->isCompoundType($type)): + return $this->resolveCompoundType($type, $context); + case $this->isTypedArray($type): + return $this->resolveTypedArray($type, $context); + case $this->isFqsen($type): + return $this->resolveTypedObject($type); + case $this->isPartialStructuralElementName($type): + return $this->resolveTypedObject($type, $context); + // @codeCoverageIgnoreStart + default: + // I haven't got the foggiest how the logic would come here but added this as a defense. + throw new \RuntimeException( + 'Unable to resolve type "' . $type . '", there is no known method to resolve it' + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * Adds a keyword to the list of Keywords and associates it with a specific Value Object. + * + * @param string $keyword + * @param string $typeClassName + * + * @return void + */ + public function addKeyword($keyword, $typeClassName) + { + if (!class_exists($typeClassName)) { + throw new \InvalidArgumentException( + 'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class' + . ' but we could not find the class ' . $typeClassName + ); + } + + if (!in_array(Type::class, class_implements($typeClassName))) { + throw new \InvalidArgumentException( + 'The class "' . $typeClassName . '" must implement the interface "phpDocumentor\Reflection\Type"' + ); + } + + $this->keywords[$keyword] = $typeClassName; + } + + /** + * Detects whether the given type represents an array. + * + * @param string $type A relative or absolute type as defined in the phpDocumentor documentation. + * + * @return bool + */ + private function isTypedArray($type) + { + return substr($type, -2) === self::OPERATOR_ARRAY; + } + + /** + * Detects whether the given type represents a PHPDoc keyword. + * + * @param string $type A relative or absolute type as defined in the phpDocumentor documentation. + * + * @return bool + */ + private function isKeyword($type) + { + return in_array(strtolower($type), array_keys($this->keywords), true); + } + + /** + * Detects whether the given type represents a relative structural element name. + * + * @param string $type A relative or absolute type as defined in the phpDocumentor documentation. + * + * @return bool + */ + private function isPartialStructuralElementName($type) + { + return ($type[0] !== self::OPERATOR_NAMESPACE) && !$this->isKeyword($type); + } + + /** + * Tests whether the given type is a Fully Qualified Structural Element Name. + * + * @param string $type + * + * @return bool + */ + private function isFqsen($type) + { + return strpos($type, self::OPERATOR_NAMESPACE) === 0; + } + + /** + * Tests whether the given type is a compound type (i.e. `string|int`). + * + * @param string $type + * + * @return bool + */ + private function isCompoundType($type) + { + return strpos($type, '|') !== false; + } + + /** + * Resolves the given typed array string (i.e. `string[]`) into an Array object with the right types set. + * + * @param string $type + * @param Context $context + * + * @return Array_ + */ + private function resolveTypedArray($type, Context $context) + { + return new Array_($this->resolve(substr($type, 0, -2), $context)); + } + + /** + * Resolves the given keyword (such as `string`) into a Type object representing that keyword. + * + * @param string $type + * + * @return Type + */ + private function resolveKeyword($type) + { + $className = $this->keywords[strtolower($type)]; + + return new $className(); + } + + /** + * Resolves the given FQSEN string into an FQSEN object. + * + * @param string $type + * + * @return Object_ + */ + private function resolveTypedObject($type, Context $context = null) + { + return new Object_($this->fqsenResolver->resolve($type, $context)); + } + + /** + * Resolves a compound type (i.e. `string|int`) into the appropriate Type objects or FQSEN. + * + * @param string $type + * @param Context $context + * + * @return Compound + */ + private function resolveCompoundType($type, Context $context) + { + $types = []; + + foreach (explode('|', $type) as $part) { + $types[] = $this->resolve($part, $context); + } + + return new Compound($types); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Array_.php b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php new file mode 100644 index 00000000..45276c6b --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php @@ -0,0 +1,87 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\Type; + +/** + * Represents an array type as described in the PSR-5, the PHPDoc Standard. + * + * An array can be represented in two forms: + * + * 1. Untyped (`array`), where the key and value type is unknown and hence classified as 'Mixed'. + * 2. Types (`string[]`), where the value type is provided by preceding an opening and closing square bracket with a + * type name. + */ +final class Array_ implements Type +{ + /** @var Type */ + private $valueType; + + /** @var Type */ + private $keyType; + + /** + * Initializes this representation of an array with the given Type or Fqsen. + * + * @param Type $valueType + * @param Type $keyType + */ + public function __construct(Type $valueType = null, Type $keyType = null) + { + if ($keyType === null) { + $keyType = new Compound([ new String_(), new Integer() ]); + } + if ($valueType === null) { + $valueType = new Mixed(); + } + + $this->valueType = $valueType; + $this->keyType = $keyType; + } + + /** + * Returns the type for the keys of this array. + * + * @return Type + */ + public function getKeyType() + { + return $this->keyType; + } + + /** + * Returns the value for the keys of this array. + * + * @return Type + */ + public function getValueType() + { + return $this->valueType; + } + + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + if ($this->valueType instanceof Mixed) { + return 'array'; + } + + return $this->valueType . '[]'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php new file mode 100644 index 00000000..f82b19e5 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Boolean type. + */ +final class Boolean implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'bool'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php new file mode 100644 index 00000000..68ebfbd0 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Callable type. + */ +final class Callable_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'callable'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Compound.php b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php new file mode 100644 index 00000000..3e5ebb5c --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php @@ -0,0 +1,82 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Compound Type. + * + * A Compound Type is not so much a special keyword or object reference but is a series of Types that are separated + * using an OR operator (`|`). This combination of types signifies that whatever is associated with this compound type + * may contain a value with any of the given types. + */ +final class Compound implements Type +{ + /** @var Type[] */ + private $types = []; + + /** + * Initializes a compound type (i.e. `string|int`) and tests if the provided types all implement the Type interface. + * + * @param Type[] $types + */ + public function __construct(array $types) + { + foreach ($types as $type) { + if (!$type instanceof Type) { + throw new \InvalidArgumentException('A compound type can only have other types as elements'); + } + } + + $this->types = $types; + } + + /** + * Returns the type at the given index. + * + * @param integer $index + * + * @return Type|null + */ + public function get($index) + { + if (!$this->has($index)) { + return null; + } + + return $this->types[$index]; + } + + /** + * Tests if this compound type has a type with the given index. + * + * @param integer $index + * + * @return bool + */ + public function has($index) + { + return isset($this->types[$index]); + } + + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return implode('|', $this->types); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Context.php b/vendor/phpdocumentor/type-resolver/src/Types/Context.php new file mode 100644 index 00000000..cc953423 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Context.php @@ -0,0 +1,84 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +/** + * Provides information about the Context in which the DocBlock occurs that receives this context. + * + * A DocBlock does not know of its own accord in which namespace it occurs and which namespace aliases are applicable + * for the block of code in which it is in. This information is however necessary to resolve Class names in tags since + * you can provide a short form or make use of namespace aliases. + * + * The phpDocumentor Reflection component knows how to create this class but if you use the DocBlock parser from your + * own application it is possible to generate a Context class using the ContextFactory; this will analyze the file in + * which an associated class resides for its namespace and imports. + * + * @see ContextFactory::createFromClassReflector() + * @see ContextFactory::createForNamespace() + */ +final class Context +{ + /** @var string The current namespace. */ + private $namespace = ''; + + /** @var array List of namespace aliases => Fully Qualified Namespace. */ + private $namespaceAliases = []; + + /** + * Initializes the new context and normalizes all passed namespaces to be in Qualified Namespace Name (QNN) + * format (without a preceding `\`). + * + * @param string $namespace The namespace where this DocBlock resides in. + * @param array $namespaceAliases List of namespace aliases => Fully Qualified Namespace. + */ + public function __construct($namespace, array $namespaceAliases = []) + { + $this->namespace = ('global' !== $namespace && 'default' !== $namespace) + ? trim((string)$namespace, '\\') + : ''; + + foreach ($namespaceAliases as $alias => $fqnn) { + if ($fqnn[0] === '\\') { + $fqnn = substr($fqnn, 1); + } + if ($fqnn[strlen($fqnn) - 1] === '\\') { + $fqnn = substr($fqnn, 0, -1); + } + + $namespaceAliases[$alias] = $fqnn; + } + + $this->namespaceAliases = $namespaceAliases; + } + + /** + * Returns the Qualified Namespace Name (thus without `\` in front) where the associated element is in. + * + * @return string + */ + public function getNamespace() + { + return $this->namespace; + } + + /** + * Returns a list of Qualified Namespace Names (thus without `\` in front) that are imported, the keys represent + * the alias for the imported Namespace. + * + * @return string[] + */ + public function getNamespaceAliases() + { + return $this->namespaceAliases; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php new file mode 100644 index 00000000..147df694 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php @@ -0,0 +1,210 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +/** + * Convenience class to create a Context for DocBlocks when not using the Reflection Component of phpDocumentor. + * + * For a DocBlock to be able to resolve types that use partial namespace names or rely on namespace imports we need to + * provide a bit of context so that the DocBlock can read that and based on it decide how to resolve the types to + * Fully Qualified names. + * + * @see Context for more information. + */ +final class ContextFactory +{ + /** The literal used at the end of a use statement. */ + const T_LITERAL_END_OF_USE = ';'; + + /** The literal used between sets of use statements */ + const T_LITERAL_USE_SEPARATOR = ','; + + /** + * Build a Context given a Class Reflection. + * + * @param \ReflectionClass $reflector + * + * @see Context for more information on Contexts. + * + * @return Context + */ + public function createFromReflector(\Reflector $reflector) + { + if (method_exists($reflector, 'getDeclaringClass')) { + $reflector = $reflector->getDeclaringClass(); + } + + $fileName = $reflector->getFileName(); + $namespace = $reflector->getNamespaceName(); + + if (file_exists($fileName)) { + return $this->createForNamespace($namespace, file_get_contents($fileName)); + } + + return new Context($namespace, []); + } + + /** + * Build a Context for a namespace in the provided file contents. + * + * @param string $namespace It does not matter if a `\` precedes the namespace name, this method first normalizes. + * @param string $fileContents the file's contents to retrieve the aliases from with the given namespace. + * + * @see Context for more information on Contexts. + * + * @return Context + */ + public function createForNamespace($namespace, $fileContents) + { + $namespace = trim($namespace, '\\'); + $useStatements = []; + $currentNamespace = ''; + $tokens = new \ArrayIterator(token_get_all($fileContents)); + + while ($tokens->valid()) { + switch ($tokens->current()[0]) { + case T_NAMESPACE: + $currentNamespace = $this->parseNamespace($tokens); + break; + case T_CLASS: + // Fast-forward the iterator through the class so that any + // T_USE tokens found within are skipped - these are not + // valid namespace use statements so should be ignored. + $braceLevel = 0; + $firstBraceFound = false; + while ($tokens->valid() && ($braceLevel > 0 || !$firstBraceFound)) { + if ($tokens->current() === '{' + || $tokens->current()[0] === T_CURLY_OPEN + || $tokens->current()[0] === T_DOLLAR_OPEN_CURLY_BRACES) { + if (!$firstBraceFound) { + $firstBraceFound = true; + } + $braceLevel++; + } + + if ($tokens->current() === '}') { + $braceLevel--; + } + $tokens->next(); + } + break; + case T_USE: + if ($currentNamespace === $namespace) { + $useStatements = array_merge($useStatements, $this->parseUseStatement($tokens)); + } + break; + } + $tokens->next(); + } + + return new Context($namespace, $useStatements); + } + + /** + * Deduce the name from tokens when we are at the T_NAMESPACE token. + * + * @param \ArrayIterator $tokens + * + * @return string + */ + private function parseNamespace(\ArrayIterator $tokens) + { + // skip to the first string or namespace separator + $this->skipToNextStringOrNamespaceSeparator($tokens); + + $name = ''; + while ($tokens->valid() && ($tokens->current()[0] === T_STRING || $tokens->current()[0] === T_NS_SEPARATOR) + ) { + $name .= $tokens->current()[1]; + $tokens->next(); + } + + return $name; + } + + /** + * Deduce the names of all imports when we are at the T_USE token. + * + * @param \ArrayIterator $tokens + * + * @return string[] + */ + private function parseUseStatement(\ArrayIterator $tokens) + { + $uses = []; + $continue = true; + + while ($continue) { + $this->skipToNextStringOrNamespaceSeparator($tokens); + + list($alias, $fqnn) = $this->extractUseStatement($tokens); + $uses[$alias] = $fqnn; + if ($tokens->current()[0] === self::T_LITERAL_END_OF_USE) { + $continue = false; + } + } + + return $uses; + } + + /** + * Fast-forwards the iterator as longs as we don't encounter a T_STRING or T_NS_SEPARATOR token. + * + * @param \ArrayIterator $tokens + * + * @return void + */ + private function skipToNextStringOrNamespaceSeparator(\ArrayIterator $tokens) + { + while ($tokens->valid() && ($tokens->current()[0] !== T_STRING) && ($tokens->current()[0] !== T_NS_SEPARATOR)) { + $tokens->next(); + } + } + + /** + * Deduce the namespace name and alias of an import when we are at the T_USE token or have not reached the end of + * a USE statement yet. + * + * @param \ArrayIterator $tokens + * + * @return string + */ + private function extractUseStatement(\ArrayIterator $tokens) + { + $result = ['']; + while ($tokens->valid() + && ($tokens->current()[0] !== self::T_LITERAL_USE_SEPARATOR) + && ($tokens->current()[0] !== self::T_LITERAL_END_OF_USE) + ) { + if ($tokens->current()[0] === T_AS) { + $result[] = ''; + } + if ($tokens->current()[0] === T_STRING || $tokens->current()[0] === T_NS_SEPARATOR) { + $result[count($result) - 1] .= $tokens->current()[1]; + } + $tokens->next(); + } + + if (count($result) == 1) { + $backslashPos = strrpos($result[0], '\\'); + + if (false !== $backslashPos) { + $result[] = substr($result[0], $backslashPos + 1); + } else { + $result[] = $result[0]; + } + } + + return array_reverse($result); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Float_.php b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php new file mode 100644 index 00000000..e58d8966 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Float. + */ +final class Float_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'float'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Integer.php b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php new file mode 100644 index 00000000..be4555ef --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php @@ -0,0 +1,28 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +final class Integer implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'int'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php b/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php new file mode 100644 index 00000000..79695f45 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing an unknown, or mixed, type. + */ +final class Mixed implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'mixed'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Null_.php b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php new file mode 100644 index 00000000..203b4227 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a null value or type. + */ +final class Null_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'null'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Object_.php b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php new file mode 100644 index 00000000..b337c715 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php @@ -0,0 +1,70 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing an object. + * + * An object can be either typed or untyped. When an object is typed it means that it has an identifier, the FQSEN, + * pointing to an element in PHP. Object types that are untyped do not refer to a specific class but represent objects + * in general. + */ +final class Object_ implements Type +{ + /** @var Fqsen|null */ + private $fqsen; + + /** + * Initializes this object with an optional FQSEN, if not provided this object is considered 'untyped'. + * + * @param Fqsen $fqsen + */ + public function __construct(Fqsen $fqsen = null) + { + if (strpos((string)$fqsen, '::') !== false || strpos((string)$fqsen, '()') !== false) { + throw new \InvalidArgumentException( + 'Object types can only refer to a class, interface or trait but a method, function, constant or ' + . 'property was received: ' . (string)$fqsen + ); + } + + $this->fqsen = $fqsen; + } + + /** + * Returns the FQSEN associated with this object. + * + * @return Fqsen|null + */ + public function getFqsen() + { + return $this->fqsen; + } + + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + if ($this->fqsen) { + return (string)$this->fqsen; + } + + return 'object'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Resource.php b/vendor/phpdocumentor/type-resolver/src/Types/Resource.php new file mode 100644 index 00000000..2c2526b7 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Resource.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'resource' Type. + */ +final class Resource implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'resource'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php new file mode 100644 index 00000000..1e2a6602 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'scalar' pseudo-type, which is either a string, integer, float or boolean. + */ +final class Scalar implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'scalar'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Self_.php b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php new file mode 100644 index 00000000..1ba3fc5a --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php @@ -0,0 +1,33 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'self' type. + * + * Self, as a Type, represents the class in which the associated element was defined. + */ +final class Self_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'self'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Static_.php b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php new file mode 100644 index 00000000..9eb67299 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php @@ -0,0 +1,38 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'static' type. + * + * Self, as a Type, represents the class in which the associated element was called. This differs from self as self does + * not take inheritance into account but static means that the return type is always that of the class of the called + * element. + * + * See the documentation on late static binding in the PHP Documentation for more information on the difference between + * static and self. + */ +final class Static_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'static'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/String_.php b/vendor/phpdocumentor/type-resolver/src/Types/String_.php new file mode 100644 index 00000000..8db59685 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/String_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the type 'string'. + */ +final class String_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'string'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/This.php b/vendor/phpdocumentor/type-resolver/src/Types/This.php new file mode 100644 index 00000000..c098a939 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/This.php @@ -0,0 +1,34 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the '$this' pseudo-type. + * + * $this, as a Type, represents the instance of the class associated with the element as it was called. $this is + * commonly used when documenting fluent interfaces since it represents that the same object is returned. + */ +final class This implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return '$this'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Void_.php b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php new file mode 100644 index 00000000..3d1be272 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php @@ -0,0 +1,34 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the pseudo-type 'void'. + * + * Void is generally only used when working with return types as it signifies that the method intentionally does not + * return any value. + */ +final class Void_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'void'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php b/vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php new file mode 100644 index 00000000..f226f8ed --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php @@ -0,0 +1,395 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use Mockery as m; +use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Compound; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Object_; + +/** + * @coversDefaultClass phpDocumentor\Reflection\TypeResolver + */ +class TypeResolverTest extends \PHPUnit_Framework_TestCase +{ + /** + * @param string $keyword + * @param string $expectedClass + * + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\Object_ + * + * @dataProvider provideKeywords + */ + public function testResolvingKeywords($keyword, $expectedClass) + { + $fixture = new TypeResolver(); + + $resolvedType = $fixture->resolve($keyword, new Context('')); + + $this->assertInstanceOf($expectedClass, $resolvedType); + } + + /** + * @param string $fqsen + * + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + * + * @dataProvider provideFqcn + */ + public function testResolvingFQSENs($fqsen) + { + $fixture = new TypeResolver(); + + /** @var Object_ $resolvedType */ + $resolvedType = $fixture->resolve($fqsen, new Context('')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $resolvedType->getFqsen()); + $this->assertSame($fqsen, (string)$resolvedType); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingRelativeQSENsBasedOnNamespace() + { + $fixture = new TypeResolver(); + + /** @var Object_ $resolvedType */ + $resolvedType = $fixture->resolve('DocBlock', new Context('phpDocumentor\Reflection')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $resolvedType->getFqsen()); + $this->assertSame('\phpDocumentor\Reflection\DocBlock', (string)$resolvedType); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingRelativeQSENsBasedOnNamespaceAlias() + { + $fixture = new TypeResolver(); + + /** @var Object_ $resolvedType */ + $resolvedType = $fixture->resolve( + 'm\MockInterface', + new Context('phpDocumentor\Reflection', ['m' => '\Mockery']) + ); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $resolvedType->getFqsen()); + $this->assertSame('\Mockery\MockInterface', (string)$resolvedType); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\String_ + */ + public function testResolvingTypedArrays() + { + $fixture = new TypeResolver(); + + /** @var Array_ $resolvedType */ + $resolvedType = $fixture->resolve('string[]', new Context('')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $resolvedType); + $this->assertSame('string[]', (string)$resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType->getKeyType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $resolvedType->getValueType()); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\String_ + */ + public function testResolvingNestedTypedArrays() + { + $fixture = new TypeResolver(); + + /** @var Array_ $resolvedType */ + $resolvedType = $fixture->resolve('string[][]', new Context('')); + + /** @var Array_ $childValueType */ + $childValueType = $resolvedType->getValueType(); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $resolvedType); + + $this->assertSame('string[][]', (string)$resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType->getKeyType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $childValueType); + + $this->assertSame('string[]', (string)$childValueType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $childValueType->getKeyType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $childValueType->getValueType()); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Compound + * @uses phpDocumentor\Reflection\Types\String_ + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingCompoundTypes() + { + $fixture = new TypeResolver(); + + /** @var Compound $resolvedType */ + $resolvedType = $fixture->resolve('string|Reflection\DocBlock', new Context('phpDocumentor')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType); + $this->assertSame('string|\phpDocumentor\Reflection\DocBlock', (string)$resolvedType); + + /** @var String $secondType */ + $firstType = $resolvedType->get(0); + + /** @var Object_ $secondType */ + $secondType = $resolvedType->get(1); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $firstType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $secondType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $secondType->getFqsen()); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Compound + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingCompoundTypedArrayTypes() + { + $fixture = new TypeResolver(); + + /** @var Compound $resolvedType */ + $resolvedType = $fixture->resolve('\stdClass[]|Reflection\DocBlock[]', new Context('phpDocumentor')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType); + $this->assertSame('\stdClass[]|\phpDocumentor\Reflection\DocBlock[]', (string)$resolvedType); + + /** @var Array_ $secondType */ + $firstType = $resolvedType->get(0); + + /** @var Array_ $secondType */ + $secondType = $resolvedType->get(1); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $firstType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $secondType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $firstType->getValueType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $secondType->getValueType()); + } + + /** + * This test asserts that the parameter order is correct. + * + * When you pass two arrays separated by the compound operator (i.e. 'integer[]|string[]') then we always split the + * expression in its compound parts and then we parse the types with the array operators. If we were to switch the + * order around then 'integer[]|string[]' would read as an array of string or integer array; which is something + * other than what we intend. + * + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Compound + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\Integer + * @uses phpDocumentor\Reflection\Types\String_ + */ + public function testResolvingCompoundTypesWithTwoArrays() + { + $fixture = new TypeResolver(); + + /** @var Compound $resolvedType */ + $resolvedType = $fixture->resolve('integer[]|string[]', new Context('')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType); + $this->assertSame('int[]|string[]', (string)$resolvedType); + + /** @var Array_ $firstType */ + $firstType = $resolvedType->get(0); + + /** @var Array_ $secondType */ + $secondType = $resolvedType->get(1); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $firstType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Integer', $firstType->getValueType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $secondType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $secondType->getValueType()); + } + + /** + * @covers ::__construct + * @covers ::addKeyword + * @uses phpDocumentor\Reflection\TypeResolver::resolve + * @uses phpDocumentor\Reflection\TypeResolver:: + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testAddingAKeyword() + { + // Assign + $typeMock = m::mock(Type::class); + + // Act + $fixture = new TypeResolver(); + $fixture->addKeyword('mock', get_class($typeMock)); + + // Assert + $result = $fixture->resolve('mock', new Context('')); + $this->assertInstanceOf(get_class($typeMock), $result); + $this->assertNotSame($typeMock, $result); + } + + /** + * @covers ::__construct + * @covers ::addKeyword + * @uses phpDocumentor\Reflection\Types\Context + * @expectedException \InvalidArgumentException + */ + public function testAddingAKeywordFailsIfTypeClassDoesNotExist() + { + $fixture = new TypeResolver(); + $fixture->addKeyword('mock', 'IDoNotExist'); + } + + /** + * @covers ::__construct + * @covers ::addKeyword + * @uses phpDocumentor\Reflection\Types\Context + * @expectedException \InvalidArgumentException + */ + public function testAddingAKeywordFailsIfTypeClassDoesNotImplementTypeInterface() + { + $fixture = new TypeResolver(); + $fixture->addKeyword('mock', 'stdClass'); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @uses phpDocumentor\Reflection\Types\Context + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTypeIsEmpty() + { + $fixture = new TypeResolver(); + $fixture->resolve(' ', new Context('')); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @uses phpDocumentor\Reflection\Types\Context + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTypeIsNotAString() + { + $fixture = new TypeResolver(); + $fixture->resolve(['a'], new Context('')); + } + + /** + * Returns a list of keywords and expected classes that are created from them. + * + * @return string[][] + */ + public function provideKeywords() + { + return [ + ['string', 'phpDocumentor\Reflection\Types\String_'], + ['int', 'phpDocumentor\Reflection\Types\Integer'], + ['integer', 'phpDocumentor\Reflection\Types\Integer'], + ['float', 'phpDocumentor\Reflection\Types\Float_'], + ['double', 'phpDocumentor\Reflection\Types\Float_'], + ['bool', 'phpDocumentor\Reflection\Types\Boolean'], + ['boolean', 'phpDocumentor\Reflection\Types\Boolean'], + ['resource', 'phpDocumentor\Reflection\Types\Resource'], + ['null', 'phpDocumentor\Reflection\Types\Null_'], + ['callable', 'phpDocumentor\Reflection\Types\Callable_'], + ['callback', 'phpDocumentor\Reflection\Types\Callable_'], + ['array', 'phpDocumentor\Reflection\Types\Array_'], + ['scalar', 'phpDocumentor\Reflection\Types\Scalar'], + ['object', 'phpDocumentor\Reflection\Types\Object_'], + ['mixed', 'phpDocumentor\Reflection\Types\Mixed'], + ['void', 'phpDocumentor\Reflection\Types\Void_'], + ['$this', 'phpDocumentor\Reflection\Types\This'], + ['static', 'phpDocumentor\Reflection\Types\Static_'], + ['self', 'phpDocumentor\Reflection\Types\Self_'], + ]; + } + + /** + * Provides a list of FQSENs to test the resolution patterns with. + * + * @return string[][] + */ + public function provideFqcn() + { + return [ + 'namespace' => ['\phpDocumentor\Reflection'], + 'class' => ['\phpDocumentor\Reflection\DocBlock'], + ]; + } +} diff --git a/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php new file mode 100644 index 00000000..20d63c95 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php @@ -0,0 +1,188 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types { + +// Added imports on purpose as mock for the unit tests, please do not remove. + use Mockery as m; + use phpDocumentor\Reflection\DocBlock, + phpDocumentor\Reflection\DocBlock\Tag; + use phpDocumentor; + use \ReflectionClass; // yes, the slash is part of the test + + /** + * @coversDefaultClass \phpDocumentor\Reflection\Types\ContextFactory + * @covers :: + */ + class ContextFactoryTest extends \PHPUnit_Framework_TestCase + { + /** + * @covers ::createFromReflector + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsNamespaceFromClassReflection() + { + $fixture = new ContextFactory(); + $context = $fixture->createFromReflector(new ReflectionClass($this)); + + $this->assertSame(__NAMESPACE__, $context->getNamespace()); + } + + /** + * @covers ::createFromReflector + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsAliasesFromClassReflection() + { + $fixture = new ContextFactory(); + $expected = [ + 'm' => 'Mockery', + 'DocBlock' => 'phpDocumentor\Reflection\DocBlock', + 'Tag' => 'phpDocumentor\Reflection\DocBlock\Tag', + 'phpDocumentor' => 'phpDocumentor', + 'ReflectionClass' => 'ReflectionClass' + ]; + $context = $fixture->createFromReflector(new ReflectionClass($this)); + + $this->assertSame($expected, $context->getNamespaceAliases()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsNamespaceFromProvidedNamespaceAndContent() + { + $fixture = new ContextFactory(); + $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); + + $this->assertSame(__NAMESPACE__, $context->getNamespace()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsAliasesFromProvidedNamespaceAndContent() + { + $fixture = new ContextFactory(); + $expected = [ + 'm' => 'Mockery', + 'DocBlock' => 'phpDocumentor\Reflection\DocBlock', + 'Tag' => 'phpDocumentor\Reflection\DocBlock\Tag', + 'phpDocumentor' => 'phpDocumentor', + 'ReflectionClass' => 'ReflectionClass' + ]; + $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); + + $this->assertSame($expected, $context->getNamespaceAliases()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testTraitUseIsNotDetectedAsNamespaceUse() + { + $php = "createForNamespace('Foo', $php); + + $this->assertSame([], $context->getNamespaceAliases()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testAllOpeningBracesAreCheckedWhenSearchingForEndOfClass() + { + $php = 'createForNamespace('Foo', $php); + + $this->assertSame([], $context->getNamespaceAliases()); + } + + /** + * @covers ::createFromReflector + */ + public function testEmptyFileName() + { + $fixture = new ContextFactory(); + $context = $fixture->createFromReflector(new \ReflectionClass('stdClass')); + + $this->assertSame([], $context->getNamespaceAliases()); + } + + /** + * @covers ::createFromReflector + */ + public function testEvalDClass() + { + eval(<<createFromReflector(new \ReflectionClass('Foo\Bar')); + + $this->assertSame([], $context->getNamespaceAliases()); + } + } +} + +namespace phpDocumentor\Reflection\Types\Mock { + // the following import should not show in the tests above + use phpDocumentor\Reflection\DocBlock\Description; +} diff --git a/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php new file mode 100644 index 00000000..165f415d --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php @@ -0,0 +1,61 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use Mockery as m; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\Types\Context + */ +class ContextTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::getNamespace + */ + public function testProvidesANormalizedNamespace() + { + $fixture = new Context('\My\Space'); + $this->assertSame('My\Space', $fixture->getNamespace()); + } + + /** + * @covers ::__construct + * @covers ::getNamespace + */ + public function testInterpretsNamespaceNamedGlobalAsRootNamespace() + { + $fixture = new Context('global'); + $this->assertSame('', $fixture->getNamespace()); + } + + /** + * @covers ::__construct + * @covers ::getNamespace + */ + public function testInterpretsNamespaceNamedDefaultAsRootNamespace() + { + $fixture = new Context('default'); + $this->assertSame('', $fixture->getNamespace()); + } + + /** + * @covers ::__construct + * @covers ::getNamespaceAliases + */ + public function testProvidesNormalizedNamespaceAliases() + { + $fixture = new Context('', ['Space' => '\My\Space']); + $this->assertSame(['Space' => 'My\Space'], $fixture->getNamespaceAliases()); + } +} diff --git a/vendor/phpspec/prophecy/.gitignore b/vendor/phpspec/prophecy/.gitignore new file mode 100644 index 00000000..88ee1c14 --- /dev/null +++ b/vendor/phpspec/prophecy/.gitignore @@ -0,0 +1,5 @@ +*.tgz +*.phar +/composer.lock +/vendor +/phpunit.xml diff --git a/vendor/phpspec/prophecy/.travis.yml b/vendor/phpspec/prophecy/.travis.yml new file mode 100644 index 00000000..a277922b --- /dev/null +++ b/vendor/phpspec/prophecy/.travis.yml @@ -0,0 +1,39 @@ +language: php + +sudo: false + +cache: + directories: + - $HOME/.composer/cache + +branches: + except: + - /^bugfix\/.*$/ + - /^feature\/.*$/ + - /^optimization\/.*$/ + +matrix: + include: + - php: 5.3 + - php: 5.4 + - php: 5.5 + - php: 5.6 + env: DEPENDENCIES='low' + - php: 5.6 + - php: 7.0 + - php: 7.1 + # Use the newer stack for HHVM as HHVM does not support Precise anymore since a long time and so Precise has an outdated version + - php: hhvm + sudo: required + dist: trusty + group: edge + fast_finish: true + +install: + - export COMPOSER_ROOT_VERSION=dev-master + - if [ "$DEPENDENCIES" != "low" ]; then composer update; fi; + - if [ "$DEPENDENCIES" == "low" ]; then composer update --prefer-lowest; fi; + +script: + - vendor/bin/phpspec run -fpretty -v + - vendor/bin/phpunit diff --git a/vendor/phpspec/prophecy/CHANGES.md b/vendor/phpspec/prophecy/CHANGES.md new file mode 100644 index 00000000..996567aa --- /dev/null +++ b/vendor/phpspec/prophecy/CHANGES.md @@ -0,0 +1,165 @@ +1.7.0 / 2017-03-02 +================== + +* Add full PHP 7.1 Support (thanks @prolic) +* Allow `sebastian/comparator ^2.0` (thanks @sebastianbergmann) +* Allow `sebastian/recursion-context ^3.0` (thanks @sebastianbergmann) +* Allow `\Error` instances in `ThrowPromise` (thanks @jameshalsall) +* Support `phpspec/phpspect ^3.2` (thanks @Sam-Burns) +* Fix failing builds (thanks @Sam-Burns) + +1.6.2 / 2016-11-21 +================== + +* Added support for detecting @method on interfaces that the class itself implements, or when the stubbed class is an interface itself (thanks @Seldaek) +* Added support for sebastian/recursion-context 2 (thanks @sebastianbergmann) +* Added testing on PHP 7.1 on Travis (thanks @danizord) +* Fixed the usage of the phpunit comparator (thanks @Anyqax) + +1.6.1 / 2016-06-07 +================== + + * Ignored empty method names in invalid `@method` phpdoc + * Fixed the mocking of SplFileObject + * Added compatibility with phpdocumentor/reflection-docblock 3 + +1.6.0 / 2016-02-15 +================== + + * Add Variadics support (thanks @pamil) + * Add ProphecyComparator for comparing objects that need revealing (thanks @jon-acker) + * Add ApproximateValueToken (thanks @dantleech) + * Add support for 'self' and 'parent' return type (thanks @bendavies) + * Add __invoke to allowed reflectable methods list (thanks @ftrrtf) + * Updated ExportUtil to reflect the latest changes by Sebastian (thanks @jakari) + * Specify the required php version for composer (thanks @jakzal) + * Exclude 'args' in the generated backtrace (thanks @oradwell) + * Fix code generation for scalar parameters (thanks @trowski) + * Fix missing sprintf in InvalidArgumentException __construct call (thanks @emmanuelballery) + * Fix phpdoc for magic methods (thanks @Tobion) + * Fix PhpDoc for interfaces usage (thanks @ImmRanneft) + * Prevent final methods from being manually extended (thanks @kamioftea) + * Enhance exception for invalid argument to ThrowPromise (thanks @Tobion) + +1.5.0 / 2015-04-27 +================== + + * Add support for PHP7 scalar type hints (thanks @trowski) + * Add support for PHP7 return types (thanks @trowski) + * Update internal test suite to support PHP7 + +1.4.1 / 2015-04-27 +================== + + * Fixed bug in closure-based argument tokens (#181) + +1.4.0 / 2015-03-27 +================== + + * Fixed errors in return type phpdocs (thanks @sobit) + * Fixed stringifying of hash containing one value (thanks @avant1) + * Improved clarity of method call expectation exception (thanks @dantleech) + * Add ability to specify which argument is returned in willReturnArgument (thanks @coderbyheart) + * Add more information to MethodNotFound exceptions (thanks @ciaranmcnulty) + * Support for mocking classes with methods that return references (thanks @edsonmedina) + * Improved object comparison (thanks @whatthejeff) + * Adopted '^' in composer dependencies (thanks @GrahamCampbell) + * Fixed non-typehinted arguments being treated as optional (thanks @whatthejeff) + * Magic methods are now filtered for keywords (thanks @seagoj) + * More readable errors for failure when expecting single calls (thanks @dantleech) + +1.3.1 / 2014-11-17 +================== + + * Fix the edge case when failed predictions weren't recorded for `getCheckedPredictions()` + +1.3.0 / 2014-11-14 +================== + + * Add a way to get checked predictions with `MethodProphecy::getCheckedPredictions()` + * Fix HHVM compatibility + * Remove dead code (thanks @stof) + * Add support for DirectoryIterators (thanks @shanethehat) + +1.2.0 / 2014-07-18 +================== + + * Added support for doubling magic methods documented in the class phpdoc (thanks @armetiz) + * Fixed a segfault appearing in some cases (thanks @dmoreaulf) + * Fixed the doubling of methods with typehints on non-existent classes (thanks @gquemener) + * Added support for internal classes using keywords as method names (thanks @milan) + * Added IdenticalValueToken and Argument::is (thanks @florianv) + * Removed the usage of scalar typehints in HHVM as HHVM 3 does not support them anymore in PHP code (thanks @whatthejeff) + +1.1.2 / 2014-01-24 +================== + + * Spy automatically promotes spied method call to an expected one + +1.1.1 / 2014-01-15 +================== + + * Added support for HHVM + +1.1.0 / 2014-01-01 +================== + + * Changed the generated class names to use a static counter instead of a random number + * Added a clss patch for ReflectionClass::newInstance to make its argument optional consistently (thanks @docteurklein) + * Fixed mirroring of classes with typehints on non-existent classes (thanks @docteurklein) + * Fixed the support of array callables in CallbackPromise and CallbackPrediction (thanks @ciaranmcnulty) + * Added support for properties in ObjectStateToken (thanks @adrienbrault) + * Added support for mocking classes with a final constructor (thanks @ciaranmcnulty) + * Added ArrayEveryEntryToken and Argument::withEveryEntry() (thanks @adrienbrault) + * Added an exception when trying to prophesize on a final method instead of ignoring silently (thanks @docteurklein) + * Added StringContainToken and Argument::containingString() (thanks @peterjmit) + * Added ``shouldNotHaveBeenCalled`` on the MethodProphecy (thanks @ciaranmcnulty) + * Fixed the comparison of objects in ExactValuetoken (thanks @sstok) + * Deprecated ``shouldNotBeenCalled`` in favor of ``shouldNotHaveBeenCalled`` + +1.0.4 / 2013-08-10 +================== + + * Better randomness for generated class names (thanks @sstok) + * Add support for interfaces into TypeToken and Argument::type() (thanks @sstok) + * Add support for old-style (method name === class name) constructors (thanks @l310 for report) + +1.0.3 / 2013-07-04 +================== + + * Support callable typehints (thanks @stof) + * Do not attempt to autoload arrays when generating code (thanks @MarcoDeBortoli) + * New ArrayEntryToken (thanks @kagux) + +1.0.2 / 2013-05-19 +================== + + * Logical `AND` token added (thanks @kagux) + * Logical `NOT` token added (thanks @kagux) + * Add support for setting custom constructor arguments + * Properly stringify hashes + * Record calls that throw exceptions + * Migrate spec suite to PhpSpec 2.0 + +1.0.1 / 2013-04-30 +================== + + * Fix broken UnexpectedCallException message + * Trim AggregateException message + +1.0.0 / 2013-04-29 +================== + + * Improve exception messages + +1.0.0-BETA2 / 2013-04-03 +======================== + + * Add more debug information to CallTimes and Call prediction exception messages + * Fix MethodNotFoundException wrong namespace (thanks @gunnarlium) + * Fix some typos in the exception messages (thanks @pborreli) + +1.0.0-BETA1 / 2013-03-25 +======================== + + * Initial release diff --git a/vendor/phpspec/prophecy/CONTRIBUTING.md b/vendor/phpspec/prophecy/CONTRIBUTING.md new file mode 100644 index 00000000..4a8169d0 --- /dev/null +++ b/vendor/phpspec/prophecy/CONTRIBUTING.md @@ -0,0 +1,22 @@ +Contributing +------------ + +Prophecy is an open source, community-driven project. If you'd like to contribute, +feel free to do this, but remember to follow these few simple rules: + +- Make your feature addition or bug fix, +- Add either specs or examples for any changes you're making (bugfixes or additions) + (please look into `spec/` folder for some examples). This is important so we don't break + it in a future version unintentionally, +- Commit your code, but do not mess with `CHANGES.md`, + +Running tests +------------- + +Make sure that you don't break anything with your changes by running: + +```bash +$> composer install --prefer-dist +$> vendor/bin/phpspec run +$> vendor/bin/phpunit +``` diff --git a/vendor/phpspec/prophecy/LICENSE b/vendor/phpspec/prophecy/LICENSE new file mode 100644 index 00000000..c8b36471 --- /dev/null +++ b/vendor/phpspec/prophecy/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2013 Konstantin Kudryashov + Marcello Duarte + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/phpspec/prophecy/README.md b/vendor/phpspec/prophecy/README.md new file mode 100644 index 00000000..65ec16c4 --- /dev/null +++ b/vendor/phpspec/prophecy/README.md @@ -0,0 +1,391 @@ +# Prophecy + +[![Stable release](https://poser.pugx.org/phpspec/prophecy/version.svg)](https://packagist.org/packages/phpspec/prophecy) +[![Build Status](https://travis-ci.org/phpspec/prophecy.svg?branch=master)](https://travis-ci.org/phpspec/prophecy) + +Prophecy is a highly opinionated yet very powerful and flexible PHP object mocking +framework. Though initially it was created to fulfil phpspec2 needs, it is flexible +enough to be used inside any testing framework out there with minimal effort. + +## A simple example + +```php +prophet->prophesize('App\Security\Hasher'); + $user = new App\Entity\User($hasher->reveal()); + + $hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass'); + + $user->setPassword('qwerty'); + + $this->assertEquals('hashed_pass', $user->getPassword()); + } + + protected function setup() + { + $this->prophet = new \Prophecy\Prophet; + } + + protected function tearDown() + { + $this->prophet->checkPredictions(); + } +} +``` + +## Installation + +### Prerequisites + +Prophecy requires PHP 5.3.3 or greater. + +### Setup through composer + +First, add Prophecy to the list of dependencies inside your `composer.json`: + +```json +{ + "require-dev": { + "phpspec/prophecy": "~1.0" + } +} +``` + +Then simply install it with composer: + +```bash +$> composer install --prefer-dist +``` + +You can read more about Composer on its [official webpage](http://getcomposer.org). + +## How to use it + +First of all, in Prophecy every word has a logical meaning, even the name of the library +itself (Prophecy). When you start feeling that, you'll become very fluid with this +tool. + +For example, Prophecy has been named that way because it concentrates on describing the future +behavior of objects with very limited knowledge about them. But as with any other prophecy, +those object prophecies can't create themselves - there should be a Prophet: + +```php +$prophet = new Prophecy\Prophet; +``` + +The Prophet creates prophecies by *prophesizing* them: + +```php +$prophecy = $prophet->prophesize(); +``` + +The result of the `prophesize()` method call is a new object of class `ObjectProphecy`. Yes, +that's your specific object prophecy, which describes how your object would behave +in the near future. But first, you need to specify which object you're talking about, +right? + +```php +$prophecy->willExtend('stdClass'); +$prophecy->willImplement('SessionHandlerInterface'); +``` + +There are 2 interesting calls - `willExtend` and `willImplement`. The first one tells +object prophecy that our object should extend specific class, the second one says that +it should implement some interface. Obviously, objects in PHP can implement multiple +interfaces, but extend only one parent class. + +### Dummies + +Ok, now we have our object prophecy. What can we do with it? First of all, we can get +our object *dummy* by revealing its prophecy: + +```php +$dummy = $prophecy->reveal(); +``` + +The `$dummy` variable now holds a special dummy object. Dummy objects are objects that extend +and/or implement preset classes/interfaces by overriding all their public methods. The key +point about dummies is that they do not hold any logic - they just do nothing. Any method +of the dummy will always return `null` and the dummy will never throw any exceptions. +Dummy is your friend if you don't care about the actual behavior of this double and just need +a token object to satisfy a method typehint. + +You need to understand one thing - a dummy is not a prophecy. Your object prophecy is still +assigned to `$prophecy` variable and in order to manipulate with your expectations, you +should work with it. `$dummy` is a dummy - a simple php object that tries to fulfil your +prophecy. + +### Stubs + +Ok, now we know how to create basic prophecies and reveal dummies from them. That's +awesome if we don't care about our _doubles_ (objects that reflect originals) +interactions. If we do, we need to use *stubs* or *mocks*. + +A stub is an object double, which doesn't have any expectations about the object behavior, +but when put in specific environment, behaves in specific way. Ok, I know, it's cryptic, +but bear with me for a minute. Simply put, a stub is a dummy, which depending on the called +method signature does different things (has logic). To create stubs in Prophecy: + +```php +$prophecy->read('123')->willReturn('value'); +``` + +Oh wow. We've just made an arbitrary call on the object prophecy? Yes, we did. And this +call returned us a new object instance of class `MethodProphecy`. Yep, that's a specific +method with arguments prophecy. Method prophecies give you the ability to create method +promises or predictions. We'll talk about method predictions later in the _Mocks_ section. + +#### Promises + +Promises are logical blocks, that represent your fictional methods in prophecy terms +and they are handled by the `MethodProphecy::will(PromiseInterface $promise)` method. +As a matter of fact, the call that we made earlier (`willReturn('value')`) is a simple +shortcut to: + +```php +$prophecy->read('123')->will(new Prophecy\Promise\ReturnPromise(array('value'))); +``` + +This promise will cause any call to our double's `read()` method with exactly one +argument - `'123'` to always return `'value'`. But that's only for this +promise, there's plenty others you can use: + +- `ReturnPromise` or `->willReturn(1)` - returns a value from a method call +- `ReturnArgumentPromise` or `->willReturnArgument($index)` - returns the nth method argument from call +- `ThrowPromise` or `->willThrow` - causes the method to throw specific exception +- `CallbackPromise` or `->will($callback)` - gives you a quick way to define your own custom logic + +Keep in mind, that you can always add even more promises by implementing +`Prophecy\Promise\PromiseInterface`. + +#### Method prophecies idempotency + +Prophecy enforces same method prophecies and, as a consequence, same promises and +predictions for the same method calls with the same arguments. This means: + +```php +$methodProphecy1 = $prophecy->read('123'); +$methodProphecy2 = $prophecy->read('123'); +$methodProphecy3 = $prophecy->read('321'); + +$methodProphecy1 === $methodProphecy2; +$methodProphecy1 !== $methodProphecy3; +``` + +That's interesting, right? Now you might ask me how would you define more complex +behaviors where some method call changes behavior of others. In PHPUnit or Mockery +you do that by predicting how many times your method will be called. In Prophecy, +you'll use promises for that: + +```php +$user->getName()->willReturn(null); + +// For PHP 5.4 +$user->setName('everzet')->will(function () { + $this->getName()->willReturn('everzet'); +}); + +// For PHP 5.3 +$user->setName('everzet')->will(function ($args, $user) { + $user->getName()->willReturn('everzet'); +}); + +// Or +$user->setName('everzet')->will(function ($args) use ($user) { + $user->getName()->willReturn('everzet'); +}); +``` + +And now it doesn't matter how many times or in which order your methods are called. +What matters is their behaviors and how well you faked it. + +#### Arguments wildcarding + +The previous example is awesome (at least I hope it is for you), but that's not +optimal enough. We hardcoded `'everzet'` in our expectation. Isn't there a better +way? In fact there is, but it involves understanding what this `'everzet'` +actually is. + +You see, even if method arguments used during method prophecy creation look +like simple method arguments, in reality they are not. They are argument token +wildcards. As a matter of fact, `->setName('everzet')` looks like a simple call just +because Prophecy automatically transforms it under the hood into: + +```php +$user->setName(new Prophecy\Argument\Token\ExactValueToken('everzet')); +``` + +Those argument tokens are simple PHP classes, that implement +`Prophecy\Argument\Token\TokenInterface` and tell Prophecy how to compare real arguments +with your expectations. And yes, those classnames are damn big. That's why there's a +shortcut class `Prophecy\Argument`, which you can use to create tokens like that: + +```php +use Prophecy\Argument; + +$user->setName(Argument::exact('everzet')); +``` + +`ExactValueToken` is not very useful in our case as it forced us to hardcode the username. +That's why Prophecy comes bundled with a bunch of other tokens: + +- `IdenticalValueToken` or `Argument::is($value)` - checks that the argument is identical to a specific value +- `ExactValueToken` or `Argument::exact($value)` - checks that the argument matches a specific value +- `TypeToken` or `Argument::type($typeOrClass)` - checks that the argument matches a specific type or + classname +- `ObjectStateToken` or `Argument::which($method, $value)` - checks that the argument method returns + a specific value +- `CallbackToken` or `Argument::that(callback)` - checks that the argument matches a custom callback +- `AnyValueToken` or `Argument::any()` - matches any argument +- `AnyValuesToken` or `Argument::cetera()` - matches any arguments to the rest of the signature +- `StringContainsToken` or `Argument::containingString($value)` - checks that the argument contains a specific string value + +And you can add even more by implementing `TokenInterface` with your own custom classes. + +So, let's refactor our initial `{set,get}Name()` logic with argument tokens: + +```php +use Prophecy\Argument; + +$user->getName()->willReturn(null); + +// For PHP 5.4 +$user->setName(Argument::type('string'))->will(function ($args) { + $this->getName()->willReturn($args[0]); +}); + +// For PHP 5.3 +$user->setName(Argument::type('string'))->will(function ($args, $user) { + $user->getName()->willReturn($args[0]); +}); + +// Or +$user->setName(Argument::type('string'))->will(function ($args) use ($user) { + $user->getName()->willReturn($args[0]); +}); +``` + +That's it. Now our `{set,get}Name()` prophecy will work with any string argument provided to it. +We've just described how our stub object should behave, even though the original object could have +no behavior whatsoever. + +One last bit about arguments now. You might ask, what happens in case of: + +```php +use Prophecy\Argument; + +$user->getName()->willReturn(null); + +// For PHP 5.4 +$user->setName(Argument::type('string'))->will(function ($args) { + $this->getName()->willReturn($args[0]); +}); + +// For PHP 5.3 +$user->setName(Argument::type('string'))->will(function ($args, $user) { + $user->getName()->willReturn($args[0]); +}); + +// Or +$user->setName(Argument::type('string'))->will(function ($args) use ($user) { + $user->getName()->willReturn($args[0]); +}); + +$user->setName(Argument::any())->will(function () { +}); +``` + +Nothing. Your stub will continue behaving the way it did before. That's because of how +arguments wildcarding works. Every argument token type has a different score level, which +wildcard then uses to calculate the final arguments match score and use the method prophecy +promise that has the highest score. In this case, `Argument::type()` in case of success +scores `5` and `Argument::any()` scores `3`. So the type token wins, as does the first +`setName()` method prophecy and its promise. The simple rule of thumb - more precise token +always wins. + +#### Getting stub objects + +Ok, now we know how to define our prophecy method promises, let's get our stub from +it: + +```php +$stub = $prophecy->reveal(); +``` + +As you might see, the only difference between how we get dummies and stubs is that with +stubs we describe every object conversation instead of just agreeing with `null` returns +(object being *dummy*). As a matter of fact, after you define your first promise +(method call), Prophecy will force you to define all the communications - it throws +the `UnexpectedCallException` for any call you didn't describe with object prophecy before +calling it on a stub. + +### Mocks + +Now we know how to define doubles without behavior (dummies) and doubles with behavior, but +no expectations (stubs). What's left is doubles for which we have some expectations. These +are called mocks and in Prophecy they look almost exactly the same as stubs, except that +they define *predictions* instead of *promises* on method prophecies: + +```php +$entityManager->flush()->shouldBeCalled(); +``` + +#### Predictions + +The `shouldBeCalled()` method here assigns `CallPrediction` to our method prophecy. +Predictions are a delayed behavior check for your prophecies. You see, during the entire lifetime +of your doubles, Prophecy records every single call you're making against it inside your +code. After that, Prophecy can use this collected information to check if it matches defined +predictions. You can assign predictions to method prophecies using the +`MethodProphecy::should(PredictionInterface $prediction)` method. As a matter of fact, +the `shouldBeCalled()` method we used earlier is just a shortcut to: + +```php +$entityManager->flush()->should(new Prophecy\Prediction\CallPrediction()); +``` + +It checks if your method of interest (that matches both the method name and the arguments wildcard) +was called 1 or more times. If the prediction failed then it throws an exception. When does this +check happen? Whenever you call `checkPredictions()` on the main Prophet object: + +```php +$prophet->checkPredictions(); +``` + +In PHPUnit, you would want to put this call into the `tearDown()` method. If no predictions +are defined, it would do nothing. So it won't harm to call it after every test. + +There are plenty more predictions you can play with: + +- `CallPrediction` or `shouldBeCalled()` - checks that the method has been called 1 or more times +- `NoCallsPrediction` or `shouldNotBeCalled()` - checks that the method has not been called +- `CallTimesPrediction` or `shouldBeCalledTimes($count)` - checks that the method has been called + `$count` times +- `CallbackPrediction` or `should($callback)` - checks the method against your own custom callback + +Of course, you can always create your own custom prediction any time by implementing +`PredictionInterface`. + +### Spies + +The last bit of awesomeness in Prophecy is out-of-the-box spies support. As I said in the previous +section, Prophecy records every call made during the double's entire lifetime. This means +you don't need to record predictions in order to check them. You can also do it +manually by using the `MethodProphecy::shouldHave(PredictionInterface $prediction)` method: + +```php +$em = $prophet->prophesize('Doctrine\ORM\EntityManager'); + +$controller->createUser($em->reveal()); + +$em->flush()->shouldHaveBeenCalled(); +``` + +Such manipulation with doubles is called spying. And with Prophecy it just works. diff --git a/vendor/phpspec/prophecy/composer.json b/vendor/phpspec/prophecy/composer.json new file mode 100644 index 00000000..7918065f --- /dev/null +++ b/vendor/phpspec/prophecy/composer.json @@ -0,0 +1,50 @@ +{ + "name": "phpspec/prophecy", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "keywords": ["Mock", "Stub", "Dummy", "Double", "Fake", "Spy"], + "homepage": "https://github.com/phpspec/prophecy", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + + "require": { + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "doctrine/instantiator": "^1.0.2", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + + "autoload-dev": { + "psr-4": { + "Fixtures\\Prophecy\\": "fixtures" + } + }, + + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + } +} diff --git a/vendor/phpspec/prophecy/fixtures/EmptyClass.php b/vendor/phpspec/prophecy/fixtures/EmptyClass.php new file mode 100644 index 00000000..4db3b50a --- /dev/null +++ b/vendor/phpspec/prophecy/fixtures/EmptyClass.php @@ -0,0 +1,7 @@ + + + + + + + + + + tests + + + + + + ./src/ + + + diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php new file mode 100644 index 00000000..b82f1b89 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php @@ -0,0 +1,128 @@ +beConstructedWith(array(42, 'zet', $object)); + + $class = get_class($object->getWrappedObject()); + $hash = spl_object_hash($object->getWrappedObject()); + + $this->__toString()->shouldReturn("exact(42), exact(\"zet\"), exact($class:$hash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); + } + + function it_generates_string_representation_from_all_tokens_imploded( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->__toString()->willReturn('token_1'); + $token2->__toString()->willReturn('token_2'); + $token3->__toString()->willReturn('token_3'); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->__toString()->shouldReturn('token_1, token_2, token_3'); + } + + function it_exposes_list_of_tokens(TokenInterface $token) + { + $this->beConstructedWith(array($token)); + + $this->getTokens()->shouldReturn(array($token)); + } + + function it_returns_score_of_1_if_there_are_no_tokens_and_arguments() + { + $this->beConstructedWith(array()); + + $this->scoreArguments(array())->shouldReturn(1); + } + + function it_should_return_match_score_based_on_all_tokens_score( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(5); + $token2->isLast()->willReturn(false); + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj))->shouldReturn(18); + } + + function it_returns_false_if_there_is_less_arguments_than_tokens( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(5); + $token2->isLast()->willReturn(false); + $token3->scoreArgument(null)->willReturn(false); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2))->shouldReturn(false); + } + + function it_returns_false_if_there_is_less_tokens_than_arguments( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(5); + $token2->isLast()->willReturn(false); + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj, 4))->shouldReturn(false); + } + + function it_should_return_false_if_one_of_the_tokens_returns_false( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(false); + $token2->isLast()->willReturn(false); + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj))->shouldReturn(false); + } + + function it_should_calculate_score_until_last_token( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + + $token2->scoreArgument(2)->willReturn(7); + $token2->isLast()->willReturn(true); + + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj))->shouldReturn(10); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php new file mode 100644 index 00000000..a43e923c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php @@ -0,0 +1,28 @@ +shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function its_string_representation_is_star() + { + $this->__toString()->shouldReturn('*'); + } + + function it_scores_any_argument_as_3() + { + $this->scoreArgument(42)->shouldReturn(3); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php new file mode 100644 index 00000000..c29076f5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php @@ -0,0 +1,28 @@ +shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_last() + { + $this->shouldBeLast(); + } + + function its_string_representation_is_star_with_followup() + { + $this->__toString()->shouldReturn('* [, ...]'); + } + + function it_scores_any_argument_as_2() + { + $this->scoreArgument(42)->shouldReturn(2); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php new file mode 100644 index 00000000..8799d6d5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php @@ -0,0 +1,55 @@ +beConstructedWith(10.12345678, 4); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Argument\Token\ApproximateValueToken'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_10_if_rounded_argument_matches_rounded_value() + { + $this->scoreArgument(10.12345)->shouldReturn(10); + } + + function it_does_not_score_if_rounded_argument_does_not_match_rounded_value() + { + $this->scoreArgument(10.1234)->shouldReturn(false); + } + + function it_uses_a_default_precision_of_zero() + { + $this->beConstructedWith(10.7); + $this->scoreArgument(11.4)->shouldReturn(10); + } + + function it_does_not_score_if_rounded_argument_is_not_numeric() + { + $this->scoreArgument('hello')->shouldReturn(false); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldBe('≅10.1235'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php new file mode 100644 index 00000000..cc81fe01 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php @@ -0,0 +1,58 @@ +beConstructedWith(2); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_6_if_argument_array_has_proper_count() + { + $this->scoreArgument(array(1,2))->shouldReturn(6); + } + + function it_scores_6_if_argument_countable_object_has_proper_count(\Countable $countable) + { + $countable->count()->willReturn(2); + $this->scoreArgument($countable)->shouldReturn(6); + } + + function it_does_not_score_if_argument_is_neither_array_nor_countable_object() + { + $this->scoreArgument('string')->shouldBe(false); + $this->scoreArgument(5)->shouldBe(false); + $this->scoreArgument(new \stdClass)->shouldBe(false); + } + + function it_does_not_score_if_argument_array_has_wrong_count() + { + $this->scoreArgument(array(1))->shouldReturn(false); + } + + function it_does_not_score_if_argument_countable_object_has_wrong_count(\Countable $countable) + { + $countable->count()->willReturn(3); + $this->scoreArgument($countable)->shouldReturn(false); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldBe('count(2)'); + } + +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php new file mode 100644 index 00000000..632118ae --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php @@ -0,0 +1,202 @@ +beConstructedWith($key, $value); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_holds_key_and_value($key, $value) + { + $this->getKey()->shouldBe($key); + $this->getValue()->shouldBe($value); + } + + function its_string_representation_tells_that_its_an_array_containing_the_key_value_pair($key, $value) + { + $key->__toString()->willReturn('key'); + $value->__toString()->willReturn('value'); + $this->__toString()->shouldBe('[..., key => value, ...]'); + } + + function it_wraps_non_token_value_into_ExactValueToken(TokenInterface $key, \stdClass $object) + { + $this->beConstructedWith($key, $object); + $this->getValue()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); + } + + function it_wraps_non_token_key_into_ExactValueToken(\stdClass $object, TokenInterface $value) + { + $this->beConstructedWith($object, $value); + $this->getKey()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); + } + + function it_scores_array_half_of_combined_scores_from_key_and_value_tokens($key, $value) + { + $key->scoreArgument('key')->willReturn(4); + $value->scoreArgument('value')->willReturn(6); + $this->scoreArgument(array('key'=>'value'))->shouldBe(5); + } + + function it_scores_traversable_object_half_of_combined_scores_from_key_and_value_tokens( + TokenInterface $key, + TokenInterface $value, + \Iterator $object + ) { + $object->current()->will(function () use ($object) { + $object->valid()->willReturn(false); + + return 'value'; + }); + $object->key()->willReturn('key'); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $key->scoreArgument('key')->willReturn(6); + $value->scoreArgument('value')->willReturn(2); + $this->scoreArgument($object)->shouldBe(4); + } + + function it_throws_exception_during_scoring_of_array_accessible_object_if_key_is_not_ExactValueToken( + TokenInterface $key, + TokenInterface $value, + \ArrayAccess $object + ) { + $key->__toString()->willReturn('any_token'); + $this->beConstructedWith($key,$value); + $errorMessage = 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. + 'But you used `any_token`.'; + $this->shouldThrow(new InvalidArgumentException($errorMessage))->duringScoreArgument($object); + } + + function it_scores_array_accessible_object_half_of_combined_scores_from_key_and_value_tokens( + ExactValueToken $key, + TokenInterface $value, + \ArrayAccess $object + ) { + $object->offsetExists('key')->willReturn(true); + $object->offsetGet('key')->willReturn('value'); + $key->getValue()->willReturn('key'); + $key->scoreArgument('key')->willReturn(3); + $value->scoreArgument('value')->willReturn(1); + $this->scoreArgument($object)->shouldBe(2); + } + + function it_accepts_any_key_token_type_to_score_object_that_is_both_traversable_and_array_accessible( + TokenInterface $key, + TokenInterface $value, + \ArrayIterator $object + ) { + $this->beConstructedWith($key, $value); + $object->current()->will(function () use ($object) { + $object->valid()->willReturn(false); + + return 'value'; + }); + $object->key()->willReturn('key'); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $this->shouldNotThrow(new InvalidArgumentException)->duringScoreArgument($object); + } + + function it_does_not_score_if_argument_is_neither_array_nor_traversable_nor_array_accessible() + { + $this->scoreArgument('string')->shouldBe(false); + $this->scoreArgument(new \stdClass)->shouldBe(false); + } + + function it_does_not_score_empty_array() + { + $this->scoreArgument(array())->shouldBe(false); + } + + function it_does_not_score_array_if_key_and_value_tokens_do_not_score_same_entry($key, $value) + { + $argument = array(1 => 'foo', 2 => 'bar'); + $key->scoreArgument(1)->willReturn(true); + $key->scoreArgument(2)->willReturn(false); + $value->scoreArgument('foo')->willReturn(false); + $value->scoreArgument('bar')->willReturn(true); + $this->scoreArgument($argument)->shouldBe(false); + } + + function it_does_not_score_traversable_object_without_entries(\Iterator $object) + { + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(false); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_does_not_score_traversable_object_if_key_and_value_tokens_do_not_score_same_entry( + TokenInterface $key, + TokenInterface $value, + \Iterator $object + ) { + $object->current()->willReturn('foo'); + $object->current()->will(function () use ($object) { + $object->valid()->willReturn(false); + + return 'bar'; + }); + $object->key()->willReturn(1); + $object->key()->willReturn(2); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $key->scoreArgument(1)->willReturn(true); + $key->scoreArgument(2)->willReturn(false); + $value->scoreArgument('foo')->willReturn(false); + $value->scoreArgument('bar')->willReturn(true); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_does_not_score_array_accessible_object_if_it_has_no_offset_with_key_token_value( + ExactValueToken $key, + \ArrayAccess $object + ) { + $object->offsetExists('key')->willReturn(false); + $key->getValue()->willReturn('key'); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_does_not_score_array_accessible_object_if_key_and_value_tokens_do_not_score_same_entry( + ExactValueToken $key, + TokenInterface $value, + \ArrayAccess $object + ) { + $object->offsetExists('key')->willReturn(true); + $object->offsetGet('key')->willReturn('value'); + $key->getValue()->willReturn('key'); + $value->scoreArgument('value')->willReturn(false); + $key->scoreArgument('key')->willReturn(true); + $this->scoreArgument($object)->shouldBe(false); + } + + function its_score_is_capped_at_8($key, $value) + { + $key->scoreArgument('key')->willReturn(10); + $value->scoreArgument('value')->willReturn(10); + $this->scoreArgument(array('key'=>'value'))->shouldBe(8); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php new file mode 100644 index 00000000..e57ff8cd --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php @@ -0,0 +1,96 @@ +beConstructedWith($value); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_holds_value($value) + { + $this->getValue()->shouldBe($value); + } + + function its_string_representation_tells_that_its_an_array_containing_only_value($value) + { + $value->__toString()->willReturn('value'); + $this->__toString()->shouldBe('[value, ..., value]'); + } + + function it_wraps_non_token_value_into_ExactValueToken(\stdClass $stdClass) + { + $this->beConstructedWith($stdClass); + $this->getValue()->shouldHaveType('Prophecy\Argument\Token\ExactValueToken'); + } + + function it_does_not_score_if_argument_is_neither_array_nor_traversable() + { + $this->scoreArgument('string')->shouldBe(false); + $this->scoreArgument(new \stdClass)->shouldBe(false); + } + + function it_does_not_score_empty_array() + { + $this->scoreArgument(array())->shouldBe(false); + } + + function it_does_not_score_traversable_object_without_entries(\Iterator $object) + { + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(false); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_scores_avg_of_scores_from_value_tokens($value) + { + $value->scoreArgument('value1')->willReturn(6); + $value->scoreArgument('value2')->willReturn(3); + $this->scoreArgument(array('value1', 'value2'))->shouldBe(4.5); + } + + function it_scores_false_if_entry_scores_false($value) + { + $value->scoreArgument('value1')->willReturn(6); + $value->scoreArgument('value2')->willReturn(false); + $this->scoreArgument(array('value1', 'value2'))->shouldBe(false); + } + + function it_does_not_score_array_keys($value) + { + $value->scoreArgument('value')->willReturn(6); + $value->scoreArgument('key')->shouldNotBeCalled(0); + $this->scoreArgument(array('key' => 'value'))->shouldBe(6); + } + + function it_scores_traversable_object_from_value_token(TokenInterface $value, \Iterator $object) + { + $object->current()->will(function ($args, $object) { + $object->valid()->willReturn(false); + + return 'value'; + }); + $object->key()->willReturn('key'); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $value->scoreArgument('value')->willReturn(2); + $this->scoreArgument($object)->shouldBe(2); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php new file mode 100644 index 00000000..4395bf09 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php @@ -0,0 +1,42 @@ +beConstructedWith('get_class'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_7_if_argument_matches_callback() + { + $this->beConstructedWith(function ($argument) { return 2 === $argument; }); + + $this->scoreArgument(2)->shouldReturn(7); + } + + function it_does_not_scores_if_argument_does_not_match_callback() + { + $this->beConstructedWith(function ($argument) { return 2 === $argument; }); + + $this->scoreArgument(5)->shouldReturn(false); + } + + function its_string_representation_should_tell_that_its_callback() + { + $this->__toString()->shouldReturn('callback()'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php new file mode 100644 index 00000000..14322f82 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php @@ -0,0 +1,152 @@ +beConstructedWith(42); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_holds_value() + { + $this->getValue()->shouldReturn(42); + } + + function it_scores_10_if_value_is_equal_to_argument() + { + $this->scoreArgument(42)->shouldReturn(10); + $this->scoreArgument('42')->shouldReturn(10); + } + + function it_scores_10_if_value_is_an_object_and_equal_to_argument() + { + $value = new \DateTime(); + $value2 = clone $value; + + $this->beConstructedWith($value); + $this->scoreArgument($value2)->shouldReturn(10); + } + + function it_does_not_scores_if_value_is_not_equal_to_argument() + { + $this->scoreArgument(50)->shouldReturn(false); + $this->scoreArgument(new \stdClass())->shouldReturn(false); + } + + function it_does_not_scores_if_value_an_object_and_is_not_equal_to_argument() + { + $value = new ExactValueTokenFixtureB('ABC'); + $value2 = new ExactValueTokenFixtureB('CBA'); + + $this->beConstructedWith($value); + $this->scoreArgument($value2)->shouldReturn(false); + } + + function it_does_not_scores_if_value_type_and_is_not_equal_to_argument() + { + $this->beConstructedWith(false); + $this->scoreArgument(0)->shouldReturn(false); + } + + function it_generates_proper_string_representation_for_integer() + { + $this->beConstructedWith(42); + $this->__toString()->shouldReturn('exact(42)'); + } + + function it_generates_proper_string_representation_for_string() + { + $this->beConstructedWith('some string'); + $this->__toString()->shouldReturn('exact("some string")'); + } + + function it_generates_single_line_representation_for_multiline_string() + { + $this->beConstructedWith("some\nstring"); + $this->__toString()->shouldReturn('exact("some\\nstring")'); + } + + function it_generates_proper_string_representation_for_double() + { + $this->beConstructedWith(42.3); + $this->__toString()->shouldReturn('exact(42.3)'); + } + + function it_generates_proper_string_representation_for_boolean_true() + { + $this->beConstructedWith(true); + $this->__toString()->shouldReturn('exact(true)'); + } + + function it_generates_proper_string_representation_for_boolean_false() + { + $this->beConstructedWith(false); + $this->__toString()->shouldReturn('exact(false)'); + } + + function it_generates_proper_string_representation_for_null() + { + $this->beConstructedWith(null); + $this->__toString()->shouldReturn('exact(null)'); + } + + function it_generates_proper_string_representation_for_empty_array() + { + $this->beConstructedWith(array()); + $this->__toString()->shouldReturn('exact([])'); + } + + function it_generates_proper_string_representation_for_array() + { + $this->beConstructedWith(array('zet', 42)); + $this->__toString()->shouldReturn('exact(["zet", 42])'); + } + + function it_generates_proper_string_representation_for_resource() + { + $resource = fopen(__FILE__, 'r'); + $this->beConstructedWith($resource); + $this->__toString()->shouldReturn('exact(stream:'.$resource.')'); + } + + function it_generates_proper_string_representation_for_object(\stdClass $object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ); + + $this->beConstructedWith($object); + $this->__toString()->shouldReturn("exact($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); + } +} + +class ExactValueTokenFixtureA +{ + public $errors; +} + +class ExactValueTokenFixtureB extends ExactValueTokenFixtureA +{ + public $errors; + public $value = null; + + public function __construct($value) + { + $this->value = $value; + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php new file mode 100644 index 00000000..00c3a215 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php @@ -0,0 +1,152 @@ +beConstructedWith(42); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Argument\Token\IdenticalValueToken'); + } + + function it_scores_11_if_string_value_is_identical_to_argument() + { + $this->beConstructedWith('foo'); + $this->scoreArgument('foo')->shouldReturn(11); + } + + function it_scores_11_if_boolean_value_is_identical_to_argument() + { + $this->beConstructedWith(false); + $this->scoreArgument(false)->shouldReturn(11); + } + + function it_scores_11_if_integer_value_is_identical_to_argument() + { + $this->beConstructedWith(31); + $this->scoreArgument(31)->shouldReturn(11); + } + + function it_scores_11_if_float_value_is_identical_to_argument() + { + $this->beConstructedWith(31.12); + $this->scoreArgument(31.12)->shouldReturn(11); + } + + function it_scores_11_if_array_value_is_identical_to_argument() + { + $this->beConstructedWith(array('foo' => 'bar')); + $this->scoreArgument(array('foo' => 'bar'))->shouldReturn(11); + } + + function it_scores_11_if_object_value_is_identical_to_argument() + { + $object = new \stdClass(); + + $this->beConstructedWith($object); + $this->scoreArgument($object)->shouldReturn(11); + } + + function it_scores_false_if_value_is_not_identical_to_argument() + { + $this->beConstructedWith(new \stdClass()); + $this->scoreArgument('foo')->shouldReturn(false); + } + + function it_scores_false_if_object_value_is_not_the_same_instance_than_argument() + { + $this->beConstructedWith(new \stdClass()); + $this->scoreArgument(new \stdClass())->shouldReturn(false); + } + + function it_scores_false_if_integer_value_is_not_identical_to_boolean_argument() + { + $this->beConstructedWith(1); + $this->scoreArgument(true)->shouldReturn(false); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_generates_proper_string_representation_for_integer() + { + $this->beConstructedWith(42); + $this->__toString()->shouldReturn('identical(42)'); + } + + function it_generates_proper_string_representation_for_string() + { + $this->beConstructedWith('some string'); + $this->__toString()->shouldReturn('identical("some string")'); + } + + function it_generates_single_line_representation_for_multiline_string() + { + $this->beConstructedWith("some\nstring"); + $this->__toString()->shouldReturn('identical("some\\nstring")'); + } + + function it_generates_proper_string_representation_for_double() + { + $this->beConstructedWith(42.3); + $this->__toString()->shouldReturn('identical(42.3)'); + } + + function it_generates_proper_string_representation_for_boolean_true() + { + $this->beConstructedWith(true); + $this->__toString()->shouldReturn('identical(true)'); + } + + function it_generates_proper_string_representation_for_boolean_false() + { + $this->beConstructedWith(false); + $this->__toString()->shouldReturn('identical(false)'); + } + + function it_generates_proper_string_representation_for_null() + { + $this->beConstructedWith(null); + $this->__toString()->shouldReturn('identical(null)'); + } + + function it_generates_proper_string_representation_for_empty_array() + { + $this->beConstructedWith(array()); + $this->__toString()->shouldReturn('identical([])'); + } + + function it_generates_proper_string_representation_for_array() + { + $this->beConstructedWith(array('zet', 42)); + $this->__toString()->shouldReturn('identical(["zet", 42])'); + } + + function it_generates_proper_string_representation_for_resource() + { + $resource = fopen(__FILE__, 'r'); + $this->beConstructedWith($resource); + $this->__toString()->shouldReturn('identical(stream:'.$resource.')'); + } + + function it_generates_proper_string_representation_for_object($object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ); + + $this->beConstructedWith($object); + $this->__toString()->shouldReturn("identical($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php new file mode 100644 index 00000000..a79acf4c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php @@ -0,0 +1,69 @@ +beConstructedWith(array()); + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->beConstructedWith(array()); + $this->shouldNotBeLast(); + } + + function it_generates_string_representation_from_all_tokens_imploded( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->__toString()->willReturn('token_1'); + $token2->__toString()->willReturn('token_2'); + $token3->__toString()->willReturn('token_3'); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->__toString()->shouldReturn('bool(token_1 AND token_2 AND token_3)'); + } + + function it_wraps_non_token_arguments_into_ExactValueToken() + { + $this->beConstructedWith(array(15, '1985')); + $this->__toString()->shouldReturn("bool(exact(15) AND exact(\"1985\"))"); + } + + function it_scores_the_maximum_score_from_all_scores_returned_by_tokens(TokenInterface $token1, TokenInterface $token2) + { + $token1->scoreArgument(1)->willReturn(10); + $token2->scoreArgument(1)->willReturn(5); + $this->beConstructedWith(array($token1, $token2)); + $this->scoreArgument(1)->shouldReturn(10); + } + + function it_does_not_score_if_there_are_no_arguments_or_tokens() + { + $this->beConstructedWith(array()); + $this->scoreArgument('any')->shouldReturn(false); + } + + function it_does_not_score_if_either_of_tokens_does_not_score(TokenInterface $token1, TokenInterface $token2) + { + $token1->scoreArgument(1)->willReturn(10); + $token1->scoreArgument(2)->willReturn(false); + + $token2->scoreArgument(1)->willReturn(false); + $token2->scoreArgument(2)->willReturn(10); + + $this->beConstructedWith(array($token1, $token2)); + + $this->scoreArgument(1)->shouldReturn(false); + $this->scoreArgument(2)->shouldReturn(false); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php new file mode 100644 index 00000000..c2cbbad1 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php @@ -0,0 +1,62 @@ +beConstructedWith($token); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_holds_originating_token($token) + { + $this->getOriginatingToken()->shouldReturn($token); + } + + function it_has_simple_string_representation($token) + { + $token->__toString()->willReturn('value'); + $this->__toString()->shouldBe('not(value)'); + } + + function it_wraps_non_token_argument_into_ExactValueToken() + { + $this->beConstructedWith(5); + $token = $this->getOriginatingToken(); + $token->shouldhaveType('Prophecy\Argument\Token\ExactValueToken'); + $token->getValue()->shouldBe(5); + } + + function it_scores_4_if_preset_token_does_not_match_the_argument($token) + { + $token->scoreArgument('argument')->willReturn(false); + $this->scoreArgument('argument')->shouldBe(4); + } + + function it_does_not_score_if_preset_token_matches_argument($token) + { + $token->scoreArgument('argument')->willReturn(5); + $this->scoreArgument('argument')->shouldBe(false); + } + + function it_is_last_if_preset_token_is_last($token) + { + $token->isLast()->willReturn(true); + $this->shouldBeLast(); + } + + function it_is_not_last_if_preset_token_is_not_last($token) + { + $token->isLast()->willReturn(false); + $this->shouldNotBeLast(); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php new file mode 100644 index 00000000..d71b22a0 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php @@ -0,0 +1,89 @@ +beConstructedWith('getName', 'stdClass'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_8_if_argument_object_has_specific_method_state(\ReflectionClass $reflection) + { + $reflection->getName()->willReturn('stdClass'); + + $this->scoreArgument($reflection)->shouldReturn(8); + } + + function it_scores_8_if_argument_object_has_specific_property_state(\stdClass $class) + { + $class->getName = 'stdClass'; + + $this->scoreArgument($class)->shouldReturn(8); + } + + function it_does_not_score_if_argument_method_state_does_not_match() + { + $value = new ObjectStateTokenFixtureB('ABC'); + $value2 = new ObjectStateTokenFixtureB('CBA'); + + $this->beConstructedWith('getSelf', $value); + $this->scoreArgument($value2)->shouldReturn(false); + } + + function it_does_not_score_if_argument_property_state_does_not_match(\stdClass $class) + { + $class->getName = 'SplFileInfo'; + + $this->scoreArgument($class)->shouldReturn(false); + } + + function it_does_not_score_if_argument_object_does_not_have_method_or_property(ObjectStateTokenFixtureA $class) + { + $this->scoreArgument($class)->shouldReturn(false); + } + + function it_does_not_score_if_argument_is_not_object() + { + $this->scoreArgument(42)->shouldReturn(false); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldReturn('state(getName(), "stdClass")'); + } +} + +class ObjectStateTokenFixtureA +{ + public $errors; +} + +class ObjectStateTokenFixtureB extends ObjectStateTokenFixtureA +{ + public $errors; + public $value = null; + + public function __construct($value) + { + $this->value = $value; + } + + public function getSelf() + { + return $this; + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php new file mode 100644 index 00000000..c7fd2652 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php @@ -0,0 +1,49 @@ +beConstructedWith('a substring'); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Argument\Token\StringContainsToken'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_holds_value() + { + $this->getValue()->shouldReturn('a substring'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_6_if_the_argument_contains_the_value() + { + $this->scoreArgument('Argument containing a substring')->shouldReturn(6); + } + + function it_does_not_score_if_the_argument_does_not_contain_the_value() + { + $this->scoreArgument('Argument will not match')->shouldReturn(false); + } + + function its_string_representation_shows_substring() + { + $this->__toString()->shouldReturn('contains("a substring")'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php new file mode 100644 index 00000000..2829f31f --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php @@ -0,0 +1,57 @@ +beConstructedWith('integer'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_5_if_argument_matches_simple_type() + { + $this->beConstructedWith('integer'); + + $this->scoreArgument(42)->shouldReturn(5); + } + + function it_does_not_scores_if_argument_does_not_match_simple_type() + { + $this->beConstructedWith('integer'); + + $this->scoreArgument(42.0)->shouldReturn(false); + } + + function it_scores_5_if_argument_is_an_instance_of_specified_class(\ReflectionObject $object) + { + $this->beConstructedWith('ReflectionClass'); + + $this->scoreArgument($object)->shouldReturn(5); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldReturn('type(integer)'); + } + + function it_scores_5_if_argument_is_an_instance_of_specified_interface(TokenInterface $interface) + { + $this->beConstructedWith('Prophecy\Argument\Token\TokenInterface'); + + $this->scoreArgument($interface)->shouldReturn(5); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php new file mode 100644 index 00000000..64232a4d --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php @@ -0,0 +1,107 @@ +exact(42); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ExactValueToken'); + $token->getValue()->shouldReturn(42); + } + + function it_has_a_shortcut_for_any_argument_token() + { + $token = $this->any(); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValueToken'); + } + + function it_has_a_shortcut_for_multiple_arguments_token() + { + $token = $this->cetera(); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValuesToken'); + } + + function it_has_a_shortcut_for_type_token() + { + $token = $this->type('integer'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\TypeToken'); + } + + function it_has_a_shortcut_for_callback_token() + { + $token = $this->that('get_class'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\CallbackToken'); + } + + function it_has_a_shortcut_for_object_state_token() + { + $token = $this->which('getName', 'everzet'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ObjectStateToken'); + } + + function it_has_a_shortcut_for_logical_and_token() + { + $token = $this->allOf('integer', 5); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalAndToken'); + } + + function it_has_a_shortcut_for_array_count_token() + { + $token = $this->size(5); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayCountToken'); + } + + function it_has_a_shortcut_for_array_entry_token() + { + $token = $this->withEntry('key', 'value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); + } + + function it_has_a_shortcut_for_array_every_entry_token() + { + $token = $this->withEveryEntry('value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEveryEntryToken'); + } + + function it_has_a_shortcut_for_identical_value_token() + { + $token = $this->is('value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\IdenticalValueToken'); + } + + function it_has_a_shortcut_for_array_entry_token_matching_any_key() + { + $token = $this->containing('value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); + $token->getKey()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); + } + + function it_has_a_shortcut_for_array_entry_token_matching_any_value() + { + $token = $this->withKey('key'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); + $token->getValue()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); + } + + function it_has_a_shortcut_for_logical_not_token() + { + $token = $this->not('kagux'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalNotToken'); + } + + function it_has_a_shortcut_for_string_contains_token() + { + $token = $this->containingString('string'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\StringContainsToken'); + } + + function it_has_a_shortcut_for_approximate_token() + { + $token = $this->approximate(10); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ApproximateValueToken'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php new file mode 100644 index 00000000..83d61f1e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php @@ -0,0 +1,180 @@ +scoreArguments(array(5, 2, 3))->willReturn(10); + $objectProphecy->getMethodProphecies()->willReturn(array()); + + $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3)); + + $calls = $this->findCalls('setValues', $wildcard); + $calls->shouldHaveCount(1); + + $calls[0]->shouldBeAnInstanceOf('Prophecy\Call\Call'); + $calls[0]->getMethodName()->shouldReturn('setValues'); + $calls[0]->getArguments()->shouldReturn(array(5, 2, 3)); + $calls[0]->getReturnValue()->shouldReturn(null); + } + + function it_returns_null_for_any_call_through_makeCall_if_no_method_prophecies_added( + $objectProphecy + ) + { + $objectProphecy->getMethodProphecies()->willReturn(array()); + + $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3))->shouldReturn(null); + } + + function it_executes_promise_of_method_prophecy_that_matches_signature_passed_to_makeCall( + $objectProphecy, + MethodProphecy $method1, + MethodProphecy $method2, + MethodProphecy $method3, + ArgumentsWildcard $arguments1, + ArgumentsWildcard $arguments2, + ArgumentsWildcard $arguments3, + PromiseInterface $promise + ) { + $method1->hasReturnVoid()->willReturn(false); + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments1); + $arguments1->scoreArguments(array('world', 'everything'))->willReturn(false); + + $method2->hasReturnVoid()->willReturn(false); + $method2->getMethodName()->willReturn('setTitle'); + $method2->getArgumentsWildcard()->willReturn($arguments2); + $arguments2->scoreArguments(array('world', 'everything'))->willReturn(false); + + $method3->hasReturnVoid()->willReturn(false); + $method3->getMethodName()->willReturn('getName'); + $method3->getArgumentsWildcard()->willReturn($arguments3); + $method3->getPromise()->willReturn($promise); + $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); + + $objectProphecy->getMethodProphecies()->willReturn(array( + 'method1' => array($method1), + 'method2' => array($method2, $method3) + )); + $objectProphecy->getMethodProphecies('getName')->willReturn(array($method1, $method3)); + $objectProphecy->reveal()->willReturn(new \stdClass()); + + $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method3)->willReturn(42); + + $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))->shouldReturn(42); + + $calls = $this->findCalls('getName', $arguments3); + $calls->shouldHaveCount(1); + $calls[0]->getReturnValue()->shouldReturn(42); + } + + function it_executes_promise_of_method_prophecy_that_matches_with_highest_score_to_makeCall( + $objectProphecy, + MethodProphecy $method1, + MethodProphecy $method2, + MethodProphecy $method3, + ArgumentsWildcard $arguments1, + ArgumentsWildcard $arguments2, + ArgumentsWildcard $arguments3, + PromiseInterface $promise + ) { + $method1->hasReturnVoid()->willReturn(false); + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments1); + $arguments1->scoreArguments(array('world', 'everything'))->willReturn(50); + + $method2->hasReturnVoid()->willReturn(false); + $method2->getMethodName()->willReturn('getName'); + $method2->getArgumentsWildcard()->willReturn($arguments2); + $method2->getPromise()->willReturn($promise); + $arguments2->scoreArguments(array('world', 'everything'))->willReturn(300); + + $method3->hasReturnVoid()->willReturn(false); + $method3->getMethodName()->willReturn('getName'); + $method3->getArgumentsWildcard()->willReturn($arguments3); + $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); + + $objectProphecy->getMethodProphecies()->willReturn(array( + 'method1' => array($method1), + 'method2' => array($method2, $method3) + )); + $objectProphecy->getMethodProphecies('getName')->willReturn(array( + $method1, $method2, $method3 + )); + $objectProphecy->reveal()->willReturn(new \stdClass()); + + $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method2) + ->willReturn('second'); + + $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) + ->shouldReturn('second'); + } + + function it_throws_exception_if_call_does_not_match_any_of_defined_method_prophecies( + $objectProphecy, + MethodProphecy $method, + ArgumentsWildcard $arguments + ) { + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->scoreArguments(array('world', 'everything'))->willReturn(false); + $arguments->__toString()->willReturn('arg1, arg2'); + + $objectProphecy->getMethodProphecies()->willReturn(array('method1' => array($method))); + $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); + + $this->shouldThrow('Prophecy\Exception\Call\UnexpectedCallException') + ->duringMakeCall($objectProphecy, 'getName', array('world', 'everything')); + } + + function it_returns_null_if_method_prophecy_that_matches_makeCall_arguments_has_no_promise( + $objectProphecy, + MethodProphecy $method, + ArgumentsWildcard $arguments + ) { + $method->hasReturnVoid()->willReturn(false); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $method->getPromise()->willReturn(null); + $arguments->scoreArguments(array('world', 'everything'))->willReturn(100); + + $objectProphecy->getMethodProphecies()->willReturn(array($method)); + $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); + + $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) + ->shouldReturn(null); + } + + function it_finds_recorded_calls_by_a_method_name_and_arguments_wildcard( + $objectProphecy, + ArgumentsWildcard $wildcard + ) { + $objectProphecy->getMethodProphecies()->willReturn(array()); + + $this->makeCall($objectProphecy, 'getName', array('world')); + $this->makeCall($objectProphecy, 'getName', array('everything')); + $this->makeCall($objectProphecy, 'setName', array(42)); + + $wildcard->scoreArguments(array('world'))->willReturn(false); + $wildcard->scoreArguments(array('everything'))->willReturn(10); + + $calls = $this->findCalls('getName', $wildcard); + + $calls->shouldHaveCount(1); + $calls[0]->getMethodName()->shouldReturn('getName'); + $calls[0]->getArguments()->shouldReturn(array('everything')); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php new file mode 100644 index 00000000..a622b493 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php @@ -0,0 +1,51 @@ +beConstructedWith('setValues', array(5, 2), 42, $exception, 'some_file.php', 23); + } + + function it_exposes_method_name_through_getter() + { + $this->getMethodName()->shouldReturn('setValues'); + } + + function it_exposes_arguments_through_getter() + { + $this->getArguments()->shouldReturn(array(5, 2)); + } + + function it_exposes_return_value_through_getter() + { + $this->getReturnValue()->shouldReturn(42); + } + + function it_exposes_exception_through_getter($exception) + { + $this->getException()->shouldReturn($exception); + } + + function it_exposes_file_and_line_through_getter() + { + $this->getFile()->shouldReturn('some_file.php'); + $this->getLine()->shouldReturn(23); + } + + function it_returns_shortpath_to_callPlace() + { + $this->getCallPlace()->shouldReturn('some_file.php:23'); + } + + function it_returns_unknown_as_callPlace_if_no_file_or_line_provided() + { + $this->beConstructedWith('setValues', array(), 0, null, null, null); + + $this->getCallPlace()->shouldReturn('unknown'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php new file mode 100644 index 00000000..c174e73c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php @@ -0,0 +1,39 @@ +shouldHaveType('SebastianBergmann\Comparator\Comparator'); + } + + function it_accepts_only_closures() + { + $this->accepts(123, 321)->shouldReturn(false); + $this->accepts('string', 'string')->shouldReturn(false); + $this->accepts(false, true)->shouldReturn(false); + $this->accepts(true, false)->shouldReturn(false); + $this->accepts((object)array(), (object)array())->shouldReturn(false); + $this->accepts(function(){}, (object)array())->shouldReturn(false); + $this->accepts(function(){}, (object)array())->shouldReturn(false); + + $this->accepts(function(){}, function(){})->shouldReturn(true); + } + + function it_asserts_that_all_closures_are_different() + { + $this->shouldThrow()->duringAssertEquals(function(){}, function(){}); + } + + function it_asserts_that_all_closures_are_different_even_if_its_the_same_closure() + { + $closure = function(){}; + + $this->shouldThrow()->duringAssertEquals($closure, $closure); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php new file mode 100644 index 00000000..6b13336d --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php @@ -0,0 +1,20 @@ +shouldHaveType('SebastianBergmann\Comparator\Factory'); + } + + function it_should_have_ClosureComparator_registered() + { + $comparator = $this->getInstance()->getComparatorFor(function(){}, function(){}); + $comparator->shouldHaveType('Prophecy\Comparator\ClosureComparator'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php new file mode 100644 index 00000000..06bf6f17 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php @@ -0,0 +1,39 @@ +shouldHaveType('SebastianBergmann\Comparator\ObjectComparator'); + } + + function it_accepts_only_prophecy_objects() + { + $this->accepts(123, 321)->shouldReturn(false); + $this->accepts('string', 'string')->shouldReturn(false); + $this->accepts(false, true)->shouldReturn(false); + $this->accepts(true, false)->shouldReturn(false); + $this->accepts((object)array(), (object)array())->shouldReturn(false); + $this->accepts(function(){}, (object)array())->shouldReturn(false); + $this->accepts(function(){}, function(){})->shouldReturn(false); + + $prophet = new Prophet(); + $prophecy = $prophet->prophesize('Prophecy\Prophecy\ObjectProphecy'); + + $this->accepts($prophecy, $prophecy)->shouldReturn(true); + } + + function it_asserts_that_an_object_is_equal_to_its_revealed_prophecy() + { + $prophet = new Prophet(); + $prophecy = $prophet->prophesize('Prophecy\Prophecy\ObjectProphecy'); + + $this->shouldNotThrow()->duringAssertEquals($prophecy->reveal(), $prophecy); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php new file mode 100644 index 00000000..4fd28d7e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php @@ -0,0 +1,54 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_100() + { + $this->getPriority()->shouldReturn(100); + } + + function it_supports_anything(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_makes_all_constructor_arguments_optional( + ClassNode $class, + MethodNode $method, + ArgumentNode $arg1, + ArgumentNode $arg2 + ) { + $class->hasMethod('__construct')->willReturn(true); + $class->getMethod('__construct')->willReturn($method); + $method->getArguments()->willReturn(array($arg1, $arg2)); + + $arg1->setDefault(null)->shouldBeCalled(); + $arg2->setDefault(null)->shouldBeCalled(); + + $method->setCode(Argument::type('string'))->shouldBeCalled(); + + $this->apply($class); + } + + function it_creates_new_constructor_if_object_has_none(ClassNode $class) + { + $class->hasMethod('__construct')->willReturn(false); + $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode')) + ->shouldBeCalled(); + + $this->apply($class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php new file mode 100644 index 00000000..9d04421a --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php @@ -0,0 +1,34 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_minus_50() + { + $this->getPriority()->shouldReturn(-50); + } + + function it_uses_parent_code_for_setTraceOptions(ClassNode $node, MethodNode $method, MethodNode $getterMethod) + { + $node->hasMethod('setTraceOptions')->willReturn(true); + $node->getMethod('setTraceOptions')->willReturn($method); + $node->hasMethod('getTraceOptions')->willReturn(true); + $node->getMethod('getTraceOptions')->willReturn($getterMethod); + + $method->useParentCode()->shouldBeCalled(); + $getterMethod->useParentCode()->shouldBeCalled(); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php new file mode 100644 index 00000000..1c454e62 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php @@ -0,0 +1,43 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_49() + { + $this->getPriority()->shouldReturn(49); + } + + function it_will_remove_echo_and_eval_methods( + ClassNode $node, + MethodNode $method1, + MethodNode $method2, + MethodNode $method3 + ) { + $node->removeMethod('eval')->shouldBeCalled(); + $node->removeMethod('echo')->shouldBeCalled(); + + $method1->getName()->willReturn('echo'); + $method2->getName()->willReturn('eval'); + $method3->getName()->willReturn('notKeyword'); + + $node->getMethods()->willReturn(array( + 'echo' => $method1, + 'eval' => $method2, + 'notKeyword' => $method3, + )); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php new file mode 100644 index 00000000..f7a56317 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php @@ -0,0 +1,140 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_supports_anything(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_discovers_api_using_phpdoc(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApi'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_ignores_existing_methods(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiExtended'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); + $node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled(); + + $this->apply($node); + } + + function it_ignores_empty_methods_from_phpdoc(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiInvalidMethodDefinition'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode(''))->shouldNotBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_implemented_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_own_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('stdClass'); + $node->getInterfaces()->willReturn(array('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented')); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_extended_parent_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplementedExtended'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_has_50_priority() + { + $this->getPriority()->shouldReturn(50); + } +} + +/** + * @method void undefinedMethod() + */ +class MagicalApi +{ + /** + * @return void + */ + public function definedMethod() + { + + } +} + +/** + * @method void invalidMethodDefinition + * @method void + * @method + */ +class MagicalApiInvalidMethodDefinition +{ +} + +/** + * @method void undefinedMethod() + * @method void definedMethod() + */ +class MagicalApiExtended extends MagicalApi +{ + +} + +/** + */ +class MagicalApiImplemented implements MagicalApiInterface +{ + +} + +/** + */ +class MagicalApiImplementedExtended extends MagicalApiImplemented +{ +} + +/** + * @method void implementedMethod() + */ +interface MagicalApiInterface +{ + +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php new file mode 100644 index 00000000..96f0e20a --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php @@ -0,0 +1,79 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_has_priority_of_0() + { + $this->getPriority()->shouldReturn(0); + } + + function it_supports_any_class(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_forces_class_to_implement_ProphecySubjectInterface(ClassNode $node) + { + $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->shouldBeCalled(); + + $node->addProperty('objectProphecy', 'private')->willReturn(null); + $node->getMethods()->willReturn(array()); + $node->hasMethod(Argument::any())->willReturn(false); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + + $this->apply($node); + } + + function it_forces_all_class_methods_except_constructor_to_proxy_calls_into_prophecy_makeCall( + ClassNode $node, + MethodNode $constructor, + MethodNode $method1, + MethodNode $method2, + MethodNode $method3 + ) { + $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->willReturn(null); + $node->addProperty('objectProphecy', 'private')->willReturn(null); + $node->hasMethod(Argument::any())->willReturn(false); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + + $constructor->getName()->willReturn('__construct'); + $method1->getName()->willReturn('method1'); + $method2->getName()->willReturn('method2'); + $method3->getName()->willReturn('method3'); + + $method1->getReturnType()->willReturn('int'); + $method2->getReturnType()->willReturn('int'); + $method3->getReturnType()->willReturn('void'); + + $node->getMethods()->willReturn(array( + 'method1' => $method1, + 'method2' => $method2, + 'method3' => $method3, + )); + + $constructor->setCode(Argument::any())->shouldNotBeCalled(); + + $method1->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') + ->shouldBeCalled(); + $method2->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') + ->shouldBeCalled(); + $method3->setCode('$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') + ->shouldBeCalled(); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php new file mode 100644 index 00000000..effd61e7 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php @@ -0,0 +1,43 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_50() + { + $this->getPriority()->shouldReturn(50); + } + + function it_supports_ReflectionClass_only(ClassNode $reflectionClassNode, ClassNode $anotherClassNode) + { + $reflectionClassNode->getParentClass()->willReturn('ReflectionClass'); + $anotherClassNode->getParentClass()->willReturn('stdClass'); + + $this->supports($reflectionClassNode)->shouldReturn(true); + $this->supports($anotherClassNode)->shouldReturn(false); + } + + function it_makes_all_newInstance_arguments_optional( + ClassNode $class, + MethodNode $method, + ArgumentNode $arg1 + ) { + $class->getMethod('newInstance')->willReturn($method); + $method->getArguments()->willReturn(array($arg1)); + $arg1->setDefault(null)->shouldBeCalled(); + + $this->apply($class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php new file mode 100644 index 00000000..5bc3958c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php @@ -0,0 +1,85 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_50() + { + $this->getPriority()->shouldReturn(50); + } + + function it_does_not_support_nodes_without_parent_class(ClassNode $node) + { + $node->getParentClass()->willReturn('stdClass'); + $this->supports($node)->shouldReturn(false); + } + + function it_supports_nodes_with_SplFileInfo_as_parent_class(ClassNode $node) + { + $node->getParentClass()->willReturn('SplFileInfo'); + $this->supports($node)->shouldReturn(true); + } + + function it_supports_nodes_with_derivative_of_SplFileInfo_as_parent_class(ClassNode $node) + { + $node->getParentClass()->willReturn('SplFileInfo'); + $this->supports($node)->shouldReturn(true); + } + + function it_adds_a_method_to_node_if_not_exists(ClassNode $node) + { + $node->hasMethod('__construct')->willReturn(false); + $node->addMethod(Argument::any())->shouldBeCalled(); + $node->getParentClass()->shouldBeCalled(); + + $this->apply($node); + } + + function it_updates_existing_method_if_found(ClassNode $node, MethodNode $method) + { + $node->hasMethod('__construct')->willReturn(true); + $node->getMethod('__construct')->willReturn($method); + $node->getParentClass()->shouldBeCalled(); + + $method->useParentCode()->shouldBeCalled(); + + $this->apply($node); + } + + function it_should_not_supply_a_file_for_a_directory_iterator(ClassNode $node, MethodNode $method) + { + $node->hasMethod('__construct')->willReturn(true); + $node->getMethod('__construct')->willReturn($method); + $node->getParentClass()->willReturn('DirectoryIterator'); + + $method->setCode(Argument::that(function($value) { + return strpos($value, '.php') === false; + }))->shouldBeCalled(); + + $this->apply($node); + } + + function it_should_supply_a_file_for_a_spl_file_object(ClassNode $node, MethodNode $method) + { + $node->hasMethod('__construct')->willReturn(true); + $node->getMethod('__construct')->willReturn($method); + $node->getParentClass()->willReturn('SplFileObject'); + + $method->setCode(Argument::that(function($value) { + return strpos($value, '.php') !== false; + }))->shouldBeCalled(); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php new file mode 100644 index 00000000..abce2f1e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php @@ -0,0 +1,50 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_supports_class_that_implements_only_Traversable(ClassNode $node) + { + $node->getInterfaces()->willReturn(array('Traversable')); + + $this->supports($node)->shouldReturn(true); + } + + function it_does_not_support_class_that_implements_Iterator(ClassNode $node) + { + $node->getInterfaces()->willReturn(array('Traversable', 'Iterator')); + + $this->supports($node)->shouldReturn(false); + } + + function it_does_not_support_class_that_implements_IteratorAggregate(ClassNode $node) + { + $node->getInterfaces()->willReturn(array('Traversable', 'IteratorAggregate')); + + $this->supports($node)->shouldReturn(false); + } + + function it_has_100_priority() + { + $this->getPriority()->shouldReturn(100); + } + + function it_forces_node_to_implement_IteratorAggregate(ClassNode $node) + { + $node->addInterface('Iterator')->shouldBeCalled(); + + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php new file mode 100644 index 00000000..b58b1a80 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php @@ -0,0 +1,115 @@ +beConstructedWith($mirror, $creator, $namer); + } + + function it_does_not_have_patches_by_default() + { + $this->getClassPatches()->shouldHaveCount(0); + } + + function its_registerClassPatch_adds_a_patch_to_the_doubler(ClassPatchInterface $patch) + { + $this->registerClassPatch($patch); + $this->getClassPatches()->shouldReturn(array($patch)); + } + + function its_getClassPatches_sorts_patches_by_priority( + ClassPatchInterface $alt1, + ClassPatchInterface $alt2, + ClassPatchInterface $alt3, + ClassPatchInterface $alt4 + ) { + $alt1->getPriority()->willReturn(2); + $alt2->getPriority()->willReturn(50); + $alt3->getPriority()->willReturn(10); + $alt4->getPriority()->willReturn(0); + + $this->registerClassPatch($alt1); + $this->registerClassPatch($alt2); + $this->registerClassPatch($alt3); + $this->registerClassPatch($alt4); + + $this->getClassPatches()->shouldReturn(array($alt2, $alt3, $alt1, $alt4)); + } + + function its_double_mirrors_alterates_and_instantiates_provided_class( + $mirror, + $creator, + $namer, + ClassPatchInterface $alt1, + ClassPatchInterface $alt2, + \ReflectionClass $class, + \ReflectionClass $interface1, + \ReflectionClass $interface2, + ClassNode $node + ) { + $mirror->reflect($class, array($interface1, $interface2))->willReturn($node); + $alt1->supports($node)->willReturn(true); + $alt2->supports($node)->willReturn(false); + $alt1->getPriority()->willReturn(1); + $alt2->getPriority()->willReturn(2); + $namer->name($class, array($interface1, $interface2))->willReturn('SplStack'); + $class->getName()->willReturn('stdClass'); + $interface1->getName()->willReturn('ArrayAccess'); + $interface2->getName()->willReturn('Iterator'); + + $alt1->apply($node)->shouldBeCalled(); + $alt2->apply($node)->shouldNotBeCalled(); + $creator->create('SplStack', $node)->shouldBeCalled(); + + $this->registerClassPatch($alt1); + $this->registerClassPatch($alt2); + + $this->double($class, array($interface1, $interface2)) + ->shouldReturnAnInstanceOf('SplStack'); + } + + function it_double_instantiates_a_class_with_constructor_argument( + $mirror, + \ReflectionClass $class, + ClassNode $node, + $namer + ) { + $class->getName()->willReturn('ReflectionClass'); + $mirror->reflect($class, array())->willReturn($node); + $namer->name($class, array())->willReturn('ReflectionClass'); + + $double = $this->double($class, array(), array('stdClass')); + $double->shouldBeAnInstanceOf('ReflectionClass'); + $double->getName()->shouldReturn('stdClass'); + } + + function it_can_instantiate_class_with_final_constructor( + $mirror, + \ReflectionClass $class, + ClassNode $node, + $namer + ) { + $class->getName()->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); + $mirror->reflect($class, array())->willReturn($node); + $namer->name($class, array())->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); + + $double = $this->double($class, array()); + + $double->shouldBeAnInstanceOf('spec\Prophecy\Doubler\WithFinalConstructor'); + } +} + +class WithFinalConstructor +{ + final public function __construct() {} +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php new file mode 100644 index 00000000..2e85b6ca --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php @@ -0,0 +1,362 @@ +getParentClass()->willReturn('RuntimeException'); + $class->getInterfaces()->willReturn(array( + 'Prophecy\Doubler\Generator\MirroredInterface', 'ArrayAccess', 'ArrayIterator' + )); + $class->getProperties()->willReturn(array('name' => 'public', 'email' => 'private')); + $class->getMethods()->willReturn(array($method1, $method2, $method3, $method4)); + + $method1->getName()->willReturn('getName'); + $method1->getVisibility()->willReturn('public'); + $method1->returnsReference()->willReturn(false); + $method1->isStatic()->willReturn(true); + $method1->getArguments()->willReturn(array($argument11, $argument12)); + $method1->hasReturnType()->willReturn(true); + $method1->getReturnType()->willReturn('string'); + $method1->hasNullableReturnType()->willReturn(true); + $method1->getCode()->willReturn('return $this->name;'); + + $method2->getName()->willReturn('getEmail'); + $method2->getVisibility()->willReturn('protected'); + $method2->returnsReference()->willReturn(false); + $method2->isStatic()->willReturn(false); + $method2->getArguments()->willReturn(array($argument21)); + $method2->hasReturnType()->willReturn(false); + $method2->hasNullableReturnType()->willReturn(true); + $method2->getCode()->willReturn('return $this->email;'); + + $method3->getName()->willReturn('getRefValue'); + $method3->getVisibility()->willReturn('public'); + $method3->returnsReference()->willReturn(true); + $method3->isStatic()->willReturn(false); + $method3->getArguments()->willReturn(array($argument31)); + $method3->hasReturnType()->willReturn(true); + $method3->getReturnType()->willReturn('string'); + $method3->hasNullableReturnType()->willReturn(false); + $method3->getCode()->willReturn('return $this->refValue;'); + + $method4->getName()->willReturn('doSomething'); + $method4->getVisibility()->willReturn('public'); + $method4->returnsReference()->willReturn(false); + $method4->isStatic()->willReturn(false); + $method4->getArguments()->willReturn(array()); + $method4->hasReturnType()->willReturn(true); + $method4->getReturnType()->willReturn('void'); + $method4->hasNullableReturnType()->willReturn(false); + $method4->getCode()->willReturn('return;'); + + $argument11->getName()->willReturn('fullname'); + $argument11->getTypeHint()->willReturn('array'); + $argument11->isOptional()->willReturn(true); + $argument11->getDefault()->willReturn(null); + $argument11->isPassedByReference()->willReturn(false); + $argument11->isVariadic()->willReturn(false); + $argument11->isNullable()->willReturn(false); + + $argument12->getName()->willReturn('class'); + $argument12->getTypeHint()->willReturn('ReflectionClass'); + $argument12->isOptional()->willReturn(false); + $argument12->isPassedByReference()->willReturn(false); + $argument12->isVariadic()->willReturn(false); + $argument12->isNullable()->willReturn(false); + + $argument21->getName()->willReturn('default'); + $argument21->getTypeHint()->willReturn('string'); + $argument21->isOptional()->willReturn(true); + $argument21->getDefault()->willReturn('ever.zet@gmail.com'); + $argument21->isPassedByReference()->willReturn(false); + $argument21->isVariadic()->willReturn(false); + $argument21->isNullable()->willReturn(true); + + $argument31->getName()->willReturn('refValue'); + $argument31->getTypeHint()->willReturn(null); + $argument31->isOptional()->willReturn(false); + $argument31->getDefault()->willReturn(); + $argument31->isPassedByReference()->willReturn(false); + $argument31->isVariadic()->willReturn(false); + $argument31->isNullable()->willReturn(false); + + $code = $this->generate('CustomClass', $class); + + if (version_compare(PHP_VERSION, '7.1', '>=')) { + $expected = <<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { +public $name; +private $email; + +public static function getName(array $fullname = NULL, \ReflectionClass $class): ?string { +return $this->name; +} +protected function getEmail(?string $default = 'ever.zet@gmail.com') { +return $this->email; +} +public function &getRefValue( $refValue): string { +return $this->refValue; +} +public function doSomething(): void { +return; +} + +} +} +PHP; + } elseif (version_compare(PHP_VERSION, '7.0', '>=')) { + $expected = <<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { +public $name; +private $email; + +public static function getName(array $fullname = NULL, \ReflectionClass $class): string { +return $this->name; +} +protected function getEmail(string $default = 'ever.zet@gmail.com') { +return $this->email; +} +public function &getRefValue( $refValue): string { +return $this->refValue; +} +public function doSomething() { +return; +} + +} +} +PHP; + } else { + $expected = <<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { +public $name; +private $email; + +public static function getName(array $fullname = NULL, \ReflectionClass $class) { +return $this->name; +} +protected function getEmail(\string $default = 'ever.zet@gmail.com') { +return $this->email; +} +public function &getRefValue( $refValue) { +return $this->refValue; +} +public function doSomething() { +return; +} + +} +} +PHP; + } + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_generates_proper_php_code_for_variadics( + ClassNode $class, + MethodNode $method1, + MethodNode $method2, + MethodNode $method3, + MethodNode $method4, + ArgumentNode $argument1, + ArgumentNode $argument2, + ArgumentNode $argument3, + ArgumentNode $argument4 + ) { + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array( + $method1, $method2, $method3, $method4 + )); + + $method1->getName()->willReturn('variadic'); + $method1->getVisibility()->willReturn('public'); + $method1->returnsReference()->willReturn(false); + $method1->isStatic()->willReturn(false); + $method1->getArguments()->willReturn(array($argument1)); + $method1->hasReturnType()->willReturn(false); + $method1->getCode()->willReturn(''); + + $method2->getName()->willReturn('variadicByRef'); + $method2->getVisibility()->willReturn('public'); + $method2->returnsReference()->willReturn(false); + $method2->isStatic()->willReturn(false); + $method2->getArguments()->willReturn(array($argument2)); + $method2->hasReturnType()->willReturn(false); + $method2->getCode()->willReturn(''); + + $method3->getName()->willReturn('variadicWithType'); + $method3->getVisibility()->willReturn('public'); + $method3->returnsReference()->willReturn(false); + $method3->isStatic()->willReturn(false); + $method3->getArguments()->willReturn(array($argument3)); + $method3->hasReturnType()->willReturn(false); + $method3->getCode()->willReturn(''); + + $method4->getName()->willReturn('variadicWithTypeByRef'); + $method4->getVisibility()->willReturn('public'); + $method4->returnsReference()->willReturn(false); + $method4->isStatic()->willReturn(false); + $method4->getArguments()->willReturn(array($argument4)); + $method4->hasReturnType()->willReturn(false); + $method4->getCode()->willReturn(''); + + $argument1->getName()->willReturn('args'); + $argument1->getTypeHint()->willReturn(null); + $argument1->isOptional()->willReturn(false); + $argument1->isPassedByReference()->willReturn(false); + $argument1->isVariadic()->willReturn(true); + $argument1->isNullable()->willReturn(false); + + $argument2->getName()->willReturn('args'); + $argument2->getTypeHint()->willReturn(null); + $argument2->isOptional()->willReturn(false); + $argument2->isPassedByReference()->willReturn(true); + $argument2->isVariadic()->willReturn(true); + $argument2->isNullable()->willReturn(false); + + $argument3->getName()->willReturn('args'); + $argument3->getTypeHint()->willReturn('\ReflectionClass'); + $argument3->isOptional()->willReturn(false); + $argument3->isPassedByReference()->willReturn(false); + $argument3->isVariadic()->willReturn(true); + $argument3->isNullable()->willReturn(false); + + $argument4->getName()->willReturn('args'); + $argument4->getTypeHint()->willReturn('\ReflectionClass'); + $argument4->isOptional()->willReturn(false); + $argument4->isPassedByReference()->willReturn(true); + $argument4->isVariadic()->willReturn(true); + $argument4->isNullable()->willReturn(false); + + $code = $this->generate('CustomClass', $class); + $expected = <<<'PHP' +namespace { +class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { + +public function variadic( ...$args) { + +} +public function variadicByRef( &...$args) { + +} +public function variadicWithType(\\ReflectionClass ...$args) { + +} +public function variadicWithTypeByRef(\\ReflectionClass &...$args) { + +} + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_overrides_properly_methods_with_args_passed_by_reference( + ClassNode $class, + MethodNode $method, + ArgumentNode $argument + ) { + $class->getParentClass()->willReturn('RuntimeException'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array($method)); + + $method->getName()->willReturn('getName'); + $method->getVisibility()->willReturn('public'); + $method->isStatic()->willReturn(false); + $method->getArguments()->willReturn(array($argument)); + $method->hasReturnType()->willReturn(false); + $method->returnsReference()->willReturn(false); + $method->getCode()->willReturn('return $this->name;'); + + $argument->getName()->willReturn('fullname'); + $argument->getTypeHint()->willReturn('array'); + $argument->isOptional()->willReturn(true); + $argument->getDefault()->willReturn(null); + $argument->isPassedByReference()->willReturn(true); + $argument->isVariadic()->willReturn(false); + $argument->isNullable()->willReturn(false); + + $code = $this->generate('CustomClass', $class); + $expected =<<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface { + +public function getName(array &$fullname = NULL) { +return $this->name; +} + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_generates_empty_class_for_empty_ClassNode(ClassNode $class) + { + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array()); + + $code = $this->generate('CustomClass', $class); + $expected =<<<'PHP' +namespace { +class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { + + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_wraps_class_in_namespace_if_it_is_namespaced(ClassNode $class) + { + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array()); + + $code = $this->generate('My\Awesome\CustomClass', $class); + $expected =<<<'PHP' +namespace My\Awesome { +class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { + + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php new file mode 100644 index 00000000..e7cae23b --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php @@ -0,0 +1,37 @@ +beConstructedWith($generator); + } + + function it_evaluates_code_generated_by_ClassCodeGenerator($generator, ClassNode $class) + { + $generator->generate('stdClass', $class)->shouldBeCalled()->willReturn( + 'return 42;' + ); + + $this->create('stdClass', $class)->shouldReturn(42); + } + + function it_throws_an_exception_if_class_does_not_exist_after_evaluation($generator, ClassNode $class) + { + $generator->generate('CustomClass', $class)->shouldBeCalled()->willReturn( + 'return 42;' + ); + + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Interface1', 'Interface2')); + + $this->shouldThrow('Prophecy\Exception\Doubler\ClassCreatorException') + ->duringCreate('CustomClass', $class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php new file mode 100644 index 00000000..2c8d1886 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php @@ -0,0 +1,92 @@ +beConstructedWith('name'); + } + + function it_is_not_be_passed_by_reference_by_default() + { + $this->shouldNotBePassedByReference(); + } + + function it_is_passed_by_reference_if_marked() + { + $this->setAsPassedByReference(); + $this->shouldBePassedByReference(); + } + + function it_is_not_variadic_by_default() + { + $this->shouldNotBeVariadic(); + } + + function it_is_variadic_if_marked() + { + $this->setAsVariadic(); + $this->shouldBeVariadic(); + } + + function it_does_not_have_default_by_default() + { + $this->shouldNotHaveDefault(); + } + + function it_does_not_have_default_if_variadic() + { + $this->setDefault(null); + $this->setAsVariadic(); + $this->shouldNotHaveDefault(); + } + + function it_does_have_default_if_not_variadic() + { + $this->setDefault(null); + $this->setAsVariadic(false); + $this->hasDefault()->shouldReturn(true); + } + + function it_has_name_with_which_it_was_been_constructed() + { + $this->getName()->shouldReturn('name'); + } + + function it_has_no_typehint_by_default() + { + $this->getTypeHint()->shouldReturn(null); + } + + function its_typeHint_is_mutable() + { + $this->setTypeHint('array'); + $this->getTypeHint()->shouldReturn('array'); + } + + function it_does_not_have_default_value_by_default() + { + $this->getDefault()->shouldReturn(null); + } + + function it_is_not_optional_by_default() + { + $this->isOptional()->shouldReturn(false); + } + + function its_default_is_mutable() + { + $this->setDefault(array()); + $this->getDefault()->shouldReturn(array()); + } + + function it_is_marked_as_optional_when_default_is_set() + { + $this->setDefault(null); + $this->isOptional()->shouldReturn(true); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php new file mode 100644 index 00000000..16fc498b --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php @@ -0,0 +1,185 @@ +getParentClass()->shouldReturn('stdClass'); + } + + function its_parentClass_is_mutable() + { + $this->setParentClass('Exception'); + $this->getParentClass()->shouldReturn('Exception'); + } + + function its_parentClass_is_set_to_stdClass_if_user_set_null() + { + $this->setParentClass(null); + $this->getParentClass()->shouldReturn('stdClass'); + } + + function it_does_not_implement_any_interface_by_default() + { + $this->getInterfaces()->shouldHaveCount(0); + } + + function its_addInterface_adds_item_to_the_list_of_implemented_interfaces() + { + $this->addInterface('MyInterface'); + $this->getInterfaces()->shouldHaveCount(1); + } + + function its_hasInterface_returns_true_if_class_implements_interface() + { + $this->addInterface('MyInterface'); + $this->hasInterface('MyInterface')->shouldReturn(true); + } + + function its_hasInterface_returns_false_if_class_does_not_implements_interface() + { + $this->hasInterface('MyInterface')->shouldReturn(false); + } + + function it_supports_implementation_of_multiple_interfaces() + { + $this->addInterface('MyInterface'); + $this->addInterface('MySecondInterface'); + $this->getInterfaces()->shouldHaveCount(2); + } + + function it_ignores_same_interfaces_added_twice() + { + $this->addInterface('MyInterface'); + $this->addInterface('MyInterface'); + + $this->getInterfaces()->shouldHaveCount(1); + $this->getInterfaces()->shouldReturn(array('MyInterface')); + } + + function it_does_not_have_methods_by_default() + { + $this->getMethods()->shouldHaveCount(0); + } + + function it_can_has_methods(MethodNode $method1, MethodNode $method2) + { + $method1->getName()->willReturn('__construct'); + $method2->getName()->willReturn('getName'); + + $this->addMethod($method1); + $this->addMethod($method2); + + $this->getMethods()->shouldReturn(array( + '__construct' => $method1, + 'getName' => $method2 + )); + } + + function its_hasMethod_returns_true_if_method_exists(MethodNode $method) + { + $method->getName()->willReturn('getName'); + + $this->addMethod($method); + + $this->hasMethod('getName')->shouldReturn(true); + } + + function its_getMethod_returns_method_by_name(MethodNode $method) + { + $method->getName()->willReturn('getName'); + + $this->addMethod($method); + + $this->getMethod('getName')->shouldReturn($method); + } + + function its_hasMethod_returns_false_if_method_does_not_exists() + { + $this->hasMethod('getName')->shouldReturn(false); + } + + function its_hasMethod_returns_false_if_method_has_been_removed(MethodNode $method) + { + $method->getName()->willReturn('getName'); + $this->addMethod($method); + $this->removeMethod('getName'); + + $this->hasMethod('getName')->shouldReturn(false); + } + + + function it_does_not_have_properties_by_default() + { + $this->getProperties()->shouldHaveCount(0); + } + + function it_is_able_to_have_properties() + { + $this->addProperty('title'); + $this->addProperty('text', 'private'); + $this->getProperties()->shouldReturn(array( + 'title' => 'public', + 'text' => 'private' + )); + } + + function its_addProperty_does_not_accept_unsupported_visibility() + { + $this->shouldThrow('InvalidArgumentException')->duringAddProperty('title', 'town'); + } + + function its_addProperty_lowercases_visibility_before_setting() + { + $this->addProperty('text', 'PRIVATE'); + $this->getProperties()->shouldReturn(array('text' => 'private')); + } + + function its_has_no_unextendable_methods_by_default() + { + $this->getUnextendableMethods()->shouldHaveCount(0); + } + + function its_addUnextendableMethods_adds_an_unextendable_method() + { + $this->addUnextendableMethod('testMethod'); + $this->getUnextendableMethods()->shouldHaveCount(1); + } + + function its_methods_are_extendable_by_default() + { + $this->isExtendable('testMethod')->shouldReturn(true); + } + + function its_unextendable_methods_are_not_extendable() + { + $this->addUnextendableMethod('testMethod'); + $this->isExtendable('testMethod')->shouldReturn(false); + } + + function its_addUnextendableMethods_doesnt_create_duplicates() + { + $this->addUnextendableMethod('testMethod'); + $this->addUnextendableMethod('testMethod'); + $this->getUnextendableMethods()->shouldHaveCount(1); + } + + function it_throws_an_exception_when_adding_a_method_that_isnt_extendable(MethodNode $method) + { + $this->addUnextendableMethod('testMethod'); + $method->getName()->willReturn('testMethod'); + + $expectedException = new MethodNotExtendableException( + "Method `testMethod` is not extendable, so can not be added.", + "stdClass", + "testMethod" + ); + $this->shouldThrow($expectedException)->duringAddMethod($method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php new file mode 100644 index 00000000..14cfe8de --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php @@ -0,0 +1,134 @@ +beConstructedWith('getTitle'); + } + + function it_has_a_name() + { + $this->getName()->shouldReturn('getTitle'); + } + + function it_has_public_visibility_by_default() + { + $this->getVisibility()->shouldReturn('public'); + } + + function its_visibility_is_mutable() + { + $this->setVisibility('private'); + $this->getVisibility()->shouldReturn('private'); + } + + function it_is_not_static_by_default() + { + $this->shouldNotBeStatic(); + } + + function it_does_not_return_a_reference_by_default() + { + $this->returnsReference()->shouldReturn(false); + } + + function it_should_be_settable_as_returning_a_reference_through_setter() + { + $this->setReturnsReference(); + $this->returnsReference()->shouldReturn(true); + } + + function it_should_be_settable_as_static_through_setter() + { + $this->setStatic(); + $this->shouldBeStatic(); + } + + function it_accepts_only_supported_visibilities() + { + $this->shouldThrow('InvalidArgumentException')->duringSetVisibility('stealth'); + } + + function it_lowercases_visibility_before_setting_it() + { + $this->setVisibility('Public'); + $this->getVisibility()->shouldReturn('public'); + } + + function its_useParentCode_causes_method_to_call_parent(ArgumentNode $argument1, ArgumentNode $argument2) + { + $argument1->getName()->willReturn('objectName'); + $argument2->getName()->willReturn('default'); + + $argument1->isVariadic()->willReturn(false); + $argument2->isVariadic()->willReturn(true); + + $this->addArgument($argument1); + $this->addArgument($argument2); + + $this->useParentCode(); + + $this->getCode()->shouldReturn( + 'return parent::getTitle($objectName, ...$default);' + ); + } + + function its_code_is_mutable() + { + $this->setCode('echo "code";'); + $this->getCode()->shouldReturn('echo "code";'); + } + + function its_reference_returning_methods_will_generate_exceptions() + { + $this->setCode('echo "code";'); + $this->setReturnsReference(); + $this->getCode()->shouldReturn("throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), 'getTitle');"); + } + + function its_setCode_provided_with_null_cleans_method_body() + { + $this->setCode(null); + $this->getCode()->shouldReturn(''); + } + + function it_is_constructable_with_code() + { + $this->beConstructedWith('getTitle', 'die();'); + $this->getCode()->shouldReturn('die();'); + } + + function it_does_not_have_arguments_by_default() + { + $this->getArguments()->shouldHaveCount(0); + } + + function it_supports_adding_arguments(ArgumentNode $argument1, ArgumentNode $argument2) + { + $this->addArgument($argument1); + $this->addArgument($argument2); + + $this->getArguments()->shouldReturn(array($argument1, $argument2)); + } + + function it_does_not_have_return_type_by_default() + { + $this->hasReturnType()->shouldReturn(false); + } + + function it_setReturnType_sets_return_type() + { + $returnType = 'string'; + + $this->setReturnType($returnType); + + $this->hasReturnType()->shouldReturn(true); + $this->getReturnType()->shouldReturn($returnType); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php new file mode 100644 index 00000000..fdf1e962 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php @@ -0,0 +1,79 @@ +beConstructedWith($doubler); + } + + function it_returns_anonymous_double_instance_by_default($doubler, ProphecySubjectInterface $double) + { + $doubler->double(null, array())->willReturn($double); + + $this->getInstance()->shouldReturn($double); + } + + function it_returns_class_double_instance_if_set($doubler, ProphecySubjectInterface $double, \ReflectionClass $class) + { + $doubler->double($class, array())->willReturn($double); + + $this->setParentClass($class); + + $this->getInstance()->shouldReturn($double); + } + + function it_returns_same_double_instance_if_called_2_times( + $doubler, + ProphecySubjectInterface $double1, + ProphecySubjectInterface $double2 + ) { + $doubler->double(null, array())->willReturn($double1); + $doubler->double(null, array())->willReturn($double2); + + $this->getInstance()->shouldReturn($double2); + $this->getInstance()->shouldReturn($double2); + } + + function its_setParentClass_throws_ClassNotFoundException_if_class_not_found() + { + $this->shouldThrow('Prophecy\Exception\Doubler\ClassNotFoundException') + ->duringSetParentClass('SomeUnexistingClass'); + } + + function its_setParentClass_throws_exception_if_prophecy_is_already_created( + $doubler, + ProphecySubjectInterface $double + ) { + $doubler->double(null, array())->willReturn($double); + + $this->getInstance(); + + $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') + ->duringSetParentClass('stdClass'); + } + + function its_addInterface_throws_InterfaceNotFoundException_if_no_interface_found() + { + $this->shouldThrow('Prophecy\Exception\Doubler\InterfaceNotFoundException') + ->duringAddInterface('SomeUnexistingInterface'); + } + + function its_addInterface_throws_exception_if_prophecy_is_already_created( + $doubler, + ProphecySubjectInterface $double + ) { + $doubler->double(null, array())->willReturn($double); + + $this->getInstance(); + + $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') + ->duringAddInterface('ArrayAccess'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php new file mode 100644 index 00000000..1e9b17fb --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php @@ -0,0 +1,60 @@ +getName()->willReturn('stdClass'); + $this->name($class, array())->shouldStartWith('Double\stdClass\\'); + } + + function its_name_generates_name_based_on_namespaced_class_reflection(\ReflectionClass $class) + { + $class->getName()->willReturn('Some\Custom\Class'); + $this->name($class, array())->shouldStartWith('Double\Some\Custom\Class\P'); + } + + function its_name_generates_name_based_on_interface_shortnames( + \ReflectionClass $interface1, + \ReflectionClass $interface2 + ) { + $interface1->getShortName()->willReturn('HandlerInterface'); + $interface2->getShortName()->willReturn('LoaderInterface'); + + $this->name(null, array($interface1, $interface2))->shouldStartWith( + 'Double\HandlerInterface\LoaderInterface\P' + ); + } + + function it_generates_proper_name_for_no_class_and_interfaces_list() + { + $this->name(null, array())->shouldStartWith('Double\stdClass\P'); + } + + function its_name_generates_name_based_only_on_class_if_its_available( + \ReflectionClass $class, + \ReflectionClass $interface1, + \ReflectionClass $interface2 + ) { + $class->getName()->willReturn('Some\Custom\Class'); + $interface1->getShortName()->willReturn('HandlerInterface'); + $interface2->getShortName()->willReturn('LoaderInterface'); + + $this->name($class, array($interface1, $interface2))->shouldStartWith( + 'Double\Some\Custom\Class\P' + ); + } + + public function getMatchers() + { + return array( + 'startWith' => function ($subject, $string) { + return 0 === strpos($subject, $string); + }, + ); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php new file mode 100644 index 00000000..5e2c635b --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php @@ -0,0 +1,30 @@ +beConstructedWith('msg', $objectProphecy, 'getName', array('arg1', 'arg2')); + } + + function it_is_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); + } + + function it_exposes_method_name_through_getter() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_exposes_arguments_through_getter() + { + $this->getArguments()->shouldReturn(array('arg1', 'arg2')); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php new file mode 100644 index 00000000..da3aa580 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php @@ -0,0 +1,26 @@ +beConstructedWith('', $node); + } + + function it_is_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); + } + + function it_contains_a_reflected_node($node) + { + $this->getClassNode()->shouldReturn($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php new file mode 100644 index 00000000..c4f547a7 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php @@ -0,0 +1,24 @@ +beConstructedWith('', $class); + } + + function it_is_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); + } + + function it_contains_a_reflected_class_link($class) + { + $this->getReflectedClass()->shouldReturn($class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php new file mode 100644 index 00000000..251512b9 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php @@ -0,0 +1,25 @@ +beConstructedWith('msg', 'CustomClass'); + } + + function it_is_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoubleException'); + } + + function its_getClassname_returns_classname() + { + $this->getClassname()->shouldReturn('CustomClass'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php new file mode 100644 index 00000000..6fe5a19a --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php @@ -0,0 +1,14 @@ +shouldBeAnInstanceOf('RuntimeException'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php new file mode 100644 index 00000000..ad1a439e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php @@ -0,0 +1,24 @@ +beConstructedWith('msg', 'CustomInterface'); + } + + function it_extends_ClassNotFoundException() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\ClassNotFoundException'); + } + + function its_getClassname_returns_classname() + { + $this->getClassname()->shouldReturn('CustomInterface'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php new file mode 100644 index 00000000..5028b026 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php @@ -0,0 +1,29 @@ +beConstructedWith('', 'User', 'getName'); + } + + function it_is_DoubleException() + { + $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); + } + + function it_has_MethodName() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_has_classname() + { + $this->getClassName()->shouldReturn('User'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php new file mode 100644 index 00000000..a889dd7e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php @@ -0,0 +1,40 @@ +beConstructedWith('', 'User', 'getName', array(1, 2, 3)); + } + + function it_is_DoubleException() + { + $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); + } + + function it_has_MethodName() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_has_classnamej() + { + $this->getClassname()->shouldReturn('User'); + } + + function it_has_an_arguments_list() + { + $this->getArguments()->shouldReturn(array(1, 2, 3)); + } + + function it_has_a_default_null_argument_list() + { + $this->beConstructedWith('', 'User', 'getName'); + $this->getArguments()->shouldReturn(null); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php new file mode 100644 index 00000000..d78ea738 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php @@ -0,0 +1,50 @@ +beConstructedWith(null); + } + + function it_is_prediction_exception() + { + $this->shouldBeAnInstanceOf('RuntimeException'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\PredictionException'); + } + + function it_can_store_objectProphecy_link(ObjectProphecy $object) + { + $this->setObjectProphecy($object); + $this->getObjectProphecy()->shouldReturn($object); + } + + function it_should_not_have_exceptions_at_the_beginning() + { + $this->getExceptions()->shouldHaveCount(0); + } + + function it_should_append_exception_through_append_method(PredictionException $exception) + { + $exception->getMessage()->willReturn('Exception #1'); + + $this->append($exception); + + $this->getExceptions()->shouldReturn(array($exception)); + } + + function it_should_update_message_during_append(PredictionException $exception) + { + $exception->getMessage()->willReturn('Exception #1'); + + $this->append($exception); + + $this->getMessage()->shouldReturn(" Exception #1"); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php new file mode 100644 index 00000000..c2aa31df --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php @@ -0,0 +1,27 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy); + } + + function it_is_PredictionException() + { + $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); + } + + function it_extends_MethodProphecyException() + { + $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php new file mode 100644 index 00000000..e18932ed --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php @@ -0,0 +1,27 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy, 5, array($call1, $call2)); + } + + function it_extends_UnexpectedCallsException() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\UnexpectedCallsException'); + } + + function it_should_expose_expectedCount_through_getter() + { + $this->getExpectedCount()->shouldReturn(5); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php new file mode 100644 index 00000000..49d12d59 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php @@ -0,0 +1,33 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy, array($call1, $call2)); + } + + function it_is_PredictionException() + { + $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); + } + + function it_extends_MethodProphecyException() + { + $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); + } + + function it_should_expose_calls_list_through_getter($call1, $call2) + { + $this->getCalls()->shouldReturn(array($call1, $call2)); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php new file mode 100644 index 00000000..d05c66a5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php @@ -0,0 +1,28 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy); + } + + function it_extends_DoubleException() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); + } + + function it_holds_a_stub_reference($methodProphecy) + { + $this->getMethodProphecy()->shouldReturn($methodProphecy); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php new file mode 100644 index 00000000..91ffd5b9 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php @@ -0,0 +1,24 @@ +beConstructedWith('message', $objectProphecy); + } + + function it_should_be_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ProphecyException'); + } + + function it_holds_double_reference($objectProphecy) + { + $this->getObjectProphecy()->shouldReturn($objectProphecy); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php new file mode 100644 index 00000000..4f03db2f --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php @@ -0,0 +1,42 @@ +shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_does_nothing_if_there_is_more_than_one_call_been_made( + ObjectProphecy $object, + MethodProphecy $method, + Call $call + ) { + $this->check(array($call), $object, $method)->shouldReturn(null); + } + + function it_throws_NoCallsException_if_no_calls_found( + ObjectProphecy $object, + MethodProphecy $method, + ArgumentsWildcard $arguments + ) { + $method->getObjectProphecy()->willReturn($object); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->__toString()->willReturn('123'); + $object->reveal()->willReturn(new \stdClass()); + $object->findProphecyMethodCalls('getName', Argument::any())->willReturn(array()); + + $this->shouldThrow('Prophecy\Exception\Prediction\NoCallsException') + ->duringCheck(array(), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php new file mode 100644 index 00000000..52ce31cf --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php @@ -0,0 +1,50 @@ +beConstructedWith(2); + } + + function it_is_prediction() + { + $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_does_nothing_if_there_were_exact_amount_of_calls_being_made( + ObjectProphecy $object, + MethodProphecy $method, + Call $call1, + Call $call2 + ) { + $this->check(array($call1, $call2), $object, $method)->shouldReturn(null); + } + + function it_throws_UnexpectedCallsCountException_if_calls_found( + ObjectProphecy $object, + MethodProphecy $method, + Call $call, + ArgumentsWildcard $arguments + ) { + $method->getObjectProphecy()->willReturn($object); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->__toString()->willReturn('123'); + + $call->getMethodName()->willReturn('getName'); + $call->getArguments()->willReturn(array(5, 4, 'three')); + $call->getCallPlace()->willReturn('unknown'); + + $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsCountException') + ->duringCheck(array($call), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php new file mode 100644 index 00000000..6da95f06 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php @@ -0,0 +1,34 @@ +beConstructedWith('get_class'); + } + + function it_is_prediction() + { + $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_proxies_call_to_callback(ObjectProphecy $object, MethodProphecy $method, Call $call) + { + $returnFirstCallCallback = function ($calls, $object, $method) { + throw new RuntimeException; + }; + + $this->beConstructedWith($returnFirstCallCallback); + + $this->shouldThrow('RuntimeException')->duringCheck(array($call), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php new file mode 100644 index 00000000..b5fa28a9 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php @@ -0,0 +1,41 @@ +shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_does_nothing_if_there_is_no_calls_made(ObjectProphecy $object, MethodProphecy $method) + { + $this->check(array(), $object, $method)->shouldReturn(null); + } + + function it_throws_UnexpectedCallsException_if_calls_found( + ObjectProphecy $object, + MethodProphecy $method, + Call $call, + ArgumentsWildcard $arguments + ) { + $method->getObjectProphecy()->willReturn($object); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->__toString()->willReturn('123'); + + $call->getMethodName()->willReturn('getName'); + $call->getArguments()->willReturn(array(5, 4, 'three')); + $call->getCallPlace()->willReturn('unknown'); + + $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsException') + ->duringCheck(array($call), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php new file mode 100644 index 00000000..fb1dc62e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php @@ -0,0 +1,96 @@ +beConstructedWith('get_class'); + } + + function it_is_promise() + { + $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_should_execute_closure_callback(ObjectProphecy $object, MethodProphecy $method) + { + $firstArgumentCallback = function ($args) { + return $args[0]; + }; + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_execute_static_array_callback(ObjectProphecy $object, MethodProphecy $method) + { + $firstArgumentCallback = array('spec\Prophecy\Promise\ClassCallback', 'staticCallbackMethod'); + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_execute_instance_array_callback(ObjectProphecy $object, MethodProphecy $method) + { + $class = new ClassCallback(); + $firstArgumentCallback = array($class, 'callbackMethod'); + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_execute_string_function_callback(ObjectProphecy $object, MethodProphecy $method) + { + $firstArgumentCallback = 'spec\Prophecy\Promise\functionCallbackFirstArgument'; + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + +} + +/** + * Class used to test callbackpromise + * + * @param array + * @return string + */ +class ClassCallback +{ + /** + * @param array $args + */ + function callbackMethod($args) + { + return $args[0]; + } + + /** + * @param array $args + */ + static function staticCallbackMethod($args) + { + return $args[0]; + } +} + +/** + * Callback function used to test callbackpromise + * + * @param array + * @return string + */ +function functionCallbackFirstArgument($args) +{ + return $args[0]; +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php new file mode 100644 index 00000000..1cef3aa6 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php @@ -0,0 +1,31 @@ +shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_should_return_first_argument_if_provided(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_return_null_if_no_arguments_provided(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array(), $object, $method)->shouldReturn(null); + } + + function it_should_return_nth_argument_if_provided(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith(1); + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('two'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php new file mode 100644 index 00000000..bc6a9918 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php @@ -0,0 +1,49 @@ +beConstructedWith(array(42)); + } + + function it_is_promise() + { + $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_returns_value_it_was_constructed_with(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array(), $object, $method)->shouldReturn(42); + } + + function it_always_returns_last_value_left_in_the_return_values(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array(), $object, $method)->shouldReturn(42); + $this->execute(array(), $object, $method)->shouldReturn(42); + } + + function it_consequently_returns_multiple_values_it_was_constructed_with( + ObjectProphecy $object, + MethodProphecy $method + ) { + $this->beConstructedWith(array(42, 24, 12)); + + $this->execute(array(), $object, $method)->shouldReturn(42); + $this->execute(array(), $object, $method)->shouldReturn(24); + $this->execute(array(), $object, $method)->shouldReturn(12); + } + + function it_returns_null_if_constructed_with_empty_array(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith(array()); + + $this->execute(array(), $object, $method)->shouldReturn(null); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php new file mode 100644 index 00000000..b5a10bc1 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php @@ -0,0 +1,92 @@ +beConstructedWith('RuntimeException'); + } + + function it_is_promise() + { + $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_instantiates_and_throws_exception_from_provided_classname(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith('InvalidArgumentException'); + + $this->shouldThrow('InvalidArgumentException') + ->duringExecute(array(), $object, $method); + } + + function it_instantiates_exceptions_with_required_arguments(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith('spec\Prophecy\Promise\RequiredArgumentException'); + + $this->shouldThrow('spec\Prophecy\Promise\RequiredArgumentException') + ->duringExecute(array(), $object, $method); + } + + function it_throws_provided_exception(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith($exc = new \RuntimeException('Some exception')); + + $this->shouldThrow($exc)->duringExecute(array(), $object, $method); + } + + function it_throws_error_instances(ObjectProphecy $object, MethodProphecy $method) + { + if (!class_exists('\Error')) { + throw new SkippingException('The class Error, introduced in PHP 7, does not exist'); + } + + $this->beConstructedWith($exc = new \Error('Error exception')); + + $this->shouldThrow($exc)->duringExecute(array(), $object, $method); + } + + function it_throws_errors_by_class_name() + { + if (!class_exists('\Error')) { + throw new SkippingException('The class Error, introduced in PHP 7, does not exist'); + } + + $this->beConstructedWith('\Error'); + + $this->shouldNotThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } + + function it_does_not_throw_something_that_is_not_throwable_by_class_name() + { + $this->beConstructedWith('\stdClass'); + + $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } + + function it_does_not_throw_something_that_is_not_throwable_by_instance() + { + $this->beConstructedWith(new \stdClass()); + + $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } + + function it_throws_an_exception_by_class_name() + { + $this->beConstructedWith('\Exception'); + + $this->shouldNotThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } +} + +class RequiredArgumentException extends \Exception +{ + final public function __construct($message, $code) {} +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php new file mode 100644 index 00000000..969e644a --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php @@ -0,0 +1,342 @@ +reveal()->willReturn($reflection); + + $this->beConstructedWith($objectProphecy, 'getName', null); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Prophecy\MethodProphecy'); + } + + function its_constructor_throws_MethodNotFoundException_for_unexisting_method($objectProphecy) + { + $this->shouldThrow('Prophecy\Exception\Doubler\MethodNotFoundException')->during( + '__construct', array($objectProphecy, 'getUnexisting', null) + ); + } + + function its_constructor_throws_MethodProphecyException_for_final_methods($objectProphecy, ClassWithFinalMethod $subject) + { + $objectProphecy->reveal()->willReturn($subject); + + $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->during( + '__construct', array($objectProphecy, 'finalMethod', null) + ); + } + + function its_constructor_transforms_array_passed_as_3rd_argument_to_ArgumentsWildcard( + $objectProphecy + ) + { + $this->beConstructedWith($objectProphecy, 'getName', array(42, 33)); + + $wildcard = $this->getArgumentsWildcard(); + $wildcard->shouldNotBe(null); + $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); + } + + function its_constructor_does_not_touch_third_argument_if_it_is_null($objectProphecy) + { + $this->beConstructedWith($objectProphecy, 'getName', null); + + $wildcard = $this->getArgumentsWildcard(); + $wildcard->shouldBe(null); + } + + function it_records_promise_through_will_method(PromiseInterface $promise, $objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->will($promise); + $this->getPromise()->shouldReturn($promise); + } + + function it_adds_itself_to_ObjectProphecy_during_call_to_will(PromiseInterface $objectProphecy, $promise) + { + $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); + + $this->will($promise); + } + + function it_adds_ReturnPromise_during_willReturn_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willReturn(42); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnPromise'); + } + + function it_adds_ThrowPromise_during_willThrow_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willThrow('RuntimeException'); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ThrowPromise'); + } + + function it_adds_ReturnArgumentPromise_during_willReturnArgument_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willReturnArgument(); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); + } + + function it_adds_ReturnArgumentPromise_during_willReturnArgument_call_with_index_argument($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willReturnArgument(1); + $promise = $this->getPromise(); + $promise->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); + $promise->execute(array('one', 'two'), $objectProphecy, $this)->shouldReturn('two'); + } + + function it_adds_CallbackPromise_during_will_call_with_callback_argument($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $callback = function () {}; + + $this->will($callback); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\CallbackPromise'); + } + + function it_records_prediction_through_should_method(PredictionInterface $prediction, $objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('should', array($prediction)); + $this->getPrediction()->shouldReturn($prediction); + } + + function it_adds_CallbackPrediction_during_should_call_with_callback_argument($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $callback = function () {}; + + $this->callOnWrappedObject('should', array($callback)); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallbackPrediction'); + } + + function it_adds_itself_to_ObjectProphecy_during_call_to_should($objectProphecy, PredictionInterface $prediction) + { + $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); + + $this->callOnWrappedObject('should', array($prediction)); + } + + function it_adds_CallPrediction_during_shouldBeCalled_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('shouldBeCalled', array()); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallPrediction'); + } + + function it_adds_NoCallsPrediction_during_shouldNotBeCalled_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('shouldNotBeCalled', array()); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\NoCallsPrediction'); + } + + function it_adds_CallTimesPrediction_during_shouldBeCalledTimes_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('shouldBeCalledTimes', array(5)); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallTimesPrediction'); + } + + function it_checks_prediction_via_shouldHave_method_call( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2 + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction)); + } + + function it_sets_return_promise_during_shouldHave_call_if_none_was_set_before( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2 + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction)); + + $this->getPromise()->shouldReturnAnInstanceOf('Prophecy\Promise\ReturnPromise'); + } + + function it_does_not_set_return_promise_during_shouldHave_call_if_it_was_set_before( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2, + PromiseInterface $promise + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->will($promise); + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction)); + + $this->getPromise()->shouldReturn($promise); + } + + function it_records_checked_predictions( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction1, + PredictionInterface $prediction2, + Call $call1, + Call $call2, + PromiseInterface $promise + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction1->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); + $prediction2->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->will($promise); + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction1)); + $this->callOnWrappedObject('shouldHave', array($prediction2)); + + $this->getCheckedPredictions()->shouldReturn(array($prediction1, $prediction2)); + } + + function it_records_even_failed_checked_predictions( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2, + PromiseInterface $promise + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willThrow(new \RuntimeException()); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->will($promise); + $this->withArguments($arguments); + + try { + $this->callOnWrappedObject('shouldHave', array($prediction)); + } catch (\Exception $e) {} + + $this->getCheckedPredictions()->shouldReturn(array($prediction)); + } + + function it_checks_prediction_via_shouldHave_method_call_with_callback( + $objectProphecy, + ArgumentsWildcard $arguments, + Call $call1, + Call $call2 + ) { + $callback = function ($calls, $object, $method) { + throw new \RuntimeException; + }; + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->withArguments($arguments); + $this->shouldThrow('RuntimeException')->duringShouldHave($callback); + } + + function it_does_nothing_during_checkPrediction_if_no_prediction_set() + { + $this->checkPrediction()->shouldReturn(null); + } + + function it_checks_set_prediction_during_checkPrediction( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2 + ) { + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->withArguments($arguments); + $this->callOnWrappedObject('should', array($prediction)); + $this->checkPrediction(); + } + + function it_links_back_to_ObjectProphecy_through_getter($objectProphecy) + { + $this->getObjectProphecy()->shouldReturn($objectProphecy); + } + + function it_has_MethodName() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_contains_ArgumentsWildcard_it_was_constructed_with($objectProphecy, ArgumentsWildcard $wildcard) + { + $this->beConstructedWith($objectProphecy, 'getName', $wildcard); + + $this->getArgumentsWildcard()->shouldReturn($wildcard); + } + + function its_ArgumentWildcard_is_mutable_through_setter(ArgumentsWildcard $wildcard) + { + $this->withArguments($wildcard); + + $this->getArgumentsWildcard()->shouldReturn($wildcard); + } + + function its_withArguments_transforms_passed_array_into_ArgumentsWildcard() + { + $this->withArguments(array(42, 33)); + + $wildcard = $this->getArgumentsWildcard(); + $wildcard->shouldNotBe(null); + $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); + } + + function its_withArguments_throws_exception_if_wrong_arguments_provided() + { + $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringWithArguments(42); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php new file mode 100644 index 00000000..c6afb3ef --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php @@ -0,0 +1,283 @@ +beConstructedWith($lazyDouble); + + $lazyDouble->getInstance()->willReturn($double); + } + + function it_implements_ProphecyInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Prophecy\ProphecyInterface'); + } + + function it_sets_parentClass_during_willExtend_call($lazyDouble) + { + $lazyDouble->setParentClass('123')->shouldBeCalled(); + + $this->willExtend('123'); + } + + function it_adds_interface_during_willImplement_call($lazyDouble) + { + $lazyDouble->addInterface('222')->shouldBeCalled(); + + $this->willImplement('222'); + } + + function it_sets_constructor_arguments_during_willBeConstructedWith_call($lazyDouble) + { + $lazyDouble->setArguments(array(1, 2, 5))->shouldBeCalled(); + + $this->willBeConstructedWith(array(1, 2, 5)); + } + + function it_does_not_have_method_prophecies_by_default() + { + $this->getMethodProphecies()->shouldHaveCount(0); + } + + function it_should_get_method_prophecies_by_method_name( + MethodProphecy $method1, + MethodProphecy $method2, + ArgumentsWildcard $arguments + ) { + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments); + $method2->getMethodName()->willReturn('setName'); + $method2->getArgumentsWildcard()->willReturn($arguments); + + $this->addMethodProphecy($method1); + $this->addMethodProphecy($method2); + + $methods = $this->getMethodProphecies('setName'); + $methods->shouldHaveCount(1); + $methods[0]->getMethodName()->shouldReturn('setName'); + } + + function it_should_return_empty_array_if_no_method_prophecies_found() + { + $methods = $this->getMethodProphecies('setName'); + $methods->shouldHaveCount(0); + } + + function it_should_proxy_makeProphecyMethodCall_to_CallCenter($lazyDouble, CallCenter $callCenter) + { + $this->beConstructedWith($lazyDouble, $callCenter); + + $callCenter->makeCall($this->getWrappedObject(), 'setName', array('everzet'))->willReturn(42); + + $this->makeProphecyMethodCall('setName', array('everzet'))->shouldReturn(42); + } + + function it_should_reveal_arguments_and_return_values_from_callCenter( + $lazyDouble, + CallCenter $callCenter, + RevealerInterface $revealer + ) { + $this->beConstructedWith($lazyDouble, $callCenter, $revealer); + + $revealer->reveal(array('question'))->willReturn(array('life')); + $revealer->reveal('answer')->willReturn(42); + + $callCenter->makeCall($this->getWrappedObject(), 'setName', array('life'))->willReturn('answer'); + + $this->makeProphecyMethodCall('setName', array('question'))->shouldReturn(42); + } + + function it_should_proxy_getProphecyMethodCalls_to_CallCenter( + $lazyDouble, + CallCenter $callCenter, + ArgumentsWildcard $wildcard, + Call $call + ) { + $this->beConstructedWith($lazyDouble, $callCenter); + + $callCenter->findCalls('setName', $wildcard)->willReturn(array($call)); + + $this->findProphecyMethodCalls('setName', $wildcard)->shouldReturn(array($call)); + } + + function its_addMethodProphecy_adds_method_prophecy( + MethodProphecy $methodProphecy, + ArgumentsWildcard $argumentsWildcard + ) { + $methodProphecy->getArgumentsWildcard()->willReturn($argumentsWildcard); + $methodProphecy->getMethodName()->willReturn('getUsername'); + + $this->addMethodProphecy($methodProphecy); + + $this->getMethodProphecies()->shouldReturn(array( + 'getUsername' => array($methodProphecy) + )); + } + + function its_addMethodProphecy_handles_prophecies_with_different_arguments( + MethodProphecy $methodProphecy1, + MethodProphecy $methodProphecy2, + ArgumentsWildcard $argumentsWildcard1, + ArgumentsWildcard $argumentsWildcard2 + ) { + $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); + $methodProphecy1->getMethodName()->willReturn('getUsername'); + + $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); + $methodProphecy2->getMethodName()->willReturn('getUsername'); + + $this->addMethodProphecy($methodProphecy1); + $this->addMethodProphecy($methodProphecy2); + + $this->getMethodProphecies()->shouldReturn(array( + 'getUsername' => array( + $methodProphecy1, + $methodProphecy2, + ) + )); + } + + function its_addMethodProphecy_handles_prophecies_for_different_methods( + MethodProphecy $methodProphecy1, + MethodProphecy $methodProphecy2, + ArgumentsWildcard $argumentsWildcard1, + ArgumentsWildcard $argumentsWildcard2 + ) { + $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); + $methodProphecy1->getMethodName()->willReturn('getUsername'); + + $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); + $methodProphecy2->getMethodName()->willReturn('isUsername'); + + $this->addMethodProphecy($methodProphecy1); + $this->addMethodProphecy($methodProphecy2); + + $this->getMethodProphecies()->shouldReturn(array( + 'getUsername' => array( + $methodProphecy1 + ), + 'isUsername' => array( + $methodProphecy2 + ) + )); + } + + function its_addMethodProphecy_throws_exception_when_method_has_no_ArgumentsWildcard(MethodProphecy $methodProphecy) + { + $methodProphecy->getArgumentsWildcard()->willReturn(null); + $methodProphecy->getObjectProphecy()->willReturn($this); + $methodProphecy->getMethodName()->willReturn('getTitle'); + + $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->duringAddMethodProphecy( + $methodProphecy + ); + } + + function it_returns_null_after_checkPredictions_call_if_there_is_no_method_prophecies() + { + $this->checkProphecyMethodsPredictions()->shouldReturn(null); + } + + function it_throws_AggregateException_during_checkPredictions_if_predictions_fail( + MethodProphecy $methodProphecy1, MethodProphecy $methodProphecy2, + ArgumentsWildcard $argumentsWildcard1, + ArgumentsWildcard $argumentsWildcard2 + ) { + $methodProphecy1->getMethodName()->willReturn('getName'); + $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); + $methodProphecy1->checkPrediction() + ->willThrow('Prophecy\Exception\Prediction\AggregateException'); + + $methodProphecy2->getMethodName()->willReturn('setName'); + $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); + $methodProphecy2->checkPrediction() + ->willThrow('Prophecy\Exception\Prediction\AggregateException'); + + $this->addMethodProphecy($methodProphecy1); + $this->addMethodProphecy($methodProphecy2); + + $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') + ->duringCheckProphecyMethodsPredictions(); + } + + function it_returns_new_MethodProphecy_instance_for_arbitrary_call( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $return = $this->getProphecy(); + $return->shouldBeAnInstanceOf('Prophecy\Prophecy\MethodProphecy'); + $return->getMethodName()->shouldReturn('getProphecy'); + } + + function it_returns_same_MethodProphecy_for_same_registered_signature( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3)); + $methodProphecy2 = $this->getProphecy(1, 2, 3); + + $methodProphecy2->shouldBe($methodProphecy1); + } + + function it_returns_new_MethodProphecy_for_different_signatures( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $value = new ObjectProphecySpecFixtureB('ABC'); + $value2 = new ObjectProphecySpecFixtureB('CBA'); + + $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3, $value)); + $methodProphecy2 = $this->getProphecy(1, 2, 3, $value2); + + $methodProphecy2->shouldNotBe($methodProphecy1); + } + + function it_returns_new_MethodProphecy_for_all_callback_signatures( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(function(){})); + $methodProphecy2 = $this->getProphecy(function(){}); + + $methodProphecy2->shouldNotBe($methodProphecy1); + } +} + +class ObjectProphecySpecFixtureA +{ + public $errors; +} + +class ObjectProphecySpecFixtureB extends ObjectProphecySpecFixtureA +{ + public $errors; + public $value = null; + + public function __construct($value) + { + $this->value = $value; + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php new file mode 100644 index 00000000..fcaa7ca3 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php @@ -0,0 +1,44 @@ +shouldBeAnInstanceOf('Prophecy\Prophecy\RevealerInterface'); + } + + function it_reveals_single_instance_of_ProphecyInterface(ProphecyInterface $prophecy, \stdClass $object) + { + $prophecy->reveal()->willReturn($object); + + $this->reveal($prophecy)->shouldReturn($object); + } + + function it_reveals_instances_of_ProphecyInterface_inside_array( + ProphecyInterface $prophecy1, + ProphecyInterface $prophecy2, + \stdClass $object1, + \stdClass $object2 + ) { + $prophecy1->reveal()->willReturn($object1); + $prophecy2->reveal()->willReturn($object2); + + $this->reveal(array( + array('item' => $prophecy2), + $prophecy1 + ))->shouldReturn(array( + array('item' => $object2), + $object1 + )); + } + + function it_does_not_touch_non_prophecy_interface() + { + $this->reveal(42)->shouldReturn(42); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php new file mode 100644 index 00000000..67f02752 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php @@ -0,0 +1,81 @@ +double(null, array())->willReturn($double); + + $this->beConstructedWith($doubler); + } + + function it_constructs_new_prophecy_on_prophesize_call() + { + $prophecy = $this->prophesize(); + $prophecy->shouldBeAnInstanceOf('Prophecy\Prophecy\ObjectProphecy'); + } + + function it_constructs_new_prophecy_with_parent_class_if_specified($doubler, ProphecySubjectInterface $newDouble) + { + $doubler->double(Argument::any(), array())->willReturn($newDouble); + + $this->prophesize('Prophecy\Prophet')->reveal()->shouldReturn($newDouble); + } + + function it_constructs_new_prophecy_with_interface_if_specified($doubler, ProphecySubjectInterface $newDouble) + { + $doubler->double(null, Argument::any())->willReturn($newDouble); + + $this->prophesize('ArrayAccess')->reveal()->shouldReturn($newDouble); + } + + function it_exposes_all_created_prophecies_through_getter() + { + $prophecy1 = $this->prophesize(); + $prophecy2 = $this->prophesize(); + + $this->getProphecies()->shouldReturn(array($prophecy1, $prophecy2)); + } + + function it_does_nothing_during_checkPredictions_call_if_no_predictions_defined() + { + $this->checkPredictions()->shouldReturn(null); + } + + function it_throws_AggregateException_if_defined_predictions_fail( + MethodProphecy $method1, + MethodProphecy $method2, + ArgumentsWildcard $arguments1, + ArgumentsWildcard $arguments2 + ) { + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments1); + $method1->checkPrediction()->willReturn(null); + + $method2->getMethodName()->willReturn('isSet'); + $method2->getArgumentsWildcard()->willReturn($arguments2); + $method2->checkPrediction()->willThrow( + 'Prophecy\Exception\Prediction\AggregateException' + ); + + $this->prophesize()->addMethodProphecy($method1); + $this->prophesize()->addMethodProphecy($method2); + + $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') + ->duringCheckPredictions(); + } + + function it_exposes_doubler_through_getter($doubler) + { + $this->getDoubler()->shouldReturn($doubler); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php new file mode 100644 index 00000000..80573cff --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php @@ -0,0 +1,91 @@ +stringify(42)->shouldReturn('42'); + } + + function it_generates_proper_string_representation_for_string() + { + $this->stringify('some string')->shouldReturn('"some string"'); + } + + function it_generates_single_line_representation_for_multiline_string() + { + $this->stringify("some\nstring")->shouldReturn('"some\\nstring"'); + } + + function it_generates_proper_string_representation_for_double() + { + $this->stringify(42.3)->shouldReturn('42.3'); + } + + function it_generates_proper_string_representation_for_boolean_true() + { + $this->stringify(true)->shouldReturn('true'); + } + + function it_generates_proper_string_representation_for_boolean_false() + { + $this->stringify(false)->shouldReturn('false'); + } + + function it_generates_proper_string_representation_for_null() + { + $this->stringify(null)->shouldReturn('null'); + } + + function it_generates_proper_string_representation_for_empty_array() + { + $this->stringify(array())->shouldReturn('[]'); + } + + function it_generates_proper_string_representation_for_array() + { + $this->stringify(array('zet', 42))->shouldReturn('["zet", 42]'); + } + + function it_generates_proper_string_representation_for_hash_containing_one_value() + { + $this->stringify(array('ever' => 'zet'))->shouldReturn('["ever" => "zet"]'); + } + + function it_generates_proper_string_representation_for_hash() + { + $this->stringify(array('ever' => 'zet', 52 => 'hey', 'num' => 42))->shouldReturn( + '["ever" => "zet", 52 => "hey", "num" => 42]' + ); + } + + function it_generates_proper_string_representation_for_resource() + { + $resource = fopen(__FILE__, 'r'); + $this->stringify($resource)->shouldReturn('stream:'.$resource); + } + + function it_generates_proper_string_representation_for_object(\stdClass $object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ) . " Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n)"; + + $this->stringify($object)->shouldReturn("$objHash"); + } + + function it_generates_proper_string_representation_for_object_without_exporting(\stdClass $object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ); + + $this->stringify($object, false)->shouldReturn("$objHash"); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument.php b/vendor/phpspec/prophecy/src/Prophecy/Argument.php new file mode 100644 index 00000000..fde6aa90 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument.php @@ -0,0 +1,212 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy; + +use Prophecy\Argument\Token; + +/** + * Argument tokens shortcuts. + * + * @author Konstantin Kudryashov + */ +class Argument +{ + /** + * Checks that argument is exact value or object. + * + * @param mixed $value + * + * @return Token\ExactValueToken + */ + public static function exact($value) + { + return new Token\ExactValueToken($value); + } + + /** + * Checks that argument is of specific type or instance of specific class. + * + * @param string $type Type name (`integer`, `string`) or full class name + * + * @return Token\TypeToken + */ + public static function type($type) + { + return new Token\TypeToken($type); + } + + /** + * Checks that argument object has specific state. + * + * @param string $methodName + * @param mixed $value + * + * @return Token\ObjectStateToken + */ + public static function which($methodName, $value) + { + return new Token\ObjectStateToken($methodName, $value); + } + + /** + * Checks that argument matches provided callback. + * + * @param callable $callback + * + * @return Token\CallbackToken + */ + public static function that($callback) + { + return new Token\CallbackToken($callback); + } + + /** + * Matches any single value. + * + * @return Token\AnyValueToken + */ + public static function any() + { + return new Token\AnyValueToken; + } + + /** + * Matches all values to the rest of the signature. + * + * @return Token\AnyValuesToken + */ + public static function cetera() + { + return new Token\AnyValuesToken; + } + + /** + * Checks that argument matches all tokens + * + * @param mixed ... a list of tokens + * + * @return Token\LogicalAndToken + */ + public static function allOf() + { + return new Token\LogicalAndToken(func_get_args()); + } + + /** + * Checks that argument array or countable object has exact number of elements. + * + * @param integer $value array elements count + * + * @return Token\ArrayCountToken + */ + public static function size($value) + { + return new Token\ArrayCountToken($value); + } + + /** + * Checks that argument array contains (key, value) pair + * + * @param mixed $key exact value or token + * @param mixed $value exact value or token + * + * @return Token\ArrayEntryToken + */ + public static function withEntry($key, $value) + { + return new Token\ArrayEntryToken($key, $value); + } + + /** + * Checks that arguments array entries all match value + * + * @param mixed $value + * + * @return Token\ArrayEveryEntryToken + */ + public static function withEveryEntry($value) + { + return new Token\ArrayEveryEntryToken($value); + } + + /** + * Checks that argument array contains value + * + * @param mixed $value + * + * @return Token\ArrayEntryToken + */ + public static function containing($value) + { + return new Token\ArrayEntryToken(self::any(), $value); + } + + /** + * Checks that argument array has key + * + * @param mixed $key exact value or token + * + * @return Token\ArrayEntryToken + */ + public static function withKey($key) + { + return new Token\ArrayEntryToken($key, self::any()); + } + + /** + * Checks that argument does not match the value|token. + * + * @param mixed $value either exact value or argument token + * + * @return Token\LogicalNotToken + */ + public static function not($value) + { + return new Token\LogicalNotToken($value); + } + + /** + * @param string $value + * + * @return Token\StringContainsToken + */ + public static function containingString($value) + { + return new Token\StringContainsToken($value); + } + + /** + * Checks that argument is identical value. + * + * @param mixed $value + * + * @return Token\IdenticalValueToken + */ + public static function is($value) + { + return new Token\IdenticalValueToken($value); + } + + /** + * Check that argument is same value when rounding to the + * given precision. + * + * @param float $value + * @param float $precision + * + * @return Token\ApproximateValueToken + */ + public static function approximate($value, $precision = 0) + { + return new Token\ApproximateValueToken($value, $precision); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php new file mode 100644 index 00000000..a088f21d --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php @@ -0,0 +1,101 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument; + +/** + * Arguments wildcarding. + * + * @author Konstantin Kudryashov + */ +class ArgumentsWildcard +{ + /** + * @var Token\TokenInterface[] + */ + private $tokens = array(); + private $string; + + /** + * Initializes wildcard. + * + * @param array $arguments Array of argument tokens or values + */ + public function __construct(array $arguments) + { + foreach ($arguments as $argument) { + if (!$argument instanceof Token\TokenInterface) { + $argument = new Token\ExactValueToken($argument); + } + + $this->tokens[] = $argument; + } + } + + /** + * Calculates wildcard match score for provided arguments. + * + * @param array $arguments + * + * @return false|int False OR integer score (higher - better) + */ + public function scoreArguments(array $arguments) + { + if (0 == count($arguments) && 0 == count($this->tokens)) { + return 1; + } + + $arguments = array_values($arguments); + $totalScore = 0; + foreach ($this->tokens as $i => $token) { + $argument = isset($arguments[$i]) ? $arguments[$i] : null; + if (1 >= $score = $token->scoreArgument($argument)) { + return false; + } + + $totalScore += $score; + + if (true === $token->isLast()) { + return $totalScore; + } + } + + if (count($arguments) > count($this->tokens)) { + return false; + } + + return $totalScore; + } + + /** + * Returns string representation for wildcard. + * + * @return string + */ + public function __toString() + { + if (null === $this->string) { + $this->string = implode(', ', array_map(function ($token) { + return (string) $token; + }, $this->tokens)); + } + + return $this->string; + } + + /** + * @return array + */ + public function getTokens() + { + return $this->tokens; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php new file mode 100644 index 00000000..50988112 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Any single value token. + * + * @author Konstantin Kudryashov + */ +class AnyValueToken implements TokenInterface +{ + /** + * Always scores 3 for any argument. + * + * @param $argument + * + * @return int + */ + public function scoreArgument($argument) + { + return 3; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return '*'; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php new file mode 100644 index 00000000..f76b17bc --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Any values token. + * + * @author Konstantin Kudryashov + */ +class AnyValuesToken implements TokenInterface +{ + /** + * Always scores 2 for any argument. + * + * @param $argument + * + * @return int + */ + public function scoreArgument($argument) + { + return 2; + } + + /** + * Returns true to stop wildcard from processing other tokens. + * + * @return bool + */ + public function isLast() + { + return true; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return '* [, ...]'; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php new file mode 100644 index 00000000..d4918b1a --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php @@ -0,0 +1,55 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Approximate value token + * + * @author Daniel Leech + */ +class ApproximateValueToken implements TokenInterface +{ + private $value; + private $precision; + + public function __construct($value, $precision = 0) + { + $this->value = $value; + $this->precision = $precision; + } + + /** + * {@inheritdoc} + */ + public function scoreArgument($argument) + { + return round($argument, $this->precision) === round($this->value, $this->precision) ? 10 : false; + } + + /** + * {@inheritdoc} + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('≅%s', round($this->value, $this->precision)); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php new file mode 100644 index 00000000..96b4befd --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php @@ -0,0 +1,86 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Array elements count token. + * + * @author Boris Mikhaylov + */ + +class ArrayCountToken implements TokenInterface +{ + private $count; + + /** + * @param integer $value + */ + public function __construct($value) + { + $this->count = $value; + } + + /** + * Scores 6 when argument has preset number of elements. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return $this->isCountable($argument) && $this->hasProperCount($argument) ? 6 : false; + } + + /** + * Returns false. + * + * @return boolean + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('count(%s)', $this->count); + } + + /** + * Returns true if object is either array or instance of \Countable + * + * @param $argument + * @return bool + */ + private function isCountable($argument) + { + return (is_array($argument) || $argument instanceof \Countable); + } + + /** + * Returns true if $argument has expected number of elements + * + * @param array|\Countable $argument + * + * @return bool + */ + private function hasProperCount($argument) + { + return $this->count === count($argument); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php new file mode 100644 index 00000000..0305fc72 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php @@ -0,0 +1,143 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Array entry token. + * + * @author Boris Mikhaylov + */ +class ArrayEntryToken implements TokenInterface +{ + /** @var \Prophecy\Argument\Token\TokenInterface */ + private $key; + /** @var \Prophecy\Argument\Token\TokenInterface */ + private $value; + + /** + * @param mixed $key exact value or token + * @param mixed $value exact value or token + */ + public function __construct($key, $value) + { + $this->key = $this->wrapIntoExactValueToken($key); + $this->value = $this->wrapIntoExactValueToken($value); + } + + /** + * Scores half of combined scores from key and value tokens for same entry. Capped at 8. + * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken. + * + * @param array|\ArrayAccess|\Traversable $argument + * + * @throws \Prophecy\Exception\InvalidArgumentException + * @return bool|int + */ + public function scoreArgument($argument) + { + if ($argument instanceof \Traversable) { + $argument = iterator_to_array($argument); + } + + if ($argument instanceof \ArrayAccess) { + $argument = $this->convertArrayAccessToEntry($argument); + } + + if (!is_array($argument) || empty($argument)) { + return false; + } + + $keyScores = array_map(array($this->key,'scoreArgument'), array_keys($argument)); + $valueScores = array_map(array($this->value,'scoreArgument'), $argument); + $scoreEntry = function ($value, $key) { + return $value && $key ? min(8, ($key + $value) / 2) : false; + }; + + return max(array_map($scoreEntry, $valueScores, $keyScores)); + } + + /** + * Returns false. + * + * @return boolean + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('[..., %s => %s, ...]', $this->key, $this->value); + } + + /** + * Returns key + * + * @return TokenInterface + */ + public function getKey() + { + return $this->key; + } + + /** + * Returns value + * + * @return TokenInterface + */ + public function getValue() + { + return $this->value; + } + + /** + * Wraps non token $value into ExactValueToken + * + * @param $value + * @return TokenInterface + */ + private function wrapIntoExactValueToken($value) + { + return $value instanceof TokenInterface ? $value : new ExactValueToken($value); + } + + /** + * Converts instance of \ArrayAccess to key => value array entry + * + * @param \ArrayAccess $object + * + * @return array|null + * @throws \Prophecy\Exception\InvalidArgumentException + */ + private function convertArrayAccessToEntry(\ArrayAccess $object) + { + if (!$this->key instanceof ExactValueToken) { + throw new InvalidArgumentException(sprintf( + 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. + 'But you used `%s`.', + $this->key + )); + } + + $key = $this->key->getValue(); + + return $object->offsetExists($key) ? array($key => $object[$key]) : array(); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php new file mode 100644 index 00000000..5d41fa48 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php @@ -0,0 +1,82 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Array every entry token. + * + * @author Adrien Brault + */ +class ArrayEveryEntryToken implements TokenInterface +{ + /** + * @var TokenInterface + */ + private $value; + + /** + * @param mixed $value exact value or token + */ + public function __construct($value) + { + if (!$value instanceof TokenInterface) { + $value = new ExactValueToken($value); + } + + $this->value = $value; + } + + /** + * {@inheritdoc} + */ + public function scoreArgument($argument) + { + if (!$argument instanceof \Traversable && !is_array($argument)) { + return false; + } + + $scores = array(); + foreach ($argument as $key => $argumentEntry) { + $scores[] = $this->value->scoreArgument($argumentEntry); + } + + if (empty($scores) || in_array(false, $scores, true)) { + return false; + } + + return array_sum($scores) / count($scores); + } + + /** + * {@inheritdoc} + */ + public function isLast() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function __toString() + { + return sprintf('[%s, ..., %s]', $this->value, $this->value); + } + + /** + * @return TokenInterface + */ + public function getValue() + { + return $this->value; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php new file mode 100644 index 00000000..f45ba20b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php @@ -0,0 +1,75 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Callback-verified token. + * + * @author Konstantin Kudryashov + */ +class CallbackToken implements TokenInterface +{ + private $callback; + + /** + * Initializes token. + * + * @param callable $callback + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($callback) + { + if (!is_callable($callback)) { + throw new InvalidArgumentException(sprintf( + 'Callable expected as an argument to CallbackToken, but got %s.', + gettype($callback) + )); + } + + $this->callback = $callback; + } + + /** + * Scores 7 if callback returns true, false otherwise. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return call_user_func($this->callback, $argument) ? 7 : false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return 'callback()'; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php new file mode 100644 index 00000000..aa960f3f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php @@ -0,0 +1,116 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use SebastianBergmann\Comparator\ComparisonFailure; +use Prophecy\Comparator\Factory as ComparatorFactory; +use Prophecy\Util\StringUtil; + +/** + * Exact value token. + * + * @author Konstantin Kudryashov + */ +class ExactValueToken implements TokenInterface +{ + private $value; + private $string; + private $util; + private $comparatorFactory; + + /** + * Initializes token. + * + * @param mixed $value + * @param StringUtil $util + * @param ComparatorFactory $comparatorFactory + */ + public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) + { + $this->value = $value; + $this->util = $util ?: new StringUtil(); + + $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + } + + /** + * Scores 10 if argument matches preset value. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + if (is_object($argument) && is_object($this->value)) { + $comparator = $this->comparatorFactory->getComparatorFor( + $argument, $this->value + ); + + try { + $comparator->assertEquals($argument, $this->value); + return 10; + } catch (ComparisonFailure $failure) {} + } + + // If either one is an object it should be castable to a string + if (is_object($argument) xor is_object($this->value)) { + if (is_object($argument) && !method_exists($argument, '__toString')) { + return false; + } + + if (is_object($this->value) && !method_exists($this->value, '__toString')) { + return false; + } + } elseif (is_numeric($argument) && is_numeric($this->value)) { + // noop + } elseif (gettype($argument) !== gettype($this->value)) { + return false; + } + + return $argument == $this->value ? 10 : false; + } + + /** + * Returns preset value against which token checks arguments. + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + if (null === $this->string) { + $this->string = sprintf('exact(%s)', $this->util->stringify($this->value)); + } + + return $this->string; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php new file mode 100644 index 00000000..0b6d23ab --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php @@ -0,0 +1,74 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Util\StringUtil; + +/** + * Identical value token. + * + * @author Florian Voutzinos + */ +class IdenticalValueToken implements TokenInterface +{ + private $value; + private $string; + private $util; + + /** + * Initializes token. + * + * @param mixed $value + * @param StringUtil $util + */ + public function __construct($value, StringUtil $util = null) + { + $this->value = $value; + $this->util = $util ?: new StringUtil(); + } + + /** + * Scores 11 if argument matches preset value. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return $argument === $this->value ? 11 : false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + if (null === $this->string) { + $this->string = sprintf('identical(%s)', $this->util->stringify($this->value)); + } + + return $this->string; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php new file mode 100644 index 00000000..4ee1b25e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php @@ -0,0 +1,80 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Logical AND token. + * + * @author Boris Mikhaylov + */ +class LogicalAndToken implements TokenInterface +{ + private $tokens = array(); + + /** + * @param array $arguments exact values or tokens + */ + public function __construct(array $arguments) + { + foreach ($arguments as $argument) { + if (!$argument instanceof TokenInterface) { + $argument = new ExactValueToken($argument); + } + $this->tokens[] = $argument; + } + } + + /** + * Scores maximum score from scores returned by tokens for this argument if all of them score. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + if (0 === count($this->tokens)) { + return false; + } + + $maxScore = 0; + foreach ($this->tokens as $token) { + $score = $token->scoreArgument($argument); + if (false === $score) { + return false; + } + $maxScore = max($score, $maxScore); + } + + return $maxScore; + } + + /** + * Returns false. + * + * @return boolean + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('bool(%s)', implode(' AND ', $this->tokens)); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php new file mode 100644 index 00000000..623efa57 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php @@ -0,0 +1,73 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Logical NOT token. + * + * @author Boris Mikhaylov + */ +class LogicalNotToken implements TokenInterface +{ + /** @var \Prophecy\Argument\Token\TokenInterface */ + private $token; + + /** + * @param mixed $value exact value or token + */ + public function __construct($value) + { + $this->token = $value instanceof TokenInterface? $value : new ExactValueToken($value); + } + + /** + * Scores 4 when preset token does not match the argument. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return false === $this->token->scoreArgument($argument) ? 4 : false; + } + + /** + * Returns true if preset token is last. + * + * @return bool|int + */ + public function isLast() + { + return $this->token->isLast(); + } + + /** + * Returns originating token. + * + * @return TokenInterface + */ + public function getOriginatingToken() + { + return $this->token; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('not(%s)', $this->token); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php new file mode 100644 index 00000000..d7710776 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php @@ -0,0 +1,104 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use SebastianBergmann\Comparator\ComparisonFailure; +use Prophecy\Comparator\Factory as ComparatorFactory; +use Prophecy\Util\StringUtil; + +/** + * Object state-checker token. + * + * @author Konstantin Kudryashov + */ +class ObjectStateToken implements TokenInterface +{ + private $name; + private $value; + private $util; + private $comparatorFactory; + + /** + * Initializes token. + * + * @param string $methodName + * @param mixed $value Expected return value + * @param null|StringUtil $util + * @param ComparatorFactory $comparatorFactory + */ + public function __construct( + $methodName, + $value, + StringUtil $util = null, + ComparatorFactory $comparatorFactory = null + ) { + $this->name = $methodName; + $this->value = $value; + $this->util = $util ?: new StringUtil; + + $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + } + + /** + * Scores 8 if argument is an object, which method returns expected value. + * + * @param mixed $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + if (is_object($argument) && method_exists($argument, $this->name)) { + $actual = call_user_func(array($argument, $this->name)); + + $comparator = $this->comparatorFactory->getComparatorFor( + $this->value, $actual + ); + + try { + $comparator->assertEquals($this->value, $actual); + return 8; + } catch (ComparisonFailure $failure) { + return false; + } + } + + if (is_object($argument) && property_exists($argument, $this->name)) { + return $argument->{$this->name} === $this->value ? 8 : false; + } + + return false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('state(%s(), %s)', + $this->name, + $this->util->stringify($this->value) + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php new file mode 100644 index 00000000..24ff8c2e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php @@ -0,0 +1,67 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * String contains token. + * + * @author Peter Mitchell + */ +class StringContainsToken implements TokenInterface +{ + private $value; + + /** + * Initializes token. + * + * @param string $value + */ + public function __construct($value) + { + $this->value = $value; + } + + public function scoreArgument($argument) + { + return strpos($argument, $this->value) !== false ? 6 : false; + } + + /** + * Returns preset value against which token checks arguments. + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('contains("%s")', $this->value); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php new file mode 100644 index 00000000..625d3bad --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php @@ -0,0 +1,43 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Argument token interface. + * + * @author Konstantin Kudryashov + */ +interface TokenInterface +{ + /** + * Calculates token match score for provided argument. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument); + + /** + * Returns true if this token prevents check of other tokens (is last one). + * + * @return bool|int + */ + public function isLast(); + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php new file mode 100644 index 00000000..cb65132c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php @@ -0,0 +1,76 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Value type token. + * + * @author Konstantin Kudryashov + */ +class TypeToken implements TokenInterface +{ + private $type; + + /** + * @param string $type + */ + public function __construct($type) + { + $checker = "is_{$type}"; + if (!function_exists($checker) && !interface_exists($type) && !class_exists($type)) { + throw new InvalidArgumentException(sprintf( + 'Type or class name expected as an argument to TypeToken, but got %s.', $type + )); + } + + $this->type = $type; + } + + /** + * Scores 5 if argument has the same type this token was constructed with. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + $checker = "is_{$this->type}"; + if (function_exists($checker)) { + return call_user_func($checker, $argument) ? 5 : false; + } + + return $argument instanceof $this->type ? 5 : false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('type(%s)', $this->type); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php new file mode 100644 index 00000000..2f3fbadb --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php @@ -0,0 +1,127 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Call; + +use Exception; + +/** + * Call object. + * + * @author Konstantin Kudryashov + */ +class Call +{ + private $methodName; + private $arguments; + private $returnValue; + private $exception; + private $file; + private $line; + + /** + * Initializes call. + * + * @param string $methodName + * @param array $arguments + * @param mixed $returnValue + * @param Exception $exception + * @param null|string $file + * @param null|int $line + */ + public function __construct($methodName, array $arguments, $returnValue, + Exception $exception = null, $file, $line) + { + $this->methodName = $methodName; + $this->arguments = $arguments; + $this->returnValue = $returnValue; + $this->exception = $exception; + + if ($file) { + $this->file = $file; + $this->line = intval($line); + } + } + + /** + * Returns called method name. + * + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * Returns called method arguments. + * + * @return array + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Returns called method return value. + * + * @return null|mixed + */ + public function getReturnValue() + { + return $this->returnValue; + } + + /** + * Returns exception that call thrown. + * + * @return null|Exception + */ + public function getException() + { + return $this->exception; + } + + /** + * Returns callee filename. + * + * @return string + */ + public function getFile() + { + return $this->file; + } + + /** + * Returns callee line number. + * + * @return int + */ + public function getLine() + { + return $this->line; + } + + /** + * Returns short notation for callee place. + * + * @return string + */ + public function getCallPlace() + { + if (null === $this->file) { + return 'unknown'; + } + + return sprintf('%s:%d', $this->file, $this->line); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php new file mode 100644 index 00000000..53b80f05 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php @@ -0,0 +1,171 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Call; + +use Prophecy\Exception\Prophecy\MethodProphecyException; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Call\UnexpectedCallException; + +/** + * Calls receiver & manager. + * + * @author Konstantin Kudryashov + */ +class CallCenter +{ + private $util; + + /** + * @var Call[] + */ + private $recordedCalls = array(); + + /** + * Initializes call center. + * + * @param StringUtil $util + */ + public function __construct(StringUtil $util = null) + { + $this->util = $util ?: new StringUtil; + } + + /** + * Makes and records specific method call for object prophecy. + * + * @param ObjectProphecy $prophecy + * @param string $methodName + * @param array $arguments + * + * @return mixed Returns null if no promise for prophecy found or promise return value. + * + * @throws \Prophecy\Exception\Call\UnexpectedCallException If no appropriate method prophecy found + */ + public function makeCall(ObjectProphecy $prophecy, $methodName, array $arguments) + { + // For efficiency exclude 'args' from the generated backtrace + if (PHP_VERSION_ID >= 50400) { + // Limit backtrace to last 3 calls as we don't use the rest + // Limit argument was introduced in PHP 5.4.0 + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3); + } elseif (defined('DEBUG_BACKTRACE_IGNORE_ARGS')) { + // DEBUG_BACKTRACE_IGNORE_ARGS was introduced in PHP 5.3.6 + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + } else { + $backtrace = debug_backtrace(); + } + + $file = $line = null; + if (isset($backtrace[2]) && isset($backtrace[2]['file'])) { + $file = $backtrace[2]['file']; + $line = $backtrace[2]['line']; + } + + // If no method prophecies defined, then it's a dummy, so we'll just return null + if ('__destruct' === $methodName || 0 == count($prophecy->getMethodProphecies())) { + $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line); + + return null; + } + + // There are method prophecies, so it's a fake/stub. Searching prophecy for this call + $matches = array(); + foreach ($prophecy->getMethodProphecies($methodName) as $methodProphecy) { + if (0 < $score = $methodProphecy->getArgumentsWildcard()->scoreArguments($arguments)) { + $matches[] = array($score, $methodProphecy); + } + } + + // If fake/stub doesn't have method prophecy for this call - throw exception + if (!count($matches)) { + throw $this->createUnexpectedCallException($prophecy, $methodName, $arguments); + } + + // Sort matches by their score value + @usort($matches, function ($match1, $match2) { return $match2[0] - $match1[0]; }); + + // If Highest rated method prophecy has a promise - execute it or return null instead + $methodProphecy = $matches[0][1]; + $returnValue = null; + $exception = null; + if ($promise = $methodProphecy->getPromise()) { + try { + $returnValue = $promise->execute($arguments, $prophecy, $methodProphecy); + } catch (\Exception $e) { + $exception = $e; + } + } + + if ($methodProphecy->hasReturnVoid() && $returnValue !== null) { + throw new MethodProphecyException( + "The method \"$methodName\" has a void return type, but the promise returned a value", + $methodProphecy + ); + } + + $this->recordedCalls[] = new Call( + $methodName, $arguments, $returnValue, $exception, $file, $line + ); + + if (null !== $exception) { + throw $exception; + } + + return $returnValue; + } + + /** + * Searches for calls by method name & arguments wildcard. + * + * @param string $methodName + * @param ArgumentsWildcard $wildcard + * + * @return Call[] + */ + public function findCalls($methodName, ArgumentsWildcard $wildcard) + { + return array_values( + array_filter($this->recordedCalls, function (Call $call) use ($methodName, $wildcard) { + return $methodName === $call->getMethodName() + && 0 < $wildcard->scoreArguments($call->getArguments()) + ; + }) + ); + } + + private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName, + array $arguments) + { + $classname = get_class($prophecy->reveal()); + $argstring = implode(', ', array_map(array($this->util, 'stringify'), $arguments)); + $expected = implode("\n", array_map(function (MethodProphecy $methodProphecy) { + return sprintf(' - %s(%s)', + $methodProphecy->getMethodName(), + $methodProphecy->getArgumentsWildcard() + ); + }, call_user_func_array('array_merge', $prophecy->getMethodProphecies()))); + + return new UnexpectedCallException( + sprintf( + "Method call:\n". + " - %s(%s)\n". + "on %s was not expected, expected calls were:\n%s", + + $methodName, $argstring, $classname, $expected + ), + $prophecy, $methodName, $arguments + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php new file mode 100644 index 00000000..874e474c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php @@ -0,0 +1,42 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Comparator; + +use SebastianBergmann\Comparator\Comparator; +use SebastianBergmann\Comparator\ComparisonFailure; + +/** + * Closure comparator. + * + * @author Konstantin Kudryashov + */ +final class ClosureComparator extends Comparator +{ + public function accepts($expected, $actual) + { + return is_object($expected) && $expected instanceof \Closure + && is_object($actual) && $actual instanceof \Closure; + } + + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + { + throw new ComparisonFailure( + $expected, + $actual, + // we don't need a diff + '', + '', + false, + 'all closures are born different' + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php new file mode 100644 index 00000000..2070db14 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php @@ -0,0 +1,47 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Comparator; + +use SebastianBergmann\Comparator\Factory as BaseFactory; + +/** + * Prophecy comparator factory. + * + * @author Konstantin Kudryashov + */ +final class Factory extends BaseFactory +{ + /** + * @var Factory + */ + private static $instance; + + public function __construct() + { + parent::__construct(); + + $this->register(new ClosureComparator()); + $this->register(new ProphecyComparator()); + } + + /** + * @return Factory + */ + public static function getInstance() + { + if (self::$instance === null) { + self::$instance = new Factory; + } + + return self::$instance; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php new file mode 100644 index 00000000..298a8e35 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php @@ -0,0 +1,28 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Comparator; + +use Prophecy\Prophecy\ProphecyInterface; +use SebastianBergmann\Comparator\ObjectComparator; + +class ProphecyComparator extends ObjectComparator +{ + public function accepts($expected, $actual) + { + return is_object($expected) && is_object($actual) && $actual instanceof ProphecyInterface; + } + + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array()) + { + parent::assertEquals($expected, $actual->reveal(), $delta, $canonicalize, $ignoreCase, $processed); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php new file mode 100644 index 00000000..d6b6b1a9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php @@ -0,0 +1,68 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use ReflectionClass; + +/** + * Cached class doubler. + * Prevents mirroring/creation of the same structure twice. + * + * @author Konstantin Kudryashov + */ +class CachedDoubler extends Doubler +{ + private $classes = array(); + + /** + * {@inheritdoc} + */ + public function registerClassPatch(ClassPatch\ClassPatchInterface $patch) + { + $this->classes[] = array(); + + parent::registerClassPatch($patch); + } + + /** + * {@inheritdoc} + */ + protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) + { + $classId = $this->generateClassId($class, $interfaces); + if (isset($this->classes[$classId])) { + return $this->classes[$classId]; + } + + return $this->classes[$classId] = parent::createDoubleClass($class, $interfaces); + } + + /** + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return string + */ + private function generateClassId(ReflectionClass $class = null, array $interfaces) + { + $parts = array(); + if (null !== $class) { + $parts[] = $class->getName(); + } + foreach ($interfaces as $interface) { + $parts[] = $interface->getName(); + } + sort($parts); + + return md5(implode('', $parts)); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php new file mode 100644 index 00000000..d6d19685 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php @@ -0,0 +1,48 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * Class patch interface. + * Class patches extend doubles functionality or help + * Prophecy to avoid some internal PHP bugs. + * + * @author Konstantin Kudryashov + */ +interface ClassPatchInterface +{ + /** + * Checks if patch supports specific class node. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node); + + /** + * Applies patch to the specific class node. + * + * @param ClassNode $node + * @return void + */ + public function apply(ClassNode $node); + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php new file mode 100644 index 00000000..61998fc4 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php @@ -0,0 +1,72 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +/** + * Disable constructor. + * Makes all constructor arguments optional. + * + * @author Konstantin Kudryashov + */ +class DisableConstructorPatch implements ClassPatchInterface +{ + /** + * Checks if class has `__construct` method. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Makes all class constructor arguments optional. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + if (!$node->hasMethod('__construct')) { + $node->addMethod(new MethodNode('__construct', '')); + + return; + } + + $constructor = $node->getMethod('__construct'); + foreach ($constructor->getArguments() as $argument) { + $argument->setDefault(null); + } + + $constructor->setCode(<< + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * Exception patch for HHVM to remove the stubs from special methods + * + * @author Christophe Coevoet + */ +class HhvmExceptionPatch implements ClassPatchInterface +{ + /** + * Supports exceptions on HHVM. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + if (!defined('HHVM_VERSION')) { + return false; + } + + return 'Exception' === $node->getParentClass() || is_subclass_of($node->getParentClass(), 'Exception'); + } + + /** + * Removes special exception static methods from the doubled methods. + * + * @param ClassNode $node + * + * @return void + */ + public function apply(ClassNode $node) + { + if ($node->hasMethod('setTraceOptions')) { + $node->getMethod('setTraceOptions')->useParentCode(); + } + if ($node->hasMethod('getTraceOptions')) { + $node->getMethod('getTraceOptions')->useParentCode(); + } + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return -50; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php new file mode 100644 index 00000000..b0d9793a --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php @@ -0,0 +1,135 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * Remove method functionality from the double which will clash with php keywords. + * + * @author Milan Magudia + */ +class KeywordPatch implements ClassPatchInterface +{ + /** + * Support any class + * + * @param ClassNode $node + * + * @return boolean + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Remove methods that clash with php keywords + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $methodNames = array_keys($node->getMethods()); + $methodsToRemove = array_intersect($methodNames, $this->getKeywords()); + foreach ($methodsToRemove as $methodName) { + $node->removeMethod($methodName); + } + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() { + return 49; + } + + /** + * Returns array of php keywords. + * + * @return array + */ + private function getKeywords() { + + return array( + '__halt_compiler', + 'abstract', + 'and', + 'array', + 'as', + 'break', + 'callable', + 'case', + 'catch', + 'class', + 'clone', + 'const', + 'continue', + 'declare', + 'default', + 'die', + 'do', + 'echo', + 'else', + 'elseif', + 'empty', + 'enddeclare', + 'endfor', + 'endforeach', + 'endif', + 'endswitch', + 'endwhile', + 'eval', + 'exit', + 'extends', + 'final', + 'finally', + 'for', + 'foreach', + 'function', + 'global', + 'goto', + 'if', + 'implements', + 'include', + 'include_once', + 'instanceof', + 'insteadof', + 'interface', + 'isset', + 'list', + 'namespace', + 'new', + 'or', + 'print', + 'private', + 'protected', + 'public', + 'require', + 'require_once', + 'return', + 'static', + 'switch', + 'throw', + 'trait', + 'try', + 'unset', + 'use', + 'var', + 'while', + 'xor', + 'yield', + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php new file mode 100644 index 00000000..5f2c6077 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php @@ -0,0 +1,89 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; +use Prophecy\PhpDocumentor\ClassAndInterfaceTagRetriever; +use Prophecy\PhpDocumentor\MethodTagRetrieverInterface; + +/** + * Discover Magical API using "@method" PHPDoc format. + * + * @author Thomas Tourlourat + * @author Kévin Dunglas + * @author Théo FIDRY + */ +class MagicCallPatch implements ClassPatchInterface +{ + private $tagRetriever; + + public function __construct(MethodTagRetrieverInterface $tagRetriever = null) + { + $this->tagRetriever = null === $tagRetriever ? new ClassAndInterfaceTagRetriever() : $tagRetriever; + } + + /** + * Support any class + * + * @param ClassNode $node + * + * @return boolean + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Discover Magical API + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $types = array_filter($node->getInterfaces(), function ($interface) { + return 0 !== strpos($interface, 'Prophecy\\'); + }); + $types[] = $node->getParentClass(); + + foreach ($types as $type) { + $reflectionClass = new \ReflectionClass($type); + $tagList = $this->tagRetriever->getTagList($reflectionClass); + + foreach($tagList as $tag) { + $methodName = $tag->getMethodName(); + + if (empty($methodName)) { + continue; + } + + if (!$reflectionClass->hasMethod($methodName)) { + $methodNode = new MethodNode($methodName); + $methodNode->setStatic($tag->isStatic()); + $node->addMethod($methodNode); + } + } + } + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return integer Priority number (higher - earlier) + */ + public function getPriority() + { + return 50; + } +} + diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php new file mode 100644 index 00000000..fc2cc4de --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php @@ -0,0 +1,104 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; +use Prophecy\Doubler\Generator\Node\ArgumentNode; + +/** + * Add Prophecy functionality to the double. + * This is a core class patch for Prophecy. + * + * @author Konstantin Kudryashov + */ +class ProphecySubjectPatch implements ClassPatchInterface +{ + /** + * Always returns true. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Apply Prophecy functionality to class node. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface'); + $node->addProperty('objectProphecy', 'private'); + + foreach ($node->getMethods() as $name => $method) { + if ('__construct' === strtolower($name)) { + continue; + } + + if ($method->getReturnType() === 'void') { + $method->setCode( + '$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' + ); + } else { + $method->setCode( + 'return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' + ); + } + } + + $prophecySetter = new MethodNode('setProphecy'); + $prophecyArgument = new ArgumentNode('prophecy'); + $prophecyArgument->setTypeHint('Prophecy\Prophecy\ProphecyInterface'); + $prophecySetter->addArgument($prophecyArgument); + $prophecySetter->setCode('$this->objectProphecy = $prophecy;'); + + $prophecyGetter = new MethodNode('getProphecy'); + $prophecyGetter->setCode('return $this->objectProphecy;'); + + if ($node->hasMethod('__call')) { + $__call = $node->getMethod('__call'); + } else { + $__call = new MethodNode('__call'); + $__call->addArgument(new ArgumentNode('name')); + $__call->addArgument(new ArgumentNode('arguments')); + + $node->addMethod($__call); + } + + $__call->setCode(<<getProphecy(), func_get_arg(0) +); +PHP + ); + + $node->addMethod($prophecySetter); + $node->addMethod($prophecyGetter); + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() + { + return 0; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php new file mode 100644 index 00000000..9166aeef --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php @@ -0,0 +1,57 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * ReflectionClass::newInstance patch. + * Makes first argument of newInstance optional, since it works but signature is misleading + * + * @author Florian Klein + */ +class ReflectionClassNewInstancePatch implements ClassPatchInterface +{ + /** + * Supports ReflectionClass + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + return 'ReflectionClass' === $node->getParentClass(); + } + + /** + * Updates newInstance's first argument to make it optional + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + foreach ($node->getMethod('newInstance')->getArguments() as $argument) { + $argument->setDefault(null); + } + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher = earlier) + */ + public function getPriority() + { + return 50; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php new file mode 100644 index 00000000..eba82980 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php @@ -0,0 +1,105 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +/** + * SplFileInfo patch. + * Makes SplFileInfo and derivative classes usable with Prophecy. + * + * @author Konstantin Kudryashov + */ +class SplFileInfoPatch implements ClassPatchInterface +{ + /** + * Supports everything that extends SplFileInfo. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + if (null === $node->getParentClass()) { + return false; + } + + return 'SplFileInfo' === $node->getParentClass() + || is_subclass_of($node->getParentClass(), 'SplFileInfo') + ; + } + + /** + * Updated constructor code to call parent one with dummy file argument. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + if ($node->hasMethod('__construct')) { + $constructor = $node->getMethod('__construct'); + } else { + $constructor = new MethodNode('__construct'); + $node->addMethod($constructor); + } + + if ($this->nodeIsDirectoryIterator($node)) { + $constructor->setCode('return parent::__construct("' . __DIR__ . '");'); + + return; + } + + if ($this->nodeIsSplFileObject($node)) { + $constructor->setCode('return parent::__construct("' . __FILE__ .'");'); + + return; + } + + $constructor->useParentCode(); + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() + { + return 50; + } + + /** + * @param ClassNode $node + * @return boolean + */ + private function nodeIsDirectoryIterator(ClassNode $node) + { + $parent = $node->getParentClass(); + + return 'DirectoryIterator' === $parent + || is_subclass_of($parent, 'DirectoryIterator'); + } + + /** + * @param ClassNode $node + * @return boolean + */ + private function nodeIsSplFileObject(ClassNode $node) + { + $parent = $node->getParentClass(); + + return 'SplFileObject' === $parent + || is_subclass_of($parent, 'SplFileObject'); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php new file mode 100644 index 00000000..eea02028 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php @@ -0,0 +1,83 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +/** + * Traversable interface patch. + * Forces classes that implement interfaces, that extend Traversable to also implement Iterator. + * + * @author Konstantin Kudryashov + */ +class TraversablePatch implements ClassPatchInterface +{ + /** + * Supports nodetree, that implement Traversable, but not Iterator or IteratorAggregate. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + if (in_array('Iterator', $node->getInterfaces())) { + return false; + } + if (in_array('IteratorAggregate', $node->getInterfaces())) { + return false; + } + + foreach ($node->getInterfaces() as $interface) { + if ('Traversable' !== $interface && !is_subclass_of($interface, 'Traversable')) { + continue; + } + if ('Iterator' === $interface || is_subclass_of($interface, 'Iterator')) { + continue; + } + if ('IteratorAggregate' === $interface || is_subclass_of($interface, 'IteratorAggregate')) { + continue; + } + + return true; + } + + return false; + } + + /** + * Forces class to implement Iterator interface. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $node->addInterface('Iterator'); + + $node->addMethod(new MethodNode('current')); + $node->addMethod(new MethodNode('key')); + $node->addMethod(new MethodNode('next')); + $node->addMethod(new MethodNode('rewind')); + $node->addMethod(new MethodNode('valid')); + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() + { + return 100; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php new file mode 100644 index 00000000..699be3a2 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php @@ -0,0 +1,22 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +/** + * Core double interface. + * All doubled classes will implement this one. + * + * @author Konstantin Kudryashov + */ +interface DoubleInterface +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php new file mode 100644 index 00000000..a378ae27 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php @@ -0,0 +1,146 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use Doctrine\Instantiator\Instantiator; +use Prophecy\Doubler\ClassPatch\ClassPatchInterface; +use Prophecy\Doubler\Generator\ClassMirror; +use Prophecy\Doubler\Generator\ClassCreator; +use Prophecy\Exception\InvalidArgumentException; +use ReflectionClass; + +/** + * Cached class doubler. + * Prevents mirroring/creation of the same structure twice. + * + * @author Konstantin Kudryashov + */ +class Doubler +{ + private $mirror; + private $creator; + private $namer; + + /** + * @var ClassPatchInterface[] + */ + private $patches = array(); + + /** + * @var \Doctrine\Instantiator\Instantiator + */ + private $instantiator; + + /** + * Initializes doubler. + * + * @param ClassMirror $mirror + * @param ClassCreator $creator + * @param NameGenerator $namer + */ + public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null, + NameGenerator $namer = null) + { + $this->mirror = $mirror ?: new ClassMirror; + $this->creator = $creator ?: new ClassCreator; + $this->namer = $namer ?: new NameGenerator; + } + + /** + * Returns list of registered class patches. + * + * @return ClassPatchInterface[] + */ + public function getClassPatches() + { + return $this->patches; + } + + /** + * Registers new class patch. + * + * @param ClassPatchInterface $patch + */ + public function registerClassPatch(ClassPatchInterface $patch) + { + $this->patches[] = $patch; + + @usort($this->patches, function (ClassPatchInterface $patch1, ClassPatchInterface $patch2) { + return $patch2->getPriority() - $patch1->getPriority(); + }); + } + + /** + * Creates double from specific class or/and list of interfaces. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces Array of ReflectionClass instances + * @param array $args Constructor arguments + * + * @return DoubleInterface + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function double(ReflectionClass $class = null, array $interfaces, array $args = null) + { + foreach ($interfaces as $interface) { + if (!$interface instanceof ReflectionClass) { + throw new InvalidArgumentException(sprintf( + "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". + "a second argument to `Doubler::double(...)`, but got %s.", + is_object($interface) ? get_class($interface).' class' : gettype($interface) + )); + } + } + + $classname = $this->createDoubleClass($class, $interfaces); + $reflection = new ReflectionClass($classname); + + if (null !== $args) { + return $reflection->newInstanceArgs($args); + } + if ((null === $constructor = $reflection->getConstructor()) + || ($constructor->isPublic() && !$constructor->isFinal())) { + return $reflection->newInstance(); + } + + if (!$this->instantiator) { + $this->instantiator = new Instantiator(); + } + + return $this->instantiator->instantiate($classname); + } + + /** + * Creates double class and returns its FQN. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return string + */ + protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) + { + $name = $this->namer->name($class, $interfaces); + $node = $this->mirror->reflect($class, $interfaces); + + foreach ($this->patches as $patch) { + if ($patch->supports($node)) { + $patch->apply($node); + } + } + + $this->creator->create($name, $node); + + return $name; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php new file mode 100644 index 00000000..fc1079c5 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php @@ -0,0 +1,145 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +/** + * Class code creator. + * Generates PHP code for specific class node tree. + * + * @author Konstantin Kudryashov + */ +class ClassCodeGenerator +{ + /** + * Generates PHP code for class node. + * + * @param string $classname + * @param Node\ClassNode $class + * + * @return string + */ + public function generate($classname, Node\ClassNode $class) + { + $parts = explode('\\', $classname); + $classname = array_pop($parts); + $namespace = implode('\\', $parts); + + $code = sprintf("class %s extends \%s implements %s {\n", + $classname, $class->getParentClass(), implode(', ', + array_map(function ($interface) {return '\\'.$interface;}, $class->getInterfaces()) + ) + ); + + foreach ($class->getProperties() as $name => $visibility) { + $code .= sprintf("%s \$%s;\n", $visibility, $name); + } + $code .= "\n"; + + foreach ($class->getMethods() as $method) { + $code .= $this->generateMethod($method)."\n"; + } + $code .= "\n}"; + + return sprintf("namespace %s {\n%s\n}", $namespace, $code); + } + + private function generateMethod(Node\MethodNode $method) + { + $php = sprintf("%s %s function %s%s(%s)%s {\n", + $method->getVisibility(), + $method->isStatic() ? 'static' : '', + $method->returnsReference() ? '&':'', + $method->getName(), + implode(', ', $this->generateArguments($method->getArguments())), + $this->getReturnType($method) + ); + $php .= $method->getCode()."\n"; + + return $php.'}'; + } + + /** + * @return string + */ + private function getReturnType(Node\MethodNode $method) + { + if (version_compare(PHP_VERSION, '7.1', '>=')) { + if ($method->hasReturnType()) { + return $method->hasNullableReturnType() + ? sprintf(': ?%s', $method->getReturnType()) + : sprintf(': %s', $method->getReturnType()); + } + } + + if (version_compare(PHP_VERSION, '7.0', '>=')) { + return $method->hasReturnType() && $method->getReturnType() !== 'void' + ? sprintf(': %s', $method->getReturnType()) + : ''; + } + + return ''; + } + + private function generateArguments(array $arguments) + { + return array_map(function (Node\ArgumentNode $argument) { + $php = ''; + + if (version_compare(PHP_VERSION, '7.1', '>=')) { + $php .= $argument->isNullable() ? '?' : ''; + } + + if ($hint = $argument->getTypeHint()) { + switch ($hint) { + case 'array': + case 'callable': + $php .= $hint; + break; + + case 'iterable': + if (version_compare(PHP_VERSION, '7.1', '>=')) { + $php .= $hint; + break; + } + + $php .= '\\'.$hint; + break; + + case 'string': + case 'int': + case 'float': + case 'bool': + if (version_compare(PHP_VERSION, '7.0', '>=')) { + $php .= $hint; + break; + } + // Fall-through to default case for PHP 5.x + + default: + $php .= '\\'.$hint; + } + } + + $php .= ' '.($argument->isPassedByReference() ? '&' : ''); + + $php .= $argument->isVariadic() ? '...' : ''; + + $php .= '$'.$argument->getName(); + + if ($argument->isOptional() && !$argument->isVariadic()) { + $php .= ' = '.var_export($argument->getDefault(), true); + } + + return $php; + }, $arguments); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php new file mode 100644 index 00000000..882a4a4b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php @@ -0,0 +1,67 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +use Prophecy\Exception\Doubler\ClassCreatorException; + +/** + * Class creator. + * Creates specific class in current environment. + * + * @author Konstantin Kudryashov + */ +class ClassCreator +{ + private $generator; + + /** + * Initializes creator. + * + * @param ClassCodeGenerator $generator + */ + public function __construct(ClassCodeGenerator $generator = null) + { + $this->generator = $generator ?: new ClassCodeGenerator; + } + + /** + * Creates class. + * + * @param string $classname + * @param Node\ClassNode $class + * + * @return mixed + * + * @throws \Prophecy\Exception\Doubler\ClassCreatorException + */ + public function create($classname, Node\ClassNode $class) + { + $code = $this->generator->generate($classname, $class); + $return = eval($code); + + if (!class_exists($classname, false)) { + if (count($class->getInterfaces())) { + throw new ClassCreatorException(sprintf( + 'Could not double `%s` and implement interfaces: [%s].', + $class->getParentClass(), implode(', ', $class->getInterfaces()) + ), $class); + } + + throw new ClassCreatorException( + sprintf('Could not double `%s`.', $class->getParentClass()), + $class + ); + } + + return $return; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php new file mode 100644 index 00000000..9f99239f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php @@ -0,0 +1,258 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +use Prophecy\Exception\InvalidArgumentException; +use Prophecy\Exception\Doubler\ClassMirrorException; +use ReflectionClass; +use ReflectionMethod; +use ReflectionParameter; + +/** + * Class mirror. + * Core doubler class. Mirrors specific class and/or interfaces into class node tree. + * + * @author Konstantin Kudryashov + */ +class ClassMirror +{ + private static $reflectableMethods = array( + '__construct', + '__destruct', + '__sleep', + '__wakeup', + '__toString', + '__call', + '__invoke' + ); + + /** + * Reflects provided arguments into class node. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return Node\ClassNode + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function reflect(ReflectionClass $class = null, array $interfaces) + { + $node = new Node\ClassNode; + + if (null !== $class) { + if (true === $class->isInterface()) { + throw new InvalidArgumentException(sprintf( + "Could not reflect %s as a class, because it\n". + "is interface - use the second argument instead.", + $class->getName() + )); + } + + $this->reflectClassToNode($class, $node); + } + + foreach ($interfaces as $interface) { + if (!$interface instanceof ReflectionClass) { + throw new InvalidArgumentException(sprintf( + "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". + "a second argument to `ClassMirror::reflect(...)`, but got %s.", + is_object($interface) ? get_class($interface).' class' : gettype($interface) + )); + } + if (false === $interface->isInterface()) { + throw new InvalidArgumentException(sprintf( + "Could not reflect %s as an interface, because it\n". + "is class - use the first argument instead.", + $interface->getName() + )); + } + + $this->reflectInterfaceToNode($interface, $node); + } + + $node->addInterface('Prophecy\Doubler\Generator\ReflectionInterface'); + + return $node; + } + + private function reflectClassToNode(ReflectionClass $class, Node\ClassNode $node) + { + if (true === $class->isFinal()) { + throw new ClassMirrorException(sprintf( + 'Could not reflect class %s as it is marked final.', $class->getName() + ), $class); + } + + $node->setParentClass($class->getName()); + + foreach ($class->getMethods(ReflectionMethod::IS_ABSTRACT) as $method) { + if (false === $method->isProtected()) { + continue; + } + + $this->reflectMethodToNode($method, $node); + } + + foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { + if (0 === strpos($method->getName(), '_') + && !in_array($method->getName(), self::$reflectableMethods)) { + continue; + } + + if (true === $method->isFinal()) { + $node->addUnextendableMethod($method->getName()); + continue; + } + + $this->reflectMethodToNode($method, $node); + } + } + + private function reflectInterfaceToNode(ReflectionClass $interface, Node\ClassNode $node) + { + $node->addInterface($interface->getName()); + + foreach ($interface->getMethods() as $method) { + $this->reflectMethodToNode($method, $node); + } + } + + private function reflectMethodToNode(ReflectionMethod $method, Node\ClassNode $classNode) + { + $node = new Node\MethodNode($method->getName()); + + if (true === $method->isProtected()) { + $node->setVisibility('protected'); + } + + if (true === $method->isStatic()) { + $node->setStatic(); + } + + if (true === $method->returnsReference()) { + $node->setReturnsReference(); + } + + if (version_compare(PHP_VERSION, '7.0', '>=') && $method->hasReturnType()) { + $returnType = (string) $method->getReturnType(); + $returnTypeLower = strtolower($returnType); + + if ('self' === $returnTypeLower) { + $returnType = $method->getDeclaringClass()->getName(); + } + if ('parent' === $returnTypeLower) { + $returnType = $method->getDeclaringClass()->getParentClass()->getName(); + } + + $node->setReturnType($returnType); + + if (version_compare(PHP_VERSION, '7.1', '>=') && $method->getReturnType()->allowsNull()) { + $node->setNullableReturnType(true); + } + } + + if (is_array($params = $method->getParameters()) && count($params)) { + foreach ($params as $param) { + $this->reflectArgumentToNode($param, $node); + } + } + + $classNode->addMethod($node); + } + + private function reflectArgumentToNode(ReflectionParameter $parameter, Node\MethodNode $methodNode) + { + $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName(); + $node = new Node\ArgumentNode($name); + + $node->setTypeHint($this->getTypeHint($parameter)); + + if ($this->isVariadic($parameter)) { + $node->setAsVariadic(); + } + + if ($this->hasDefaultValue($parameter)) { + $node->setDefault($this->getDefaultValue($parameter)); + } + + if ($parameter->isPassedByReference()) { + $node->setAsPassedByReference(); + } + + $methodNode->addArgument($node); + } + + private function hasDefaultValue(ReflectionParameter $parameter) + { + if ($this->isVariadic($parameter)) { + return false; + } + + if ($parameter->isDefaultValueAvailable()) { + return true; + } + + return $parameter->isOptional() || $this->isNullable($parameter); + } + + private function getDefaultValue(ReflectionParameter $parameter) + { + if (!$parameter->isDefaultValueAvailable()) { + return null; + } + + return $parameter->getDefaultValue(); + } + + private function getTypeHint(ReflectionParameter $parameter) + { + if (null !== $className = $this->getParameterClassName($parameter)) { + return $className; + } + + if (true === $parameter->isArray()) { + return 'array'; + } + + if (version_compare(PHP_VERSION, '5.4', '>=') && true === $parameter->isCallable()) { + return 'callable'; + } + + if (version_compare(PHP_VERSION, '7.0', '>=') && true === $parameter->hasType()) { + return (string) $parameter->getType(); + } + + return null; + } + + private function isVariadic(ReflectionParameter $parameter) + { + return PHP_VERSION_ID >= 50600 && $parameter->isVariadic(); + } + + private function isNullable(ReflectionParameter $parameter) + { + return $parameter->allowsNull() && null !== $this->getTypeHint($parameter); + } + + private function getParameterClassName(ReflectionParameter $parameter) + { + try { + return $parameter->getClass() ? $parameter->getClass()->getName() : null; + } catch (\ReflectionException $e) { + preg_match('/\[\s\<\w+?>\s([\w,\\\]+)/s', $parameter, $matches); + + return isset($matches[1]) ? $matches[1] : null; + } + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php new file mode 100644 index 00000000..dd29b68f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php @@ -0,0 +1,102 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator\Node; + +/** + * Argument node. + * + * @author Konstantin Kudryashov + */ +class ArgumentNode +{ + private $name; + private $typeHint; + private $default; + private $optional = false; + private $byReference = false; + private $isVariadic = false; + private $isNullable = false; + + /** + * @param string $name + */ + public function __construct($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function getTypeHint() + { + return $this->typeHint; + } + + public function setTypeHint($typeHint = null) + { + $this->typeHint = $typeHint; + } + + public function hasDefault() + { + return $this->isOptional() && !$this->isVariadic(); + } + + public function getDefault() + { + return $this->default; + } + + public function setDefault($default = null) + { + $this->optional = true; + $this->default = $default; + } + + public function isOptional() + { + return $this->optional; + } + + public function setAsPassedByReference($byReference = true) + { + $this->byReference = $byReference; + } + + public function isPassedByReference() + { + return $this->byReference; + } + + public function setAsVariadic($isVariadic = true) + { + $this->isVariadic = $isVariadic; + } + + public function isVariadic() + { + return $this->isVariadic; + } + + public function isNullable() + { + return $this->isNullable; + } + + public function setAsNullable($isNullable = true) + { + $this->isNullable = $isNullable; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php new file mode 100644 index 00000000..1499a1d3 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php @@ -0,0 +1,166 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator\Node; + +use Prophecy\Exception\Doubler\MethodNotExtendableException; +use Prophecy\Exception\InvalidArgumentException; + +/** + * Class node. + * + * @author Konstantin Kudryashov + */ +class ClassNode +{ + private $parentClass = 'stdClass'; + private $interfaces = array(); + private $properties = array(); + private $unextendableMethods = array(); + + /** + * @var MethodNode[] + */ + private $methods = array(); + + public function getParentClass() + { + return $this->parentClass; + } + + /** + * @param string $class + */ + public function setParentClass($class) + { + $this->parentClass = $class ?: 'stdClass'; + } + + /** + * @return string[] + */ + public function getInterfaces() + { + return $this->interfaces; + } + + /** + * @param string $interface + */ + public function addInterface($interface) + { + if ($this->hasInterface($interface)) { + return; + } + + array_unshift($this->interfaces, $interface); + } + + /** + * @param string $interface + * + * @return bool + */ + public function hasInterface($interface) + { + return in_array($interface, $this->interfaces); + } + + public function getProperties() + { + return $this->properties; + } + + public function addProperty($name, $visibility = 'public') + { + $visibility = strtolower($visibility); + + if (!in_array($visibility, array('public', 'private', 'protected'))) { + throw new InvalidArgumentException(sprintf( + '`%s` property visibility is not supported.', $visibility + )); + } + + $this->properties[$name] = $visibility; + } + + /** + * @return MethodNode[] + */ + public function getMethods() + { + return $this->methods; + } + + public function addMethod(MethodNode $method) + { + if (!$this->isExtendable($method->getName())){ + $message = sprintf( + 'Method `%s` is not extendable, so can not be added.', $method->getName() + ); + throw new MethodNotExtendableException($message, $this->getParentClass(), $method->getName()); + } + $this->methods[$method->getName()] = $method; + } + + public function removeMethod($name) + { + unset($this->methods[$name]); + } + + /** + * @param string $name + * + * @return MethodNode|null + */ + public function getMethod($name) + { + return $this->hasMethod($name) ? $this->methods[$name] : null; + } + + /** + * @param string $name + * + * @return bool + */ + public function hasMethod($name) + { + return isset($this->methods[$name]); + } + + /** + * @return string[] + */ + public function getUnextendableMethods() + { + return $this->unextendableMethods; + } + + /** + * @param string $unextendableMethod + */ + public function addUnextendableMethod($unextendableMethod) + { + if (!$this->isExtendable($unextendableMethod)){ + return; + } + $this->unextendableMethods[] = $unextendableMethod; + } + + /** + * @param string $method + * @return bool + */ + public function isExtendable($method) + { + return !in_array($method, $this->unextendableMethods); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php new file mode 100644 index 00000000..71aabfa9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php @@ -0,0 +1,207 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator\Node; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Method node. + * + * @author Konstantin Kudryashov + */ +class MethodNode +{ + private $name; + private $code; + private $visibility = 'public'; + private $static = false; + private $returnsReference = false; + private $returnType; + private $nullableReturnType = false; + + /** + * @var ArgumentNode[] + */ + private $arguments = array(); + + /** + * @param string $name + * @param string $code + */ + public function __construct($name, $code = null) + { + $this->name = $name; + $this->code = $code; + } + + public function getVisibility() + { + return $this->visibility; + } + + /** + * @param string $visibility + */ + public function setVisibility($visibility) + { + $visibility = strtolower($visibility); + + if (!in_array($visibility, array('public', 'private', 'protected'))) { + throw new InvalidArgumentException(sprintf( + '`%s` method visibility is not supported.', $visibility + )); + } + + $this->visibility = $visibility; + } + + public function isStatic() + { + return $this->static; + } + + public function setStatic($static = true) + { + $this->static = (bool) $static; + } + + public function returnsReference() + { + return $this->returnsReference; + } + + public function setReturnsReference() + { + $this->returnsReference = true; + } + + public function getName() + { + return $this->name; + } + + public function addArgument(ArgumentNode $argument) + { + $this->arguments[] = $argument; + } + + /** + * @return ArgumentNode[] + */ + public function getArguments() + { + return $this->arguments; + } + + public function hasReturnType() + { + return null !== $this->returnType; + } + + /** + * @param string $type + */ + public function setReturnType($type = null) + { + switch ($type) { + case '': + $this->returnType = null; + break; + + case 'string'; + case 'float': + case 'int': + case 'bool': + case 'array': + case 'callable': + case 'iterable': + case 'void': + $this->returnType = $type; + break; + + case 'double': + case 'real': + $this->returnType = 'float'; + break; + + case 'boolean': + $this->returnType = 'bool'; + break; + + case 'integer': + $this->returnType = 'int'; + break; + + default: + $this->returnType = '\\' . ltrim($type, '\\'); + } + } + + public function getReturnType() + { + return $this->returnType; + } + + /** + * @param bool $bool + */ + public function setNullableReturnType($bool = true) + { + $this->nullableReturnType = (bool) $bool; + } + + /** + * @return bool + */ + public function hasNullableReturnType() + { + return $this->nullableReturnType; + } + + /** + * @param string $code + */ + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + if ($this->returnsReference) + { + return "throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), '{$this->name}');"; + } + + return (string) $this->code; + } + + public function useParentCode() + { + $this->code = sprintf( + 'return parent::%s(%s);', $this->getName(), implode(', ', + array_map(array($this, 'generateArgument'), $this->arguments) + ) + ); + } + + private function generateArgument(ArgumentNode $arg) + { + $argument = '$'.$arg->getName(); + + if ($arg->isVariadic()) { + $argument = '...'.$argument; + } + + return $argument; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php new file mode 100644 index 00000000..d720b151 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php @@ -0,0 +1,22 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +/** + * Reflection interface. + * All reflected classes implement this interface. + * + * @author Konstantin Kudryashov + */ +interface ReflectionInterface +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php new file mode 100644 index 00000000..8a99c4ce --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php @@ -0,0 +1,127 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use Prophecy\Exception\Doubler\DoubleException; +use Prophecy\Exception\Doubler\ClassNotFoundException; +use Prophecy\Exception\Doubler\InterfaceNotFoundException; +use ReflectionClass; + +/** + * Lazy double. + * Gives simple interface to describe double before creating it. + * + * @author Konstantin Kudryashov + */ +class LazyDouble +{ + private $doubler; + private $class; + private $interfaces = array(); + private $arguments = null; + private $double; + + /** + * Initializes lazy double. + * + * @param Doubler $doubler + */ + public function __construct(Doubler $doubler) + { + $this->doubler = $doubler; + } + + /** + * Tells doubler to use specific class as parent one for double. + * + * @param string|ReflectionClass $class + * + * @throws \Prophecy\Exception\Doubler\ClassNotFoundException + * @throws \Prophecy\Exception\Doubler\DoubleException + */ + public function setParentClass($class) + { + if (null !== $this->double) { + throw new DoubleException('Can not extend class with already instantiated double.'); + } + + if (!$class instanceof ReflectionClass) { + if (!class_exists($class)) { + throw new ClassNotFoundException(sprintf('Class %s not found.', $class), $class); + } + + $class = new ReflectionClass($class); + } + + $this->class = $class; + } + + /** + * Tells doubler to implement specific interface with double. + * + * @param string|ReflectionClass $interface + * + * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException + * @throws \Prophecy\Exception\Doubler\DoubleException + */ + public function addInterface($interface) + { + if (null !== $this->double) { + throw new DoubleException( + 'Can not implement interface with already instantiated double.' + ); + } + + if (!$interface instanceof ReflectionClass) { + if (!interface_exists($interface)) { + throw new InterfaceNotFoundException( + sprintf('Interface %s not found.', $interface), + $interface + ); + } + + $interface = new ReflectionClass($interface); + } + + $this->interfaces[] = $interface; + } + + /** + * Sets constructor arguments. + * + * @param array $arguments + */ + public function setArguments(array $arguments = null) + { + $this->arguments = $arguments; + } + + /** + * Creates double instance or returns already created one. + * + * @return DoubleInterface + */ + public function getInstance() + { + if (null === $this->double) { + if (null !== $this->arguments) { + return $this->double = $this->doubler->double( + $this->class, $this->interfaces, $this->arguments + ); + } + + $this->double = $this->doubler->double($this->class, $this->interfaces); + } + + return $this->double; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php new file mode 100644 index 00000000..d67ec6a4 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use ReflectionClass; + +/** + * Name generator. + * Generates classname for double. + * + * @author Konstantin Kudryashov + */ +class NameGenerator +{ + private static $counter = 1; + + /** + * Generates name. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return string + */ + public function name(ReflectionClass $class = null, array $interfaces) + { + $parts = array(); + + if (null !== $class) { + $parts[] = $class->getName(); + } else { + foreach ($interfaces as $interface) { + $parts[] = $interface->getShortName(); + } + } + + if (!count($parts)) { + $parts[] = 'stdClass'; + } + + return sprintf('Double\%s\P%d', implode('\\', $parts), self::$counter++); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php new file mode 100644 index 00000000..48ed2254 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php @@ -0,0 +1,40 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Call; + +use Prophecy\Exception\Prophecy\ObjectProphecyException; +use Prophecy\Prophecy\ObjectProphecy; + +class UnexpectedCallException extends ObjectProphecyException +{ + private $methodName; + private $arguments; + + public function __construct($message, ObjectProphecy $objectProphecy, + $methodName, array $arguments) + { + parent::__construct($message, $objectProphecy); + + $this->methodName = $methodName; + $this->arguments = $arguments; + } + + public function getMethodName() + { + return $this->methodName; + } + + public function getArguments() + { + return $this->arguments; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php new file mode 100644 index 00000000..822918a2 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php @@ -0,0 +1,31 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +class ClassCreatorException extends \RuntimeException implements DoublerException +{ + private $node; + + public function __construct($message, ClassNode $node) + { + parent::__construct($message); + + $this->node = $node; + } + + public function getClassNode() + { + return $this->node; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php new file mode 100644 index 00000000..8fc53b8b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php @@ -0,0 +1,31 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use ReflectionClass; + +class ClassMirrorException extends \RuntimeException implements DoublerException +{ + private $class; + + public function __construct($message, ReflectionClass $class) + { + parent::__construct($message); + + $this->class = $class; + } + + public function getReflectedClass() + { + return $this->class; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php new file mode 100644 index 00000000..5bc826d7 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php @@ -0,0 +1,33 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class ClassNotFoundException extends DoubleException +{ + private $classname; + + /** + * @param string $message + * @param string $classname + */ + public function __construct($message, $classname) + { + parent::__construct($message); + + $this->classname = $classname; + } + + public function getClassname() + { + return $this->classname; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php new file mode 100644 index 00000000..6642a58f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use RuntimeException; + +class DoubleException extends RuntimeException implements DoublerException +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php new file mode 100644 index 00000000..9d6be179 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use Prophecy\Exception\Exception; + +interface DoublerException extends Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php new file mode 100644 index 00000000..e344dead --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php @@ -0,0 +1,20 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class InterfaceNotFoundException extends ClassNotFoundException +{ + public function getInterfaceName() + { + return $this->getClassname(); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php new file mode 100644 index 00000000..56f47b11 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php @@ -0,0 +1,41 @@ +methodName = $methodName; + $this->className = $className; + } + + + /** + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * @return string + */ + public function getClassName() + { + return $this->className; + } + + } diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php new file mode 100644 index 00000000..b113941f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php @@ -0,0 +1,60 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class MethodNotFoundException extends DoubleException +{ + /** + * @var string + */ + private $classname; + + /** + * @var string + */ + private $methodName; + + /** + * @var array + */ + private $arguments; + + /** + * @param string $message + * @param string $classname + * @param string $methodName + * @param null|Argument\ArgumentsWildcard|array $arguments + */ + public function __construct($message, $classname, $methodName, $arguments = null) + { + parent::__construct($message); + + $this->classname = $classname; + $this->methodName = $methodName; + $this->arguments = $arguments; + } + + public function getClassname() + { + return $this->classname; + } + + public function getMethodName() + { + return $this->methodName; + } + + public function getArguments() + { + return $this->arguments; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php new file mode 100644 index 00000000..63030497 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php @@ -0,0 +1,41 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class ReturnByReferenceException extends DoubleException +{ + private $classname; + private $methodName; + + /** + * @param string $message + * @param string $classname + * @param string $methodName + */ + public function __construct($message, $classname, $methodName) + { + parent::__construct($message); + + $this->classname = $classname; + $this->methodName = $methodName; + } + + public function getClassname() + { + return $this->classname; + } + + public function getMethodName() + { + return $this->methodName; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php new file mode 100644 index 00000000..ac9fe4dd --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php @@ -0,0 +1,26 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception; + +/** + * Core Prophecy exception interface. + * All Prophecy exceptions implement it. + * + * @author Konstantin Kudryashov + */ +interface Exception +{ + /** + * @return string + */ + public function getMessage(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php new file mode 100644 index 00000000..bc91c690 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php @@ -0,0 +1,16 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception; + +class InvalidArgumentException extends \InvalidArgumentException implements Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php new file mode 100644 index 00000000..44b598a4 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php @@ -0,0 +1,50 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Prophecy\ObjectProphecy; + +class AggregateException extends \RuntimeException implements PredictionException +{ + private $exceptions = array(); + private $objectProphecy; + + public function append(PredictionException $exception) + { + $message = $exception->getMessage(); + $message = ' '.strtr($message, array("\n" => "\n "))."\n"; + + $this->message = rtrim($this->message.$message); + $this->exceptions[] = $exception; + } + + /** + * @return PredictionException[] + */ + public function getExceptions() + { + return $this->exceptions; + } + + public function setObjectProphecy(ObjectProphecy $objectProphecy) + { + $this->objectProphecy = $objectProphecy; + } + + /** + * @return ObjectProphecy + */ + public function getObjectProphecy() + { + return $this->objectProphecy; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php new file mode 100644 index 00000000..bbbbc3d9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php @@ -0,0 +1,24 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use RuntimeException; + +/** + * Basic failed prediction exception. + * Use it for custom prediction failures. + * + * @author Konstantin Kudryashov + */ +class FailedPredictionException extends RuntimeException implements PredictionException +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php new file mode 100644 index 00000000..05ea4aad --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Exception\Prophecy\MethodProphecyException; + +class NoCallsException extends MethodProphecyException implements PredictionException +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php new file mode 100644 index 00000000..2596b1ef --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Exception\Exception; + +interface PredictionException extends Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php new file mode 100644 index 00000000..9d905431 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php @@ -0,0 +1,31 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Prophecy\MethodProphecy; + +class UnexpectedCallsCountException extends UnexpectedCallsException +{ + private $expectedCount; + + public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls) + { + parent::__construct($message, $methodProphecy, $calls); + + $this->expectedCount = intval($count); + } + + public function getExpectedCount() + { + return $this->expectedCount; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php new file mode 100644 index 00000000..7a99c2d7 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php @@ -0,0 +1,32 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\Prophecy\MethodProphecyException; + +class UnexpectedCallsException extends MethodProphecyException implements PredictionException +{ + private $calls = array(); + + public function __construct($message, MethodProphecy $methodProphecy, array $calls) + { + parent::__construct($message, $methodProphecy); + + $this->calls = $calls; + } + + public function getCalls() + { + return $this->calls; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php new file mode 100644 index 00000000..1b03eaf4 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php @@ -0,0 +1,34 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prophecy; + +use Prophecy\Prophecy\MethodProphecy; + +class MethodProphecyException extends ObjectProphecyException +{ + private $methodProphecy; + + public function __construct($message, MethodProphecy $methodProphecy) + { + parent::__construct($message, $methodProphecy->getObjectProphecy()); + + $this->methodProphecy = $methodProphecy; + } + + /** + * @return MethodProphecy + */ + public function getMethodProphecy() + { + return $this->methodProphecy; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php new file mode 100644 index 00000000..e345402e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php @@ -0,0 +1,34 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prophecy; + +use Prophecy\Prophecy\ObjectProphecy; + +class ObjectProphecyException extends \RuntimeException implements ProphecyException +{ + private $objectProphecy; + + public function __construct($message, ObjectProphecy $objectProphecy) + { + parent::__construct($message); + + $this->objectProphecy = $objectProphecy; + } + + /** + * @return ObjectProphecy + */ + public function getObjectProphecy() + { + return $this->objectProphecy; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php new file mode 100644 index 00000000..91573328 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prophecy; + +use Prophecy\Exception\Exception; + +interface ProphecyException extends Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php new file mode 100644 index 00000000..209821ce --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php @@ -0,0 +1,69 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; +use phpDocumentor\Reflection\DocBlock\Tags\Method; + +/** + * @author Théo FIDRY + * + * @internal + */ +final class ClassAndInterfaceTagRetriever implements MethodTagRetrieverInterface +{ + private $classRetriever; + + public function __construct(MethodTagRetrieverInterface $classRetriever = null) + { + if (null !== $classRetriever) { + $this->classRetriever = $classRetriever; + + return; + } + + $this->classRetriever = class_exists('phpDocumentor\Reflection\DocBlockFactory') && class_exists('phpDocumentor\Reflection\Types\ContextFactory') + ? new ClassTagRetriever() + : new LegacyClassTagRetriever() + ; + } + + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[]|Method[] + */ + public function getTagList(\ReflectionClass $reflectionClass) + { + return array_merge( + $this->classRetriever->getTagList($reflectionClass), + $this->getInterfacesTagList($reflectionClass) + ); + } + + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[]|Method[] + */ + private function getInterfacesTagList(\ReflectionClass $reflectionClass) + { + $interfaces = $reflectionClass->getInterfaces(); + $tagList = array(); + + foreach($interfaces as $interface) { + $tagList = array_merge($tagList, $this->classRetriever->getTagList($interface)); + } + + return $tagList; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php new file mode 100644 index 00000000..1d2da8f0 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock\Tags\Method; +use phpDocumentor\Reflection\DocBlockFactory; +use phpDocumentor\Reflection\Types\ContextFactory; + +/** + * @author Théo FIDRY + * + * @internal + */ +final class ClassTagRetriever implements MethodTagRetrieverInterface +{ + private $docBlockFactory; + private $contextFactory; + + public function __construct() + { + $this->docBlockFactory = DocBlockFactory::createInstance(); + $this->contextFactory = new ContextFactory(); + } + + /** + * @param \ReflectionClass $reflectionClass + * + * @return Method[] + */ + public function getTagList(\ReflectionClass $reflectionClass) + { + try { + $phpdoc = $this->docBlockFactory->create( + $reflectionClass, + $this->contextFactory->createFromReflector($reflectionClass) + ); + + return $phpdoc->getTagsByName('method'); + } catch (\InvalidArgumentException $e) { + return array(); + } + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php new file mode 100644 index 00000000..c0dec3de --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php @@ -0,0 +1,35 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock; +use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; + +/** + * @author Théo FIDRY + * + * @internal + */ +final class LegacyClassTagRetriever implements MethodTagRetrieverInterface +{ + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[] + */ + public function getTagList(\ReflectionClass $reflectionClass) + { + $phpdoc = new DocBlock($reflectionClass->getDocComment()); + + return $phpdoc->getTagsByName('method'); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php new file mode 100644 index 00000000..d3989dad --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php @@ -0,0 +1,30 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; +use phpDocumentor\Reflection\DocBlock\Tags\Method; + +/** + * @author Théo FIDRY + * + * @internal + */ +interface MethodTagRetrieverInterface +{ + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[]|Method[] + */ + public function getTagList(\ReflectionClass $reflectionClass); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php new file mode 100644 index 00000000..b4787366 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php @@ -0,0 +1,86 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Argument\Token\AnyValuesToken; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\NoCallsException; + +/** + * Call prediction. + * + * @author Konstantin Kudryashov + */ +class CallPrediction implements PredictionInterface +{ + private $util; + + /** + * Initializes prediction. + * + * @param StringUtil $util + */ + public function __construct(StringUtil $util = null) + { + $this->util = $util ?: new StringUtil; + } + + /** + * Tests that there was at least one call. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws \Prophecy\Exception\Prediction\NoCallsException + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + if (count($calls)) { + return; + } + + $methodCalls = $object->findProphecyMethodCalls( + $method->getMethodName(), + new ArgumentsWildcard(array(new AnyValuesToken)) + ); + + if (count($methodCalls)) { + throw new NoCallsException(sprintf( + "No calls have been made that match:\n". + " %s->%s(%s)\n". + "but expected at least one.\n". + "Recorded `%s(...)` calls:\n%s", + + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + $method->getMethodName(), + $this->util->stringifyCalls($methodCalls) + ), $method); + } + + throw new NoCallsException(sprintf( + "No calls have been made that match:\n". + " %s->%s(%s)\n". + "but expected at least one.", + + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard() + ), $method); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php new file mode 100644 index 00000000..31c6c575 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php @@ -0,0 +1,107 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Argument\Token\AnyValuesToken; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\UnexpectedCallsCountException; + +/** + * Prediction interface. + * Predictions are logical test blocks, tied to `should...` keyword. + * + * @author Konstantin Kudryashov + */ +class CallTimesPrediction implements PredictionInterface +{ + private $times; + private $util; + + /** + * Initializes prediction. + * + * @param int $times + * @param StringUtil $util + */ + public function __construct($times, StringUtil $util = null) + { + $this->times = intval($times); + $this->util = $util ?: new StringUtil; + } + + /** + * Tests that there was exact amount of calls made. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + if ($this->times == count($calls)) { + return; + } + + $methodCalls = $object->findProphecyMethodCalls( + $method->getMethodName(), + new ArgumentsWildcard(array(new AnyValuesToken)) + ); + + if (count($calls)) { + $message = sprintf( + "Expected exactly %d calls that match:\n". + " %s->%s(%s)\n". + "but %d were made:\n%s", + + $this->times, + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + count($calls), + $this->util->stringifyCalls($calls) + ); + } elseif (count($methodCalls)) { + $message = sprintf( + "Expected exactly %d calls that match:\n". + " %s->%s(%s)\n". + "but none were made.\n". + "Recorded `%s(...)` calls:\n%s", + + $this->times, + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + $method->getMethodName(), + $this->util->stringifyCalls($methodCalls) + ); + } else { + $message = sprintf( + "Expected exactly %d calls that match:\n". + " %s->%s(%s)\n". + "but none were made.", + + $this->times, + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard() + ); + } + + throw new UnexpectedCallsCountException($message, $method, $this->times, $calls); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php new file mode 100644 index 00000000..44bc782c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php @@ -0,0 +1,65 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\InvalidArgumentException; +use Closure; + +/** + * Callback prediction. + * + * @author Konstantin Kudryashov + */ +class CallbackPrediction implements PredictionInterface +{ + private $callback; + + /** + * Initializes callback prediction. + * + * @param callable $callback Custom callback + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($callback) + { + if (!is_callable($callback)) { + throw new InvalidArgumentException(sprintf( + 'Callable expected as an argument to CallbackPrediction, but got %s.', + gettype($callback) + )); + } + + $this->callback = $callback; + } + + /** + * Executes preset callback. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + $callback = $this->callback; + + if ($callback instanceof Closure && method_exists('Closure', 'bind')) { + $callback = Closure::bind($callback, $object); + } + + call_user_func($callback, $calls, $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php new file mode 100644 index 00000000..46ac5bfc --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php @@ -0,0 +1,68 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\UnexpectedCallsException; + +/** + * No calls prediction. + * + * @author Konstantin Kudryashov + */ +class NoCallsPrediction implements PredictionInterface +{ + private $util; + + /** + * Initializes prediction. + * + * @param null|StringUtil $util + */ + public function __construct(StringUtil $util = null) + { + $this->util = $util ?: new StringUtil; + } + + /** + * Tests that there were no calls made. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + if (!count($calls)) { + return; + } + + $verb = count($calls) === 1 ? 'was' : 'were'; + + throw new UnexpectedCallsException(sprintf( + "No calls expected that match:\n". + " %s->%s(%s)\n". + "but %d %s made:\n%s", + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + count($calls), + $verb, + $this->util->stringifyCalls($calls) + ), $method, $calls); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php new file mode 100644 index 00000000..f7fb06a9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php @@ -0,0 +1,37 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Prediction interface. + * Predictions are logical test blocks, tied to `should...` keyword. + * + * @author Konstantin Kudryashov + */ +interface PredictionInterface +{ + /** + * Tests that double fulfilled prediction. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws object + * @return void + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php new file mode 100644 index 00000000..5f406bf7 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php @@ -0,0 +1,66 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\InvalidArgumentException; +use Closure; + +/** + * Callback promise. + * + * @author Konstantin Kudryashov + */ +class CallbackPromise implements PromiseInterface +{ + private $callback; + + /** + * Initializes callback promise. + * + * @param callable $callback Custom callback + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($callback) + { + if (!is_callable($callback)) { + throw new InvalidArgumentException(sprintf( + 'Callable expected as an argument to CallbackPromise, but got %s.', + gettype($callback) + )); + } + + $this->callback = $callback; + } + + /** + * Evaluates promise callback. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + $callback = $this->callback; + + if ($callback instanceof Closure && method_exists('Closure', 'bind')) { + $callback = Closure::bind($callback, $object); + } + + return call_user_func($callback, $args, $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php new file mode 100644 index 00000000..382537b4 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php @@ -0,0 +1,35 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Promise interface. + * Promises are logical blocks, tied to `will...` keyword. + * + * @author Konstantin Kudryashov + */ +interface PromiseInterface +{ + /** + * Evaluates promise. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php new file mode 100644 index 00000000..39bfeea0 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php @@ -0,0 +1,61 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Exception\InvalidArgumentException; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Return argument promise. + * + * @author Konstantin Kudryashov + */ +class ReturnArgumentPromise implements PromiseInterface +{ + /** + * @var int + */ + private $index; + + /** + * Initializes callback promise. + * + * @param int $index The zero-indexed number of the argument to return + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($index = 0) + { + if (!is_int($index) || $index < 0) { + throw new InvalidArgumentException(sprintf( + 'Zero-based index expected as argument to ReturnArgumentPromise, but got %s.', + $index + )); + } + $this->index = $index; + } + + /** + * Returns nth argument if has one, null otherwise. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return null|mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + return count($args) > $this->index ? $args[$this->index] : null; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php new file mode 100644 index 00000000..c7d5ac59 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php @@ -0,0 +1,55 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Return promise. + * + * @author Konstantin Kudryashov + */ +class ReturnPromise implements PromiseInterface +{ + private $returnValues = array(); + + /** + * Initializes promise. + * + * @param array $returnValues Array of values + */ + public function __construct(array $returnValues) + { + $this->returnValues = $returnValues; + } + + /** + * Returns saved values one by one until last one, then continuously returns last value. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + $value = array_shift($this->returnValues); + + if (!count($this->returnValues)) { + $this->returnValues[] = $value; + } + + return $value; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php new file mode 100644 index 00000000..7250fa3c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php @@ -0,0 +1,99 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Doctrine\Instantiator\Instantiator; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\InvalidArgumentException; +use ReflectionClass; + +/** + * Throw promise. + * + * @author Konstantin Kudryashov + */ +class ThrowPromise implements PromiseInterface +{ + private $exception; + + /** + * @var \Doctrine\Instantiator\Instantiator + */ + private $instantiator; + + /** + * Initializes promise. + * + * @param string|\Exception|\Throwable $exception Exception class name or instance + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($exception) + { + if (is_string($exception)) { + if (!class_exists($exception) || !$this->isAValidThrowable($exception)) { + throw new InvalidArgumentException(sprintf( + 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.', + $exception + )); + } + } elseif (!$exception instanceof \Exception && !$exception instanceof \Throwable) { + throw new InvalidArgumentException(sprintf( + 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.', + is_object($exception) ? get_class($exception) : gettype($exception) + )); + } + + $this->exception = $exception; + } + + /** + * Throws predefined exception. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws object + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + if (is_string($this->exception)) { + $classname = $this->exception; + $reflection = new ReflectionClass($classname); + $constructor = $reflection->getConstructor(); + + if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { + throw $reflection->newInstance(); + } + + if (!$this->instantiator) { + $this->instantiator = new Instantiator(); + } + + throw $this->instantiator->instantiate($classname); + } + + throw $this->exception; + } + + /** + * @param string $exception + * + * @return bool + */ + private function isAValidThrowable($exception) + { + return is_a($exception, 'Exception', true) || is_subclass_of($exception, 'Throwable', true); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php new file mode 100644 index 00000000..5c0ede9a --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php @@ -0,0 +1,464 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +use Prophecy\Argument; +use Prophecy\Prophet; +use Prophecy\Promise; +use Prophecy\Prediction; +use Prophecy\Exception\Doubler\MethodNotFoundException; +use Prophecy\Exception\InvalidArgumentException; +use Prophecy\Exception\Prophecy\MethodProphecyException; + +/** + * Method prophecy. + * + * @author Konstantin Kudryashov + */ +class MethodProphecy +{ + private $objectProphecy; + private $methodName; + private $argumentsWildcard; + private $promise; + private $prediction; + private $checkedPredictions = array(); + private $bound = false; + private $voidReturnType = false; + + /** + * Initializes method prophecy. + * + * @param ObjectProphecy $objectProphecy + * @param string $methodName + * @param null|Argument\ArgumentsWildcard|array $arguments + * + * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found + */ + public function __construct(ObjectProphecy $objectProphecy, $methodName, $arguments = null) + { + $double = $objectProphecy->reveal(); + if (!method_exists($double, $methodName)) { + throw new MethodNotFoundException(sprintf( + 'Method `%s::%s()` is not defined.', get_class($double), $methodName + ), get_class($double), $methodName, $arguments); + } + + $this->objectProphecy = $objectProphecy; + $this->methodName = $methodName; + + $reflectedMethod = new \ReflectionMethod($double, $methodName); + if ($reflectedMethod->isFinal()) { + throw new MethodProphecyException(sprintf( + "Can not add prophecy for a method `%s::%s()`\n". + "as it is a final method.", + get_class($double), + $methodName + ), $this); + } + + if (null !== $arguments) { + $this->withArguments($arguments); + } + + if (version_compare(PHP_VERSION, '7.0', '>=') && true === $reflectedMethod->hasReturnType()) { + $type = (string) $reflectedMethod->getReturnType(); + + if ('void' === $type) { + $this->voidReturnType = true; + return; + } + + $this->will(function () use ($type) { + switch ($type) { + case 'string': return ''; + case 'float': return 0.0; + case 'int': return 0; + case 'bool': return false; + case 'array': return array(); + + case 'callable': + case 'Closure': + return function () {}; + + case 'Traversable': + case 'Generator': + // Remove eval() when minimum version >=5.5 + /** @var callable $generator */ + $generator = eval('return function () { yield; };'); + return $generator(); + + default: + $prophet = new Prophet; + return $prophet->prophesize($type)->reveal(); + } + }); + } + } + + /** + * Sets argument wildcard. + * + * @param array|Argument\ArgumentsWildcard $arguments + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function withArguments($arguments) + { + if (is_array($arguments)) { + $arguments = new Argument\ArgumentsWildcard($arguments); + } + + if (!$arguments instanceof Argument\ArgumentsWildcard) { + throw new InvalidArgumentException(sprintf( + "Either an array or an instance of ArgumentsWildcard expected as\n". + 'a `MethodProphecy::withArguments()` argument, but got %s.', + gettype($arguments) + )); + } + + $this->argumentsWildcard = $arguments; + + return $this; + } + + /** + * Sets custom promise to the prophecy. + * + * @param callable|Promise\PromiseInterface $promise + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function will($promise) + { + if (is_callable($promise)) { + $promise = new Promise\CallbackPromise($promise); + } + + if (!$promise instanceof Promise\PromiseInterface) { + throw new InvalidArgumentException(sprintf( + 'Expected callable or instance of PromiseInterface, but got %s.', + gettype($promise) + )); + } + + $this->bindToObjectProphecy(); + $this->promise = $promise; + + return $this; + } + + /** + * Sets return promise to the prophecy. + * + * @see Prophecy\Promise\ReturnPromise + * + * @return $this + */ + public function willReturn() + { + if ($this->voidReturnType) { + throw new MethodProphecyException( + "The method \"$this->methodName\" has a void return type, and so cannot return anything", + $this + ); + } + + return $this->will(new Promise\ReturnPromise(func_get_args())); + } + + /** + * Sets return argument promise to the prophecy. + * + * @param int $index The zero-indexed number of the argument to return + * + * @see Prophecy\Promise\ReturnArgumentPromise + * + * @return $this + */ + public function willReturnArgument($index = 0) + { + if ($this->voidReturnType) { + throw new MethodProphecyException("The method \"$this->methodName\" has a void return type", $this); + } + + return $this->will(new Promise\ReturnArgumentPromise($index)); + } + + /** + * Sets throw promise to the prophecy. + * + * @see Prophecy\Promise\ThrowPromise + * + * @param string|\Exception $exception Exception class or instance + * + * @return $this + */ + public function willThrow($exception) + { + return $this->will(new Promise\ThrowPromise($exception)); + } + + /** + * Sets custom prediction to the prophecy. + * + * @param callable|Prediction\PredictionInterface $prediction + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function should($prediction) + { + if (is_callable($prediction)) { + $prediction = new Prediction\CallbackPrediction($prediction); + } + + if (!$prediction instanceof Prediction\PredictionInterface) { + throw new InvalidArgumentException(sprintf( + 'Expected callable or instance of PredictionInterface, but got %s.', + gettype($prediction) + )); + } + + $this->bindToObjectProphecy(); + $this->prediction = $prediction; + + return $this; + } + + /** + * Sets call prediction to the prophecy. + * + * @see Prophecy\Prediction\CallPrediction + * + * @return $this + */ + public function shouldBeCalled() + { + return $this->should(new Prediction\CallPrediction); + } + + /** + * Sets no calls prediction to the prophecy. + * + * @see Prophecy\Prediction\NoCallsPrediction + * + * @return $this + */ + public function shouldNotBeCalled() + { + return $this->should(new Prediction\NoCallsPrediction); + } + + /** + * Sets call times prediction to the prophecy. + * + * @see Prophecy\Prediction\CallTimesPrediction + * + * @param $count + * + * @return $this + */ + public function shouldBeCalledTimes($count) + { + return $this->should(new Prediction\CallTimesPrediction($count)); + } + + /** + * Checks provided prediction immediately. + * + * @param callable|Prediction\PredictionInterface $prediction + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function shouldHave($prediction) + { + if (is_callable($prediction)) { + $prediction = new Prediction\CallbackPrediction($prediction); + } + + if (!$prediction instanceof Prediction\PredictionInterface) { + throw new InvalidArgumentException(sprintf( + 'Expected callable or instance of PredictionInterface, but got %s.', + gettype($prediction) + )); + } + + if (null === $this->promise && !$this->voidReturnType) { + $this->willReturn(); + } + + $calls = $this->getObjectProphecy()->findProphecyMethodCalls( + $this->getMethodName(), + $this->getArgumentsWildcard() + ); + + try { + $prediction->check($calls, $this->getObjectProphecy(), $this); + $this->checkedPredictions[] = $prediction; + } catch (\Exception $e) { + $this->checkedPredictions[] = $prediction; + + throw $e; + } + + return $this; + } + + /** + * Checks call prediction. + * + * @see Prophecy\Prediction\CallPrediction + * + * @return $this + */ + public function shouldHaveBeenCalled() + { + return $this->shouldHave(new Prediction\CallPrediction); + } + + /** + * Checks no calls prediction. + * + * @see Prophecy\Prediction\NoCallsPrediction + * + * @return $this + */ + public function shouldNotHaveBeenCalled() + { + return $this->shouldHave(new Prediction\NoCallsPrediction); + } + + /** + * Checks no calls prediction. + * + * @see Prophecy\Prediction\NoCallsPrediction + * @deprecated + * + * @return $this + */ + public function shouldNotBeenCalled() + { + return $this->shouldNotHaveBeenCalled(); + } + + /** + * Checks call times prediction. + * + * @see Prophecy\Prediction\CallTimesPrediction + * + * @param int $count + * + * @return $this + */ + public function shouldHaveBeenCalledTimes($count) + { + return $this->shouldHave(new Prediction\CallTimesPrediction($count)); + } + + /** + * Checks currently registered [with should(...)] prediction. + */ + public function checkPrediction() + { + if (null === $this->prediction) { + return; + } + + $this->shouldHave($this->prediction); + } + + /** + * Returns currently registered promise. + * + * @return null|Promise\PromiseInterface + */ + public function getPromise() + { + return $this->promise; + } + + /** + * Returns currently registered prediction. + * + * @return null|Prediction\PredictionInterface + */ + public function getPrediction() + { + return $this->prediction; + } + + /** + * Returns predictions that were checked on this object. + * + * @return Prediction\PredictionInterface[] + */ + public function getCheckedPredictions() + { + return $this->checkedPredictions; + } + + /** + * Returns object prophecy this method prophecy is tied to. + * + * @return ObjectProphecy + */ + public function getObjectProphecy() + { + return $this->objectProphecy; + } + + /** + * Returns method name. + * + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * Returns arguments wildcard. + * + * @return Argument\ArgumentsWildcard + */ + public function getArgumentsWildcard() + { + return $this->argumentsWildcard; + } + + /** + * @return bool + */ + public function hasReturnVoid() + { + return $this->voidReturnType; + } + + private function bindToObjectProphecy() + { + if ($this->bound) { + return; + } + + $this->getObjectProphecy()->addMethodProphecy($this); + $this->bound = true; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php new file mode 100644 index 00000000..8d8f8a1b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php @@ -0,0 +1,281 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +use SebastianBergmann\Comparator\ComparisonFailure; +use Prophecy\Comparator\Factory as ComparatorFactory; +use Prophecy\Call\Call; +use Prophecy\Doubler\LazyDouble; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Call\CallCenter; +use Prophecy\Exception\Prophecy\ObjectProphecyException; +use Prophecy\Exception\Prophecy\MethodProphecyException; +use Prophecy\Exception\Prediction\AggregateException; +use Prophecy\Exception\Prediction\PredictionException; + +/** + * Object prophecy. + * + * @author Konstantin Kudryashov + */ +class ObjectProphecy implements ProphecyInterface +{ + private $lazyDouble; + private $callCenter; + private $revealer; + private $comparatorFactory; + + /** + * @var MethodProphecy[][] + */ + private $methodProphecies = array(); + + /** + * Initializes object prophecy. + * + * @param LazyDouble $lazyDouble + * @param CallCenter $callCenter + * @param RevealerInterface $revealer + * @param ComparatorFactory $comparatorFactory + */ + public function __construct( + LazyDouble $lazyDouble, + CallCenter $callCenter = null, + RevealerInterface $revealer = null, + ComparatorFactory $comparatorFactory = null + ) { + $this->lazyDouble = $lazyDouble; + $this->callCenter = $callCenter ?: new CallCenter; + $this->revealer = $revealer ?: new Revealer; + + $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + } + + /** + * Forces double to extend specific class. + * + * @param string $class + * + * @return $this + */ + public function willExtend($class) + { + $this->lazyDouble->setParentClass($class); + + return $this; + } + + /** + * Forces double to implement specific interface. + * + * @param string $interface + * + * @return $this + */ + public function willImplement($interface) + { + $this->lazyDouble->addInterface($interface); + + return $this; + } + + /** + * Sets constructor arguments. + * + * @param array $arguments + * + * @return $this + */ + public function willBeConstructedWith(array $arguments = null) + { + $this->lazyDouble->setArguments($arguments); + + return $this; + } + + /** + * Reveals double. + * + * @return object + * + * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface + */ + public function reveal() + { + $double = $this->lazyDouble->getInstance(); + + if (null === $double || !$double instanceof ProphecySubjectInterface) { + throw new ObjectProphecyException( + "Generated double must implement ProphecySubjectInterface, but it does not.\n". + 'It seems you have wrongly configured doubler without required ClassPatch.', + $this + ); + } + + $double->setProphecy($this); + + return $double; + } + + /** + * Adds method prophecy to object prophecy. + * + * @param MethodProphecy $methodProphecy + * + * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't + * have arguments wildcard + */ + public function addMethodProphecy(MethodProphecy $methodProphecy) + { + $argumentsWildcard = $methodProphecy->getArgumentsWildcard(); + if (null === $argumentsWildcard) { + throw new MethodProphecyException(sprintf( + "Can not add prophecy for a method `%s::%s()`\n". + "as you did not specify arguments wildcard for it.", + get_class($this->reveal()), + $methodProphecy->getMethodName() + ), $methodProphecy); + } + + $methodName = $methodProphecy->getMethodName(); + + if (!isset($this->methodProphecies[$methodName])) { + $this->methodProphecies[$methodName] = array(); + } + + $this->methodProphecies[$methodName][] = $methodProphecy; + } + + /** + * Returns either all or related to single method prophecies. + * + * @param null|string $methodName + * + * @return MethodProphecy[] + */ + public function getMethodProphecies($methodName = null) + { + if (null === $methodName) { + return $this->methodProphecies; + } + + if (!isset($this->methodProphecies[$methodName])) { + return array(); + } + + return $this->methodProphecies[$methodName]; + } + + /** + * Makes specific method call. + * + * @param string $methodName + * @param array $arguments + * + * @return mixed + */ + public function makeProphecyMethodCall($methodName, array $arguments) + { + $arguments = $this->revealer->reveal($arguments); + $return = $this->callCenter->makeCall($this, $methodName, $arguments); + + return $this->revealer->reveal($return); + } + + /** + * Finds calls by method name & arguments wildcard. + * + * @param string $methodName + * @param ArgumentsWildcard $wildcard + * + * @return Call[] + */ + public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard) + { + return $this->callCenter->findCalls($methodName, $wildcard); + } + + /** + * Checks that registered method predictions do not fail. + * + * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail + */ + public function checkProphecyMethodsPredictions() + { + $exception = new AggregateException(sprintf("%s:\n", get_class($this->reveal()))); + $exception->setObjectProphecy($this); + + foreach ($this->methodProphecies as $prophecies) { + foreach ($prophecies as $prophecy) { + try { + $prophecy->checkPrediction(); + } catch (PredictionException $e) { + $exception->append($e); + } + } + } + + if (count($exception->getExceptions())) { + throw $exception; + } + } + + /** + * Creates new method prophecy using specified method name and arguments. + * + * @param string $methodName + * @param array $arguments + * + * @return MethodProphecy + */ + public function __call($methodName, array $arguments) + { + $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments)); + + foreach ($this->getMethodProphecies($methodName) as $prophecy) { + $argumentsWildcard = $prophecy->getArgumentsWildcard(); + $comparator = $this->comparatorFactory->getComparatorFor( + $argumentsWildcard, $arguments + ); + + try { + $comparator->assertEquals($argumentsWildcard, $arguments); + return $prophecy; + } catch (ComparisonFailure $failure) {} + } + + return new MethodProphecy($this, $methodName, $arguments); + } + + /** + * Tries to get property value from double. + * + * @param string $name + * + * @return mixed + */ + public function __get($name) + { + return $this->reveal()->$name; + } + + /** + * Tries to set property value to double. + * + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + $this->reveal()->$name = $this->revealer->reveal($value); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php new file mode 100644 index 00000000..462f15a9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php @@ -0,0 +1,27 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Core Prophecy interface. + * + * @author Konstantin Kudryashov + */ +interface ProphecyInterface +{ + /** + * Reveals prophecy object (double) . + * + * @return object + */ + public function reveal(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php new file mode 100644 index 00000000..2d839585 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php @@ -0,0 +1,34 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Controllable doubles interface. + * + * @author Konstantin Kudryashov + */ +interface ProphecySubjectInterface +{ + /** + * Sets subject prophecy. + * + * @param ProphecyInterface $prophecy + */ + public function setProphecy(ProphecyInterface $prophecy); + + /** + * Returns subject prophecy. + * + * @return ProphecyInterface + */ + public function getProphecy(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php new file mode 100644 index 00000000..60ecdac8 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php @@ -0,0 +1,44 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Basic prophecies revealer. + * + * @author Konstantin Kudryashov + */ +class Revealer implements RevealerInterface +{ + /** + * Unwraps value(s). + * + * @param mixed $value + * + * @return mixed + */ + public function reveal($value) + { + if (is_array($value)) { + return array_map(array($this, __FUNCTION__), $value); + } + + if (!is_object($value)) { + return $value; + } + + if ($value instanceof ProphecyInterface) { + $value = $value->reveal(); + } + + return $value; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php new file mode 100644 index 00000000..ffc82bb6 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php @@ -0,0 +1,29 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Prophecies revealer interface. + * + * @author Konstantin Kudryashov + */ +interface RevealerInterface +{ + /** + * Unwraps value(s). + * + * @param mixed $value + * + * @return mixed + */ + public function reveal($value); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophet.php b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php new file mode 100644 index 00000000..ac649234 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php @@ -0,0 +1,134 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy; + +use Prophecy\Doubler\Doubler; +use Prophecy\Doubler\LazyDouble; +use Prophecy\Doubler\ClassPatch; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\RevealerInterface; +use Prophecy\Prophecy\Revealer; +use Prophecy\Call\CallCenter; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\PredictionException; +use Prophecy\Exception\Prediction\AggregateException; + +/** + * Prophet creates prophecies. + * + * @author Konstantin Kudryashov + */ +class Prophet +{ + private $doubler; + private $revealer; + private $util; + + /** + * @var ObjectProphecy[] + */ + private $prophecies = array(); + + /** + * Initializes Prophet. + * + * @param null|Doubler $doubler + * @param null|RevealerInterface $revealer + * @param null|StringUtil $util + */ + public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null, + StringUtil $util = null) + { + if (null === $doubler) { + $doubler = new Doubler; + $doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch); + $doubler->registerClassPatch(new ClassPatch\TraversablePatch); + $doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch); + $doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch); + $doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch); + $doubler->registerClassPatch(new ClassPatch\HhvmExceptionPatch()); + $doubler->registerClassPatch(new ClassPatch\MagicCallPatch); + $doubler->registerClassPatch(new ClassPatch\KeywordPatch); + } + + $this->doubler = $doubler; + $this->revealer = $revealer ?: new Revealer; + $this->util = $util ?: new StringUtil; + } + + /** + * Creates new object prophecy. + * + * @param null|string $classOrInterface Class or interface name + * + * @return ObjectProphecy + */ + public function prophesize($classOrInterface = null) + { + $this->prophecies[] = $prophecy = new ObjectProphecy( + new LazyDouble($this->doubler), + new CallCenter($this->util), + $this->revealer + ); + + if ($classOrInterface && class_exists($classOrInterface)) { + return $prophecy->willExtend($classOrInterface); + } + + if ($classOrInterface && interface_exists($classOrInterface)) { + return $prophecy->willImplement($classOrInterface); + } + + return $prophecy; + } + + /** + * Returns all created object prophecies. + * + * @return ObjectProphecy[] + */ + public function getProphecies() + { + return $this->prophecies; + } + + /** + * Returns Doubler instance assigned to this Prophet. + * + * @return Doubler + */ + public function getDoubler() + { + return $this->doubler; + } + + /** + * Checks all predictions defined by prophecies of this Prophet. + * + * @throws Exception\Prediction\AggregateException If any prediction fails + */ + public function checkPredictions() + { + $exception = new AggregateException("Some predictions failed:\n"); + foreach ($this->prophecies as $prophecy) { + try { + $prophecy->checkProphecyMethodsPredictions(); + } catch (PredictionException $e) { + $exception->append($e); + } + } + + if (count($exception->getExceptions())) { + throw $exception; + } + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php new file mode 100644 index 00000000..50dd3f32 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php @@ -0,0 +1,212 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * This class is a modification from sebastianbergmann/exporter + * @see https://github.com/sebastianbergmann/exporter + */ +class ExportUtil +{ + /** + * Exports a value as a string + * + * The output of this method is similar to the output of print_r(), but + * improved in various aspects: + * + * - NULL is rendered as "null" (instead of "") + * - TRUE is rendered as "true" (instead of "1") + * - FALSE is rendered as "false" (instead of "") + * - Strings are always quoted with single quotes + * - Carriage returns and newlines are normalized to \n + * - Recursion and repeated rendering is treated properly + * + * @param mixed $value + * @param int $indentation The indentation level of the 2nd+ line + * @return string + */ + public static function export($value, $indentation = 0) + { + return self::recursiveExport($value, $indentation); + } + + /** + * Converts an object to an array containing all of its private, protected + * and public properties. + * + * @param mixed $value + * @return array + */ + public static function toArray($value) + { + if (!is_object($value)) { + return (array) $value; + } + + $array = array(); + + foreach ((array) $value as $key => $val) { + // properties are transformed to keys in the following way: + // private $property => "\0Classname\0property" + // protected $property => "\0*\0property" + // public $property => "property" + if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) { + $key = $matches[1]; + } + + // See https://github.com/php/php-src/commit/5721132 + if ($key === "\0gcdata") { + continue; + } + + $array[$key] = $val; + } + + // Some internal classes like SplObjectStorage don't work with the + // above (fast) mechanism nor with reflection in Zend. + // Format the output similarly to print_r() in this case + if ($value instanceof \SplObjectStorage) { + // However, the fast method does work in HHVM, and exposes the + // internal implementation. Hide it again. + if (property_exists('\SplObjectStorage', '__storage')) { + unset($array['__storage']); + } elseif (property_exists('\SplObjectStorage', 'storage')) { + unset($array['storage']); + } + + if (property_exists('\SplObjectStorage', '__key')) { + unset($array['__key']); + } + + foreach ($value as $key => $val) { + $array[spl_object_hash($val)] = array( + 'obj' => $val, + 'inf' => $value->getInfo(), + ); + } + } + + return $array; + } + + /** + * Recursive implementation of export + * + * @param mixed $value The value to export + * @param int $indentation The indentation level of the 2nd+ line + * @param \SebastianBergmann\RecursionContext\Context $processed Previously processed objects + * @return string + * @see SebastianBergmann\Exporter\Exporter::export + */ + protected static function recursiveExport(&$value, $indentation, $processed = null) + { + if ($value === null) { + return 'null'; + } + + if ($value === true) { + return 'true'; + } + + if ($value === false) { + return 'false'; + } + + if (is_float($value) && floatval(intval($value)) === $value) { + return "$value.0"; + } + + if (is_resource($value)) { + return sprintf( + 'resource(%d) of type (%s)', + $value, + get_resource_type($value) + ); + } + + if (is_string($value)) { + // Match for most non printable chars somewhat taking multibyte chars into account + if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) { + return 'Binary String: 0x' . bin2hex($value); + } + + return "'" . + str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) . + "'"; + } + + $whitespace = str_repeat(' ', 4 * $indentation); + + if (!$processed) { + $processed = new Context; + } + + if (is_array($value)) { + if (($key = $processed->contains($value)) !== false) { + return 'Array &' . $key; + } + + $array = $value; + $key = $processed->add($value); + $values = ''; + + if (count($array) > 0) { + foreach ($array as $k => $v) { + $values .= sprintf( + '%s %s => %s' . "\n", + $whitespace, + self::recursiveExport($k, $indentation), + self::recursiveExport($value[$k], $indentation + 1, $processed) + ); + } + + $values = "\n" . $values . $whitespace; + } + + return sprintf('Array &%s (%s)', $key, $values); + } + + if (is_object($value)) { + $class = get_class($value); + + if ($value instanceof ProphecyInterface) { + return sprintf('%s Object (*Prophecy*)', $class); + } elseif ($hash = $processed->contains($value)) { + return sprintf('%s:%s Object', $class, $hash); + } + + $hash = $processed->add($value); + $values = ''; + $array = self::toArray($value); + + if (count($array) > 0) { + foreach ($array as $k => $v) { + $values .= sprintf( + '%s %s => %s' . "\n", + $whitespace, + self::recursiveExport($k, $indentation), + self::recursiveExport($v, $indentation + 1, $processed) + ); + } + + $values = "\n" . $values . $whitespace; + } + + return sprintf('%s:%s Object (%s)', $class, $hash, $values); + } + + return var_export($value, true); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php new file mode 100644 index 00000000..bb90156a --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php @@ -0,0 +1,89 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Util; + +use Prophecy\Call\Call; + +/** + * String utility. + * + * @author Konstantin Kudryashov + */ +class StringUtil +{ + /** + * Stringifies any provided value. + * + * @param mixed $value + * @param boolean $exportObject + * + * @return string + */ + public function stringify($value, $exportObject = true) + { + if (is_array($value)) { + if (range(0, count($value) - 1) === array_keys($value)) { + return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']'; + } + + $stringify = array($this, __FUNCTION__); + + return '['.implode(', ', array_map(function ($item, $key) use ($stringify) { + return (is_integer($key) ? $key : '"'.$key.'"'). + ' => '.call_user_func($stringify, $item); + }, $value, array_keys($value))).']'; + } + if (is_resource($value)) { + return get_resource_type($value).':'.$value; + } + if (is_object($value)) { + return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value)); + } + if (true === $value || false === $value) { + return $value ? 'true' : 'false'; + } + if (is_string($value)) { + $str = sprintf('"%s"', str_replace("\n", '\\n', $value)); + + if (50 <= strlen($str)) { + return substr($str, 0, 50).'"...'; + } + + return $str; + } + if (null === $value) { + return 'null'; + } + + return (string) $value; + } + + /** + * Stringifies provided array of calls. + * + * @param Call[] $calls Array of Call instances + * + * @return string + */ + public function stringifyCalls(array $calls) + { + $self = $this; + + return implode(PHP_EOL, array_map(function (Call $call) use ($self) { + return sprintf(' - %s(%s) @ %s', + $call->getMethodName(), + implode(', ', array_map(array($self, 'stringify'), $call->getArguments())), + str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace()) + ); + }, $calls)); + } +} diff --git a/vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php b/vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php new file mode 100644 index 00000000..77f3ad8f --- /dev/null +++ b/vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php @@ -0,0 +1,469 @@ +reflect($class, array()); + + $this->assertCount(7, $node->getMethods()); + } + + /** + * @test + */ + public function it_reflects_protected_abstract_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithProtectedAbstractMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertEquals('Fixtures\Prophecy\WithProtectedAbstractMethod', $classNode->getParentClass()); + + $methodNodes = $classNode->getMethods(); + $this->assertCount(1, $methodNodes); + + $this->assertEquals('protected', $methodNodes['innerDetail']->getVisibility()); + } + + /** + * @test + */ + public function it_reflects_public_static_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithStaticMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertEquals('Fixtures\Prophecy\WithStaticMethod', $classNode->getParentClass()); + + $methodNodes = $classNode->getMethods(); + $this->assertCount(1, $methodNodes); + + $this->assertTrue($methodNodes['innerDetail']->isStatic()); + } + + /** + * @test + */ + public function it_marks_required_args_without_types_as_not_optional() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithArguments'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithoutTypeHints'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(1, $argNodes); + + $this->assertEquals('arg', $argNodes[0]->getName()); + $this->assertNull($argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertNull($argNodes[0]->getDefault()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertFalse($argNodes[0]->isVariadic()); + } + + /** + * @test + */ + public function it_properly_reads_methods_arguments_with_types() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithArguments'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(3, $argNodes); + + $this->assertEquals('arg_1', $argNodes[0]->getName()); + $this->assertEquals('array', $argNodes[0]->getTypeHint()); + $this->assertTrue($argNodes[0]->isOptional()); + $this->assertEquals(array(), $argNodes[0]->getDefault()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertFalse($argNodes[0]->isVariadic()); + + $this->assertEquals('arg_2', $argNodes[1]->getName()); + $this->assertEquals('ArrayAccess', $argNodes[1]->getTypeHint()); + $this->assertFalse($argNodes[1]->isOptional()); + + $this->assertEquals('arg_3', $argNodes[2]->getName()); + $this->assertEquals('ArrayAccess', $argNodes[2]->getTypeHint()); + $this->assertTrue($argNodes[2]->isOptional()); + $this->assertNull($argNodes[2]->getDefault()); + $this->assertFalse($argNodes[2]->isPassedByReference()); + $this->assertFalse($argNodes[2]->isVariadic()); + } + + /** + * @test + * @requires PHP 5.4 + */ + public function it_properly_reads_methods_arguments_with_callable_types() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithCallableArgument'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(2, $argNodes); + + $this->assertEquals('arg_1', $argNodes[0]->getName()); + $this->assertEquals('callable', $argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertFalse($argNodes[0]->isVariadic()); + + $this->assertEquals('arg_2', $argNodes[1]->getName()); + $this->assertEquals('callable', $argNodes[1]->getTypeHint()); + $this->assertTrue($argNodes[1]->isOptional()); + $this->assertNull($argNodes[1]->getDefault()); + $this->assertFalse($argNodes[1]->isPassedByReference()); + $this->assertFalse($argNodes[1]->isVariadic()); + } + + /** + * @test + * @requires PHP 5.6 + */ + public function it_properly_reads_methods_variadic_arguments() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithVariadicArgument'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(1, $argNodes); + + $this->assertEquals('args', $argNodes[0]->getName()); + $this->assertNull($argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertTrue($argNodes[0]->isVariadic()); + } + + /** + * @test + * @requires PHP 5.6 + */ + public function it_properly_reads_methods_typehinted_variadic_arguments() + { + if (defined('HHVM_VERSION_ID')) { + $this->markTestSkipped('HHVM does not support typehints on variadic arguments.'); + } + + $class = new \ReflectionClass('Fixtures\Prophecy\WithTypehintedVariadicArgument'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithTypeHintedArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(1, $argNodes); + + $this->assertEquals('args', $argNodes[0]->getName()); + $this->assertEquals('array', $argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertTrue($argNodes[0]->isVariadic()); + } + + /** + * @test + */ + public function it_marks_passed_by_reference_args_as_passed_by_reference() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithReferences'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertTrue($classNode->hasMethod('methodWithReferenceArgument')); + + $argNodes = $classNode->getMethod('methodWithReferenceArgument')->getArguments(); + + $this->assertCount(2, $argNodes); + + $this->assertTrue($argNodes[0]->isPassedByReference()); + $this->assertTrue($argNodes[1]->isPassedByReference()); + } + + /** + * @test + */ + public function it_throws_an_exception_if_class_is_final() + { + $class = new \ReflectionClass('Fixtures\Prophecy\FinalClass'); + + $mirror = new ClassMirror(); + + $this->setExpectedException('Prophecy\Exception\Doubler\ClassMirrorException'); + + $mirror->reflect($class, array()); + } + + /** + * @test + */ + public function it_ignores_final_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithFinalMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(0, $classNode->getMethods()); + } + + /** + * @test + */ + public function it_marks_final_methods_as_unextendable() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithFinalMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(1, $classNode->getUnextendableMethods()); + $this->assertFalse($classNode->isExtendable('finalImplementation')); + } + + /** + * @test + */ + public function it_throws_an_exception_if_interface_provided_instead_of_class() + { + $class = new \ReflectionClass('Fixtures\Prophecy\EmptyInterface'); + + $mirror = new ClassMirror(); + + $this->setExpectedException('Prophecy\Exception\InvalidArgumentException'); + + $mirror->reflect($class, array()); + } + + /** + * @test + */ + public function it_reflects_all_interfaces_methods() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(null, array( + new \ReflectionClass('Fixtures\Prophecy\Named'), + new \ReflectionClass('Fixtures\Prophecy\ModifierInterface'), + )); + + $this->assertEquals('stdClass', $classNode->getParentClass()); + $this->assertEquals(array( + 'Prophecy\Doubler\Generator\ReflectionInterface', + 'Fixtures\Prophecy\ModifierInterface', + 'Fixtures\Prophecy\Named', + ), $classNode->getInterfaces()); + + $this->assertCount(3, $classNode->getMethods()); + $this->assertTrue($classNode->hasMethod('getName')); + $this->assertTrue($classNode->hasMethod('isAbstract')); + $this->assertTrue($classNode->hasMethod('getVisibility')); + } + + /** + * @test + */ + public function it_ignores_virtually_private_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithVirtuallyPrivateMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(2, $classNode->getMethods()); + $this->assertTrue($classNode->hasMethod('isAbstract')); + $this->assertTrue($classNode->hasMethod('__toString')); + $this->assertFalse($classNode->hasMethod('_getName')); + } + + /** + * @test + */ + public function it_does_not_throw_exception_for_virtually_private_finals() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithFinalVirtuallyPrivateMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(0, $classNode->getMethods()); + } + + /** + * @test + * @requires PHP 7 + */ + public function it_reflects_return_typehints() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithReturnTypehints'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(3, $classNode->getMethods()); + $this->assertTrue($classNode->hasMethod('getName')); + $this->assertTrue($classNode->hasMethod('getSelf')); + $this->assertTrue($classNode->hasMethod('getParent')); + + $this->assertEquals('string', $classNode->getMethod('getName')->getReturnType()); + $this->assertEquals('\Fixtures\Prophecy\WithReturnTypehints', $classNode->getMethod('getSelf')->getReturnType()); + $this->assertEquals('\Fixtures\Prophecy\EmptyClass', $classNode->getMethod('getParent')->getReturnType()); + } + + /** + * @test + */ + public function it_throws_an_exception_if_class_provided_in_interfaces_list() + { + $class = new \ReflectionClass('Fixtures\Prophecy\EmptyClass'); + + $mirror = new ClassMirror(); + + $this->setExpectedException('InvalidArgumentException'); + + $mirror->reflect(null, array($class)); + } + + /** + * @test + */ + public function it_throws_an_exception_if_not_reflection_provided_as_interface() + { + $mirror = new ClassMirror(); + + $this->setExpectedException('InvalidArgumentException'); + + $mirror->reflect(null, array(null)); + } + + /** + * @test + */ + public function it_doesnt_use_scalar_typehints() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(new \ReflectionClass('ReflectionMethod'), array()); + $method = $classNode->getMethod('export'); + $arguments = $method->getArguments(); + + $this->assertNull($arguments[0]->getTypeHint()); + $this->assertNull($arguments[1]->getTypeHint()); + $this->assertNull($arguments[2]->getTypeHint()); + } + + /** + * @test + */ + public function it_doesnt_fail_to_typehint_nonexistent_FQCN() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(new \ReflectionClass('Fixtures\Prophecy\OptionalDepsClass'), array()); + $method = $classNode->getMethod('iHaveAStrangeTypeHintedArg'); + $arguments = $method->getArguments(); + $this->assertEquals('I\Simply\Am\Nonexistent', $arguments[0]->getTypeHint()); + } + + /** + * @test + */ + public function it_doesnt_fail_to_typehint_nonexistent_RQCN() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(new \ReflectionClass('Fixtures\Prophecy\OptionalDepsClass'), array()); + $method = $classNode->getMethod('iHaveAnEvenStrangerTypeHintedArg'); + $arguments = $method->getArguments(); + $this->assertEquals('I\Simply\Am\Not', $arguments[0]->getTypeHint()); + } + + /** + * @test + */ + function it_changes_argument_names_if_they_are_varying() + { + // Use test doubles in this test, as arguments named ... in the Reflection API can only happen for internal classes + $class = $this->prophesize('ReflectionClass'); + $method = $this->prophesize('ReflectionMethod'); + $parameter = $this->prophesize('ReflectionParameter'); + + $class->getName()->willReturn('Custom\ClassName'); + $class->isInterface()->willReturn(false); + $class->isFinal()->willReturn(false); + $class->getMethods(\ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); + $class->getMethods(\ReflectionMethod::IS_ABSTRACT)->willReturn(array()); + + $method->getParameters()->willReturn(array($parameter)); + $method->getName()->willReturn('methodName'); + $method->isFinal()->willReturn(false); + $method->isProtected()->willReturn(false); + $method->isStatic()->willReturn(false); + $method->returnsReference()->willReturn(false); + + if (version_compare(PHP_VERSION, '7.0', '>=')) { + $method->hasReturnType()->willReturn(false); + } + + $parameter->getName()->willReturn('...'); + $parameter->isDefaultValueAvailable()->willReturn(true); + $parameter->getDefaultValue()->willReturn(null); + $parameter->isPassedByReference()->willReturn(false); + $parameter->getClass()->willReturn($class); + if (version_compare(PHP_VERSION, '5.6', '>=')) { + $parameter->isVariadic()->willReturn(false); + } + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class->reveal(), array()); + + $methodNodes = $classNode->getMethods(); + + $argumentNodes = $methodNodes['methodName']->getArguments(); + $argumentNode = $argumentNodes[0]; + + $this->assertEquals('__dot_dot_dot__', $argumentNode->getName()); + } +} diff --git a/vendor/phpunit/php-code-coverage/.gitattributes b/vendor/phpunit/php-code-coverage/.gitattributes new file mode 100644 index 00000000..461090b7 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.gitattributes @@ -0,0 +1 @@ +*.php diff=php diff --git a/vendor/phpunit/php-code-coverage/.gitignore b/vendor/phpunit/php-code-coverage/.gitignore new file mode 100644 index 00000000..603bc9e8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.gitignore @@ -0,0 +1,6 @@ +/tests/_files/tmp +/vendor +/composer.lock +/.idea +/.php_cs.cache + diff --git a/vendor/phpunit/php-code-coverage/.php_cs b/vendor/phpunit/php-code-coverage/.php_cs new file mode 100644 index 00000000..de5cde18 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.php_cs @@ -0,0 +1,69 @@ +files() + ->in('src') + ->in('tests') + ->exclude('_files') + ->name('*.php'); + +return Symfony\CS\Config\Config::create() + ->setUsingCache(true) + ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) + ->fixers( + array( + 'align_double_arrow', + 'align_equals', + 'braces', + 'concat_with_spaces', + 'duplicate_semicolon', + 'elseif', + 'empty_return', + 'encoding', + 'eof_ending', + 'extra_empty_lines', + 'function_call_space', + 'function_declaration', + 'indentation', + 'join_function', + 'line_after_namespace', + 'linefeed', + 'list_commas', + 'lowercase_constants', + 'lowercase_keywords', + 'method_argument_space', + 'multiple_use', + 'namespace_no_leading_whitespace', + 'no_blank_lines_after_class_opening', + 'no_empty_lines_after_phpdocs', + 'parenthesis', + 'php_closing_tag', + 'phpdoc_indent', + 'phpdoc_no_access', + 'phpdoc_no_empty_return', + 'phpdoc_no_package', + 'phpdoc_params', + 'phpdoc_scalar', + 'phpdoc_separation', + 'phpdoc_to_comment', + 'phpdoc_trim', + 'phpdoc_types', + 'phpdoc_var_without_name', + 'remove_lines_between_uses', + 'return', + 'self_accessor', + 'short_array_syntax', + 'short_tag', + 'single_line_after_imports', + 'single_quote', + 'spaces_before_semicolon', + 'spaces_cast', + 'ternary_spaces', + 'trailing_spaces', + 'trim_array_spaces', + 'unused_use', + 'visibility', + 'whitespacy_lines' + ) + ) + ->finder($finder); + diff --git a/vendor/phpunit/php-code-coverage/.travis.yml b/vendor/phpunit/php-code-coverage/.travis.yml new file mode 100644 index 00000000..e3c29662 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.travis.yml @@ -0,0 +1,39 @@ +language: php + +php: + - 5.6 + - 7.0 + - 7.0snapshot + - 7.1 + - 7.1snapshot + - master + +env: + matrix: + - DRIVER="xdebug" + - DRIVER="phpdbg" + +matrix: + allow_failures: + - php: master + fast_finish: true + exclude: + - php: 5.6 + env: DRIVER="phpdbg" + +sudo: false + +before_install: + - composer self-update + - composer clear-cache + +install: + - travis_retry composer update --no-interaction --no-ansi --no-progress --no-suggest --optimize-autoloader --prefer-stable + +script: + - if [[ "$DRIVER" = 'phpdbg' ]]; then phpdbg -qrr vendor/bin/phpunit; fi + - if [[ "$DRIVER" = 'xdebug' ]]; then vendor/bin/phpunit; fi + +notifications: + email: false + diff --git a/vendor/phpunit/php-code-coverage/CONTRIBUTING.md b/vendor/phpunit/php-code-coverage/CONTRIBUTING.md new file mode 100644 index 00000000..76a43458 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/CONTRIBUTING.md @@ -0,0 +1 @@ +Please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for details on how to contribute to this project. diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md new file mode 100644 index 00000000..353b6f65 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md @@ -0,0 +1,56 @@ +# Changes in PHP_CodeCoverage 2.2 + +All notable changes of the PHP_CodeCoverage 2.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [2.2.4] - 2015-10-06 + +### Fixed + +* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag + +## [2.2.3] - 2015-09-14 + +### Fixed + +* Fixed [#368](https://github.com/sebastianbergmann/php-code-coverage/pull/368): Blacklists and whitelists are not merged when merging data sets +* Fixed [#370](https://github.com/sebastianbergmann/php-code-coverage/issues/370): Confusing statistics for source file that declares a class without methods +* Fixed [#372](https://github.com/sebastianbergmann/php-code-coverage/pull/372): Nested classes and functions are not handled correctly +* Fixed [#382](https://github.com/sebastianbergmann/php-code-coverage/issues/382): Crap4J report generates incorrect XML logfile + +## [2.2.2] - 2015-08-04 + +### Added + +* Reintroduced the `PHP_CodeCoverage_Driver_HHVM` driver as an extension of `PHP_CodeCoverage_Driver_Xdebug` that does not use `xdebug_start_code_coverage()` with options not supported by HHVM + +### Changed + +* Bumped required version of `sebastian/environment` to 1.3.2 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) + +## [2.2.1] - 2015-08-02 + +### Changed + +* Bumped required version of `sebastian/environment` to 1.3.1 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) + +## [2.2.0] - 2015-08-01 + +### Added + +* Added a driver for PHPDBG (requires PHP 7) +* Added `PHP_CodeCoverage::setDisableIgnoredLines()` to disable the ignoring of lines using annotations such as `@codeCoverageIgnore` + +### Changed + +* Annotating a method with `@deprecated` now has the same effect as annotating it with `@codeCoverageIgnore` + +### Removed + +* The dedicated driver for HHVM, `PHP_CodeCoverage_Driver_HHVM` has been removed + +[2.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.3...2.2.4 +[2.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.2...2.2.3 +[2.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.1...2.2.2 +[2.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.1...2.2.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md new file mode 100644 index 00000000..a39fa8d4 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md @@ -0,0 +1,31 @@ +# Changes in PHP_CodeCoverage 3.0 + +All notable changes of the PHP_CodeCoverage 3.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.0.2] - 2015-11-12 + +### Changed + +* It is now optional that `@deprecated` code is ignored + +## [3.0.1] - 2015-10-06 + +### Fixed + +* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag + +## [3.0.0] - 2015-10-02 + +### Changed + +* It is now mandatory to configure a whitelist + +### Removed + +* The blacklist functionality has been removed +* PHP_CodeCoverage is no longer supported on PHP 5.3, PHP 5.4, and PHP 5.5 + +[3.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2...3.0.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md new file mode 100644 index 00000000..f7a0de90 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md @@ -0,0 +1,30 @@ +# Changes in PHP_CodeCoverage 3.1 + +All notable changes of the PHP_CodeCoverage 3.1 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.1.1] - 2016-02-04 + +### Changed + +* Allow version 2.0.x of `sebastian/version` dependency + +## [3.1.0] - 2016-01-11 + +### Added + +* Implemented [#234](https://github.com/sebastianbergmann/php-code-coverage/issues/234): Optionally raise an exception when a specified unit of code is not executed + +### Changed + +* The Clover XML report now contains cyclomatic complexity information +* The Clover XML report now contains method visibility information +* Cleanup and refactoring of various areas of code +* Added missing test cases + +### Removed + +* The functionality controlled by the `mapTestClassNameToCoveredClassName` setting has been removed + +[3.1.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.1.0...3.1.1 +[3.1.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0...3.1.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md new file mode 100644 index 00000000..34c65cf4 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md @@ -0,0 +1,23 @@ +# Changes in PHP_CodeCoverage 3.2 + +All notable changes of the PHP_CodeCoverage 3.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.2.1] - 2016-02-18 + +### Changed + +* Updated dependency information in `composer.json` + +## [3.2.0] - 2016-02-13 + +### Added + +* Added optional check for missing `@covers` annotation when the usage of `@covers` annotations is forced + +### Changed + +* Improved `PHP_CodeCoverage_UnintentionallyCoveredCodeException` message + +[3.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.2.0...3.2.1 +[3.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.1...3.2.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md new file mode 100644 index 00000000..2cf15229 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md @@ -0,0 +1,33 @@ +# Changes in PHP_CodeCoverage 3.3 + +All notable changes of the PHP_CodeCoverage 3.3 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.3.3] - 2016-MM-DD + +### Fixed + +* Fixed [#438](https://github.com/sebastianbergmann/php-code-coverage/issues/438): Wrong base directory for Clover reports + +## [3.3.2] - 2016-05-25 + +### Changed + +* The constructor of `PHP_CodeCoverage_Report_Text` now has default values for its parameters + +## [3.3.1] - 2016-04-08 + +### Fixed + +* Fixed handling of lines that contain `declare` statements + +## [3.3.0] - 2016-03-03 + +### Added + +* Added support for whitelisting classes for the unintentionally covered code unit check + +[3.3.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.2...3.3.3 +[3.3.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.1...3.3.2 +[3.3.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.0...3.3.1 +[3.3.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.2...3.3.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md b/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md new file mode 100644 index 00000000..c5ef0e3c --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md @@ -0,0 +1,62 @@ +# Changes in PHP_CodeCoverage 4.0 + +All notable changes of the PHP_CodeCoverage 4.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [4.0.7] - 2017-03-01 + +### Changed + +* Cleaned up requirements in `composer.json` + +## [4.0.6] - 2017-02-23 + +### Changed + +* Added support for `phpunit/php-token-stream` 2.0 +* Updated HTML report assets + +## [4.0.5] - 2017-01-20 + +### Fixed + +* Fixed formatting of executed lines percentage for classes in file view + +## [4.0.4] - 2016-12-20 + +### Changed + +* Implemented [#432](https://github.com/sebastianbergmann/php-code-coverage/issues/432): Change how files with no executable lines are displayed in the HTML report + +## [4.0.3] - 2016-11-28 + +### Changed + +* The check for unintentionally covered code is no longer performed for `@medium` and `@large` tests + +## [4.0.2] - 2016-11-01 + +### Fixed + +* Fixed [#440](https://github.com/sebastianbergmann/php-code-coverage/pull/440): Dashboard charts not showing tooltips for data points + +## [4.0.1] - 2016-07-26 + +### Fixed + +* Fixed [#458](https://github.com/sebastianbergmann/php-code-coverage/pull/458): XML report does not know about warning status + +## [4.0.0] - 2016-06-03 + +### Changed + +* This component now uses namespaces + +[4.0.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.6...4.0.7 +[4.0.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.5...4.0.6 +[4.0.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.4...4.0.5 +[4.0.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.0...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3...4.0.0 + diff --git a/vendor/phpunit/php-code-coverage/LICENSE b/vendor/phpunit/php-code-coverage/LICENSE new file mode 100644 index 00000000..fcfa37e8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/LICENSE @@ -0,0 +1,33 @@ +PHP_CodeCoverage + +Copyright (c) 2009-2015, Sebastian Bergmann . +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 Sebastian Bergmann nor the names of his + 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. diff --git a/vendor/phpunit/php-code-coverage/README.md b/vendor/phpunit/php-code-coverage/README.md new file mode 100644 index 00000000..c01384b8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/README.md @@ -0,0 +1,51 @@ +[![Latest Stable Version](https://poser.pugx.org/phpunit/php-code-coverage/v/stable.png)](https://packagist.org/packages/phpunit/php-code-coverage) +[![Build Status](https://travis-ci.org/sebastianbergmann/php-code-coverage.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-code-coverage) + +# PHP_CodeCoverage + +**PHP_CodeCoverage** is a library that provides collection, processing, and rendering functionality for PHP code coverage information. + +## Requirements + +PHP 5.6 is required but using the latest version of PHP is highly recommended. + +### PHP 5 + +[Xdebug](http://xdebug.org/) is the only source of raw code coverage data supported for PHP 5. Version 2.2.1 of Xdebug is required but using the latest version is highly recommended. + +### PHP 7 + +Version 2.4.0 (or later) of [Xdebug](http://xdebug.org/) as well as [phpdbg](http://phpdbg.com/docs) are supported sources of raw code coverage data for PHP 7. + +### HHVM + +A version of HHVM that implements the Xdebug API for code coverage (`xdebug_*_code_coverage()`) is required. + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + + composer require phpunit/php-code-coverage + +If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: + + composer require --dev phpunit/php-code-coverage + +## Using the PHP_CodeCoverage API + +```php +start(''); + +// ... + +$coverage->stop(); + +$writer = new \SebastianBergmann\CodeCoverage\Report\Clover; +$writer->process($coverage, '/tmp/clover.xml'); + +$writer = new \SebastianBergmann\CodeCoverage\Report\Html\Facade; +$writer->process($coverage, '/tmp/code-coverage-report'); +``` + diff --git a/vendor/phpunit/php-code-coverage/build.xml b/vendor/phpunit/php-code-coverage/build.xml new file mode 100644 index 00000000..d8168c2d --- /dev/null +++ b/vendor/phpunit/php-code-coverage/build.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/phpunit/php-code-coverage/composer.json b/vendor/phpunit/php-code-coverage/composer.json new file mode 100644 index 00000000..7ca434b2 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/composer.json @@ -0,0 +1,51 @@ +{ + "name": "phpunit/php-code-coverage", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "type": "library", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "irc": "irc://irc.freenode.net/phpunit" + }, + "require": { + "php": "^5.6 || ^7.0", + "ext-dom": "*", + "ext-xmlwriter": "*", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "phpunit/php-text-template": "^1.2", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7", + "ext-xdebug": "^2.1.4" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + } +} diff --git a/vendor/phpunit/php-code-coverage/phpunit.xml b/vendor/phpunit/php-code-coverage/phpunit.xml new file mode 100644 index 00000000..55822f0c --- /dev/null +++ b/vendor/phpunit/php-code-coverage/phpunit.xml @@ -0,0 +1,21 @@ + + + + tests/tests + + + + + src + + + + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php new file mode 100644 index 00000000..35dab3d6 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php @@ -0,0 +1,1107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +use SebastianBergmann\CodeCoverage\Driver\Driver; +use SebastianBergmann\CodeCoverage\Driver\Xdebug; +use SebastianBergmann\CodeCoverage\Driver\HHVM; +use SebastianBergmann\CodeCoverage\Driver\PHPDBG; +use SebastianBergmann\CodeCoverage\Node\Builder; +use SebastianBergmann\CodeCoverage\Node\Directory; +use SebastianBergmann\CodeUnitReverseLookup\Wizard; +use SebastianBergmann\Environment\Runtime; + +/** + * Provides collection functionality for PHP code coverage information. + */ +class CodeCoverage +{ + /** + * @var Driver + */ + private $driver; + + /** + * @var Filter + */ + private $filter; + + /** + * @var Wizard + */ + private $wizard; + + /** + * @var bool + */ + private $cacheTokens = false; + + /** + * @var bool + */ + private $checkForUnintentionallyCoveredCode = false; + + /** + * @var bool + */ + private $forceCoversAnnotation = false; + + /** + * @var bool + */ + private $checkForUnexecutedCoveredCode = false; + + /** + * @var bool + */ + private $checkForMissingCoversAnnotation = false; + + /** + * @var bool + */ + private $addUncoveredFilesFromWhitelist = true; + + /** + * @var bool + */ + private $processUncoveredFilesFromWhitelist = false; + + /** + * @var bool + */ + private $ignoreDeprecatedCode = false; + + /** + * @var mixed + */ + private $currentId; + + /** + * Code coverage data. + * + * @var array + */ + private $data = []; + + /** + * @var array + */ + private $ignoredLines = []; + + /** + * @var bool + */ + private $disableIgnoredLines = false; + + /** + * Test data. + * + * @var array + */ + private $tests = []; + + /** + * @var string[] + */ + private $unintentionallyCoveredSubclassesWhitelist = []; + + /** + * Determine if the data has been initialized or not + * + * @var bool + */ + private $isInitialized = false; + + /** + * Determine whether we need to check for dead and unused code on each test + * + * @var bool + */ + private $shouldCheckForDeadAndUnused = true; + + /** + * Constructor. + * + * @param Driver $driver + * @param Filter $filter + * + * @throws RuntimeException + */ + public function __construct(Driver $driver = null, Filter $filter = null) + { + if ($driver === null) { + $driver = $this->selectDriver(); + } + + if ($filter === null) { + $filter = new Filter; + } + + $this->driver = $driver; + $this->filter = $filter; + + $this->wizard = new Wizard; + } + + /** + * Returns the code coverage information as a graph of node objects. + * + * @return Directory + */ + public function getReport() + { + $builder = new Builder; + + return $builder->build($this); + } + + /** + * Clears collected code coverage data. + */ + public function clear() + { + $this->isInitialized = false; + $this->currentId = null; + $this->data = []; + $this->tests = []; + } + + /** + * Returns the filter object used. + * + * @return Filter + */ + public function filter() + { + return $this->filter; + } + + /** + * Returns the collected code coverage data. + * Set $raw = true to bypass all filters. + * + * @param bool $raw + * + * @return array + */ + public function getData($raw = false) + { + if (!$raw && $this->addUncoveredFilesFromWhitelist) { + $this->addUncoveredFilesFromWhitelist(); + } + + return $this->data; + } + + /** + * Sets the coverage data. + * + * @param array $data + */ + public function setData(array $data) + { + $this->data = $data; + } + + /** + * Returns the test data. + * + * @return array + */ + public function getTests() + { + return $this->tests; + } + + /** + * Sets the test data. + * + * @param array $tests + */ + public function setTests(array $tests) + { + $this->tests = $tests; + } + + /** + * Start collection of code coverage information. + * + * @param mixed $id + * @param bool $clear + * + * @throws InvalidArgumentException + */ + public function start($id, $clear = false) + { + if (!is_bool($clear)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + if ($clear) { + $this->clear(); + } + + if ($this->isInitialized === false) { + $this->initializeData(); + } + + $this->currentId = $id; + + $this->driver->start($this->shouldCheckForDeadAndUnused); + } + + /** + * Stop collection of code coverage information. + * + * @param bool $append + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * + * @return array + * + * @throws InvalidArgumentException + */ + public function stop($append = true, $linesToBeCovered = [], array $linesToBeUsed = []) + { + if (!is_bool($append)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) { + throw InvalidArgumentException::create( + 2, + 'array or false' + ); + } + + $data = $this->driver->stop(); + $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed); + + $this->currentId = null; + + return $data; + } + + /** + * Appends code coverage data. + * + * @param array $data + * @param mixed $id + * @param bool $append + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws RuntimeException + */ + public function append(array $data, $id = null, $append = true, $linesToBeCovered = [], array $linesToBeUsed = []) + { + if ($id === null) { + $id = $this->currentId; + } + + if ($id === null) { + throw new RuntimeException; + } + + $this->applyListsFilter($data); + $this->applyIgnoredLinesFilter($data); + $this->initializeFilesThatAreSeenTheFirstTime($data); + + if (!$append) { + return; + } + + if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') { + $this->applyCoversAnnotationFilter( + $data, + $linesToBeCovered, + $linesToBeUsed + ); + } + + if (empty($data)) { + return; + } + + $size = 'unknown'; + $status = null; + + if ($id instanceof \PHPUnit_Framework_TestCase) { + $_size = $id->getSize(); + + if ($_size == \PHPUnit_Util_Test::SMALL) { + $size = 'small'; + } elseif ($_size == \PHPUnit_Util_Test::MEDIUM) { + $size = 'medium'; + } elseif ($_size == \PHPUnit_Util_Test::LARGE) { + $size = 'large'; + } + + $status = $id->getStatus(); + $id = get_class($id) . '::' . $id->getName(); + } elseif ($id instanceof \PHPUnit_Extensions_PhptTestCase) { + $size = 'large'; + $id = $id->getName(); + } + + $this->tests[$id] = ['size' => $size, 'status' => $status]; + + foreach ($data as $file => $lines) { + if (!$this->filter->isFile($file)) { + continue; + } + + foreach ($lines as $k => $v) { + if ($v == Driver::LINE_EXECUTED) { + if (empty($this->data[$file][$k]) || !in_array($id, $this->data[$file][$k])) { + $this->data[$file][$k][] = $id; + } + } + } + } + } + + /** + * Merges the data from another instance. + * + * @param CodeCoverage $that + */ + public function merge(CodeCoverage $that) + { + $this->filter->setWhitelistedFiles( + array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles()) + ); + + foreach ($that->data as $file => $lines) { + if (!isset($this->data[$file])) { + if (!$this->filter->isFiltered($file)) { + $this->data[$file] = $lines; + } + + continue; + } + + foreach ($lines as $line => $data) { + if ($data !== null) { + if (!isset($this->data[$file][$line])) { + $this->data[$file][$line] = $data; + } else { + $this->data[$file][$line] = array_unique( + array_merge($this->data[$file][$line], $data) + ); + } + } + } + } + + $this->tests = array_merge($this->tests, $that->getTests()); + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCacheTokens($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->cacheTokens = $flag; + } + + /** + * @return bool + */ + public function getCacheTokens() + { + return $this->cacheTokens; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCheckForUnintentionallyCoveredCode($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->checkForUnintentionallyCoveredCode = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setForceCoversAnnotation($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->forceCoversAnnotation = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCheckForMissingCoversAnnotation($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->checkForMissingCoversAnnotation = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCheckForUnexecutedCoveredCode($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->checkForUnexecutedCoveredCode = $flag; + } + + /** + * @deprecated + * + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setMapTestClassNameToCoveredClassName($flag) + { + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setAddUncoveredFilesFromWhitelist($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->addUncoveredFilesFromWhitelist = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setProcessUncoveredFilesFromWhitelist($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->processUncoveredFilesFromWhitelist = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setDisableIgnoredLines($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->disableIgnoredLines = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setIgnoreDeprecatedCode($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->ignoreDeprecatedCode = $flag; + } + + /** + * @param array $whitelist + */ + public function setUnintentionallyCoveredSubclassesWhitelist(array $whitelist) + { + $this->unintentionallyCoveredSubclassesWhitelist = $whitelist; + } + + /** + * Applies the @covers annotation filtering. + * + * @param array $data + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws MissingCoversAnnotationException + * @throws UnintentionallyCoveredCodeException + */ + private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, array $linesToBeUsed) + { + if ($linesToBeCovered === false || + ($this->forceCoversAnnotation && empty($linesToBeCovered))) { + if ($this->checkForMissingCoversAnnotation) { + throw new MissingCoversAnnotationException; + } + + $data = []; + + return; + } + + if (empty($linesToBeCovered)) { + return; + } + + if ($this->checkForUnintentionallyCoveredCode && + (!$this->currentId instanceof \PHPUnit_Framework_TestCase || + (!$this->currentId->isMedium() && !$this->currentId->isLarge()))) { + $this->performUnintentionallyCoveredCodeCheck( + $data, + $linesToBeCovered, + $linesToBeUsed + ); + } + + if ($this->checkForUnexecutedCoveredCode) { + $this->performUnexecutedCoveredCodeCheck($data, $linesToBeCovered, $linesToBeUsed); + } + + $data = array_intersect_key($data, $linesToBeCovered); + + foreach (array_keys($data) as $filename) { + $_linesToBeCovered = array_flip($linesToBeCovered[$filename]); + + $data[$filename] = array_intersect_key( + $data[$filename], + $_linesToBeCovered + ); + } + } + + /** + * Applies the whitelist filtering. + * + * @param array $data + */ + private function applyListsFilter(array &$data) + { + foreach (array_keys($data) as $filename) { + if ($this->filter->isFiltered($filename)) { + unset($data[$filename]); + } + } + } + + /** + * Applies the "ignored lines" filtering. + * + * @param array $data + */ + private function applyIgnoredLinesFilter(array &$data) + { + foreach (array_keys($data) as $filename) { + if (!$this->filter->isFile($filename)) { + continue; + } + + foreach ($this->getLinesToBeIgnored($filename) as $line) { + unset($data[$filename][$line]); + } + } + } + + /** + * @param array $data + */ + private function initializeFilesThatAreSeenTheFirstTime(array $data) + { + foreach ($data as $file => $lines) { + if ($this->filter->isFile($file) && !isset($this->data[$file])) { + $this->data[$file] = []; + + foreach ($lines as $k => $v) { + $this->data[$file][$k] = $v == -2 ? null : []; + } + } + } + } + + /** + * Processes whitelisted files that are not covered. + */ + private function addUncoveredFilesFromWhitelist() + { + $data = []; + $uncoveredFiles = array_diff( + $this->filter->getWhitelist(), + array_keys($this->data) + ); + + foreach ($uncoveredFiles as $uncoveredFile) { + if (!file_exists($uncoveredFile)) { + continue; + } + + if (!$this->processUncoveredFilesFromWhitelist) { + $data[$uncoveredFile] = []; + + $lines = count(file($uncoveredFile)); + + for ($i = 1; $i <= $lines; $i++) { + $data[$uncoveredFile][$i] = Driver::LINE_NOT_EXECUTED; + } + } + } + + $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); + } + + /** + * Returns the lines of a source file that should be ignored. + * + * @param string $filename + * + * @return array + * + * @throws InvalidArgumentException + */ + private function getLinesToBeIgnored($filename) + { + if (!is_string($filename)) { + throw InvalidArgumentException::create( + 1, + 'string' + ); + } + + if (!isset($this->ignoredLines[$filename])) { + $this->ignoredLines[$filename] = []; + + if ($this->disableIgnoredLines) { + return $this->ignoredLines[$filename]; + } + + $ignore = false; + $stop = false; + $lines = file($filename); + $numLines = count($lines); + + foreach ($lines as $index => $line) { + if (!trim($line)) { + $this->ignoredLines[$filename][] = $index + 1; + } + } + + if ($this->cacheTokens) { + $tokens = \PHP_Token_Stream_CachingFactory::get($filename); + } else { + $tokens = new \PHP_Token_Stream($filename); + } + + $classes = array_merge($tokens->getClasses(), $tokens->getTraits()); + $tokens = $tokens->tokens(); + + foreach ($tokens as $token) { + switch (get_class($token)) { + case 'PHP_Token_COMMENT': + case 'PHP_Token_DOC_COMMENT': + $_token = trim($token); + $_line = trim($lines[$token->getLine() - 1]); + + if ($_token == '// @codeCoverageIgnore' || + $_token == '//@codeCoverageIgnore') { + $ignore = true; + $stop = true; + } elseif ($_token == '// @codeCoverageIgnoreStart' || + $_token == '//@codeCoverageIgnoreStart') { + $ignore = true; + } elseif ($_token == '// @codeCoverageIgnoreEnd' || + $_token == '//@codeCoverageIgnoreEnd') { + $stop = true; + } + + if (!$ignore) { + $start = $token->getLine(); + $end = $start + substr_count($token, "\n"); + + // Do not ignore the first line when there is a token + // before the comment + if (0 !== strpos($_token, $_line)) { + $start++; + } + + for ($i = $start; $i < $end; $i++) { + $this->ignoredLines[$filename][] = $i; + } + + // A DOC_COMMENT token or a COMMENT token starting with "/*" + // does not contain the final \n character in its text + if (isset($lines[$i-1]) && 0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) { + $this->ignoredLines[$filename][] = $i; + } + } + break; + + case 'PHP_Token_INTERFACE': + case 'PHP_Token_TRAIT': + case 'PHP_Token_CLASS': + case 'PHP_Token_FUNCTION': + /* @var \PHP_Token_Interface $token */ + + $docblock = $token->getDocblock(); + + $this->ignoredLines[$filename][] = $token->getLine(); + + if (strpos($docblock, '@codeCoverageIgnore') || ($this->ignoreDeprecatedCode && strpos($docblock, '@deprecated'))) { + $endLine = $token->getEndLine(); + + for ($i = $token->getLine(); $i <= $endLine; $i++) { + $this->ignoredLines[$filename][] = $i; + } + } elseif ($token instanceof \PHP_Token_INTERFACE || + $token instanceof \PHP_Token_TRAIT || + $token instanceof \PHP_Token_CLASS) { + if (empty($classes[$token->getName()]['methods'])) { + for ($i = $token->getLine(); + $i <= $token->getEndLine(); + $i++) { + $this->ignoredLines[$filename][] = $i; + } + } else { + $firstMethod = array_shift( + $classes[$token->getName()]['methods'] + ); + + do { + $lastMethod = array_pop( + $classes[$token->getName()]['methods'] + ); + } while ($lastMethod !== null && + substr($lastMethod['signature'], 0, 18) == 'anonymous function'); + + if ($lastMethod === null) { + $lastMethod = $firstMethod; + } + + for ($i = $token->getLine(); + $i < $firstMethod['startLine']; + $i++) { + $this->ignoredLines[$filename][] = $i; + } + + for ($i = $token->getEndLine(); + $i > $lastMethod['endLine']; + $i--) { + $this->ignoredLines[$filename][] = $i; + } + } + } + break; + + case 'PHP_Token_NAMESPACE': + $this->ignoredLines[$filename][] = $token->getEndLine(); + + // Intentional fallthrough + case 'PHP_Token_DECLARE': + case 'PHP_Token_OPEN_TAG': + case 'PHP_Token_CLOSE_TAG': + case 'PHP_Token_USE': + $this->ignoredLines[$filename][] = $token->getLine(); + break; + } + + if ($ignore) { + $this->ignoredLines[$filename][] = $token->getLine(); + + if ($stop) { + $ignore = false; + $stop = false; + } + } + } + + $this->ignoredLines[$filename][] = $numLines + 1; + + $this->ignoredLines[$filename] = array_unique( + $this->ignoredLines[$filename] + ); + + sort($this->ignoredLines[$filename]); + } + + return $this->ignoredLines[$filename]; + } + + /** + * @param array $data + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws UnintentionallyCoveredCodeException + */ + private function performUnintentionallyCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed) + { + $allowedLines = $this->getAllowedLines( + $linesToBeCovered, + $linesToBeUsed + ); + + $unintentionallyCoveredUnits = []; + + foreach ($data as $file => $_data) { + foreach ($_data as $line => $flag) { + if ($flag == 1 && !isset($allowedLines[$file][$line])) { + $unintentionallyCoveredUnits[] = $this->wizard->lookup($file, $line); + } + } + } + + $unintentionallyCoveredUnits = $this->processUnintentionallyCoveredUnits($unintentionallyCoveredUnits); + + if (!empty($unintentionallyCoveredUnits)) { + throw new UnintentionallyCoveredCodeException( + $unintentionallyCoveredUnits + ); + } + } + + /** + * @param array $data + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws CoveredCodeNotExecutedException + */ + private function performUnexecutedCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed) + { + $expectedLines = $this->getAllowedLines( + $linesToBeCovered, + $linesToBeUsed + ); + + foreach ($data as $file => $_data) { + foreach (array_keys($_data) as $line) { + if (!isset($expectedLines[$file][$line])) { + continue; + } + + unset($expectedLines[$file][$line]); + } + } + + $message = ''; + + foreach ($expectedLines as $file => $lines) { + if (empty($lines)) { + continue; + } + + foreach (array_keys($lines) as $line) { + $message .= sprintf('- %s:%d' . PHP_EOL, $file, $line); + } + } + + if (!empty($message)) { + throw new CoveredCodeNotExecutedException($message); + } + } + + /** + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * + * @return array + */ + private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed) + { + $allowedLines = []; + + foreach (array_keys($linesToBeCovered) as $file) { + if (!isset($allowedLines[$file])) { + $allowedLines[$file] = []; + } + + $allowedLines[$file] = array_merge( + $allowedLines[$file], + $linesToBeCovered[$file] + ); + } + + foreach (array_keys($linesToBeUsed) as $file) { + if (!isset($allowedLines[$file])) { + $allowedLines[$file] = []; + } + + $allowedLines[$file] = array_merge( + $allowedLines[$file], + $linesToBeUsed[$file] + ); + } + + foreach (array_keys($allowedLines) as $file) { + $allowedLines[$file] = array_flip( + array_unique($allowedLines[$file]) + ); + } + + return $allowedLines; + } + + /** + * @return Driver + * + * @throws RuntimeException + */ + private function selectDriver() + { + $runtime = new Runtime; + + if (!$runtime->canCollectCodeCoverage()) { + throw new RuntimeException('No code coverage driver available'); + } + + if ($runtime->isHHVM()) { + return new HHVM; + } elseif ($runtime->isPHPDBG()) { + return new PHPDBG; + } else { + return new Xdebug; + } + } + + /** + * @param array $unintentionallyCoveredUnits + * + * @return array + */ + private function processUnintentionallyCoveredUnits(array $unintentionallyCoveredUnits) + { + $unintentionallyCoveredUnits = array_unique($unintentionallyCoveredUnits); + sort($unintentionallyCoveredUnits); + + foreach (array_keys($unintentionallyCoveredUnits) as $k => $v) { + $unit = explode('::', $unintentionallyCoveredUnits[$k]); + + if (count($unit) != 2) { + continue; + } + + $class = new \ReflectionClass($unit[0]); + + foreach ($this->unintentionallyCoveredSubclassesWhitelist as $whitelisted) { + if ($class->isSubclassOf($whitelisted)) { + unset($unintentionallyCoveredUnits[$k]); + break; + } + } + } + + return array_values($unintentionallyCoveredUnits); + } + + /** + * If we are processing uncovered files from whitelist, + * we can initialize the data before we start to speed up the tests + */ + protected function initializeData() + { + $this->isInitialized = true; + + if ($this->processUncoveredFilesFromWhitelist) { + $this->shouldCheckForDeadAndUnused = false; + + $this->driver->start(true); + + foreach ($this->filter->getWhitelist() as $file) { + if ($this->filter->isFile($file)) { + include_once($file); + } + } + + $data = []; + $coverage = $this->driver->stop(); + + foreach ($coverage as $file => $fileCoverage) { + if ($this->filter->isFiltered($file)) { + continue; + } + + foreach (array_keys($fileCoverage) as $key) { + if ($fileCoverage[$key] == Driver::LINE_EXECUTED) { + $fileCoverage[$key] = Driver::LINE_NOT_EXECUTED; + } + } + + $data[$file] = $fileCoverage; + } + + $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php new file mode 100644 index 00000000..bdd1b979 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +/** + * Interface for code coverage drivers. + */ +interface Driver +{ + /** + * @var int + * + * @see http://xdebug.org/docs/code_coverage + */ + const LINE_EXECUTED = 1; + + /** + * @var int + * + * @see http://xdebug.org/docs/code_coverage + */ + const LINE_NOT_EXECUTED = -1; + + /** + * @var int + * + * @see http://xdebug.org/docs/code_coverage + */ + const LINE_NOT_EXECUTABLE = -2; + + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true); + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop(); +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php b/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php new file mode 100644 index 00000000..b35ea81b --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +/** + * Driver for HHVM's code coverage functionality. + * + * @codeCoverageIgnore + */ +class HHVM extends Xdebug +{ + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true) + { + xdebug_start_code_coverage(); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php b/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php new file mode 100644 index 00000000..86cc8444 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php @@ -0,0 +1,111 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +use SebastianBergmann\CodeCoverage\RuntimeException; + +/** + * Driver for PHPDBG's code coverage functionality. + * + * @codeCoverageIgnore + */ +class PHPDBG implements Driver +{ + /** + * Constructor. + */ + public function __construct() + { + if (PHP_SAPI !== 'phpdbg') { + throw new RuntimeException( + 'This driver requires the PHPDBG SAPI' + ); + } + + if (!function_exists('phpdbg_start_oplog')) { + throw new RuntimeException( + 'This build of PHPDBG does not support code coverage' + ); + } + } + + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true) + { + phpdbg_start_oplog(); + } + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop() + { + static $fetchedLines = []; + + $dbgData = phpdbg_end_oplog(); + + if ($fetchedLines == []) { + $sourceLines = phpdbg_get_executable(); + } else { + $newFiles = array_diff( + get_included_files(), + array_keys($fetchedLines) + ); + + if ($newFiles) { + $sourceLines = phpdbg_get_executable( + ['files' => $newFiles] + ); + } else { + $sourceLines = []; + } + } + + foreach ($sourceLines as $file => $lines) { + foreach ($lines as $lineNo => $numExecuted) { + $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED; + } + } + + $fetchedLines = array_merge($fetchedLines, $sourceLines); + + return $this->detectExecutedLines($fetchedLines, $dbgData); + } + + /** + * Convert phpdbg based data into the format CodeCoverage expects + * + * @param array $sourceLines + * @param array $dbgData + * + * @return array + */ + private function detectExecutedLines(array $sourceLines, array $dbgData) + { + foreach ($dbgData as $file => $coveredLines) { + foreach ($coveredLines as $lineNo => $numExecuted) { + // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown. + // make sure we only mark lines executed which are actually executable. + if (isset($sourceLines[$file][$lineNo])) { + $sourceLines[$file][$lineNo] = self::LINE_EXECUTED; + } + } + } + + return $sourceLines; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php new file mode 100644 index 00000000..30099e05 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +use SebastianBergmann\CodeCoverage\RuntimeException; + +/** + * Driver for Xdebug's code coverage functionality. + * + * @codeCoverageIgnore + */ +class Xdebug implements Driver +{ + /** + * Cache the number of lines for each file + * + * @var array + */ + private $cacheNumLines = []; + + /** + * Constructor. + */ + public function __construct() + { + if (!extension_loaded('xdebug')) { + throw new RuntimeException('This driver requires Xdebug'); + } + + if (version_compare(phpversion('xdebug'), '2.2.1', '>=') && + !ini_get('xdebug.coverage_enable')) { + throw new RuntimeException( + 'xdebug.coverage_enable=On has to be set in php.ini' + ); + } + } + + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true) + { + if ($determineUnusedAndDead) { + xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE); + } else { + xdebug_start_code_coverage(); + } + } + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop() + { + $data = xdebug_get_code_coverage(); + xdebug_stop_code_coverage(); + + return $this->cleanup($data); + } + + /** + * @param array $data + * + * @return array + */ + private function cleanup(array $data) + { + foreach (array_keys($data) as $file) { + unset($data[$file][0]); + + if (strpos($file, 'xdebug://debug-eval') !== 0 && file_exists($file)) { + $numLines = $this->getNumberOfLinesInFile($file); + + foreach (array_keys($data[$file]) as $line) { + if ($line > $numLines) { + unset($data[$file][$line]); + } + } + } + } + + return $data; + } + + /** + * @param string $file + * + * @return int + */ + private function getNumberOfLinesInFile($file) + { + if (!isset($this->cacheNumLines[$file])) { + $buffer = file_get_contents($file); + $lines = substr_count($buffer, "\n"); + + if (substr($buffer, -1) !== "\n") { + $lines++; + } + + $this->cacheNumLines[$file] = $lines; + } + + return $this->cacheNumLines[$file]; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php b/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php new file mode 100644 index 00000000..ca28a231 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception that is raised when covered code is not executed. + */ +class CoveredCodeNotExecutedException extends RuntimeException +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/Exception.php b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php new file mode 100644 index 00000000..a3ba4c4c --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception interface for php-code-coverage component. + */ +interface Exception +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php new file mode 100644 index 00000000..1733f6cb --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +class InvalidArgumentException extends \InvalidArgumentException implements Exception +{ + /** + * @param int $argument + * @param string $type + * @param mixed $value + * + * @return InvalidArgumentException + */ + public static function create($argument, $type, $value = null) + { + $stack = debug_backtrace(0); + + return new self( + sprintf( + 'Argument #%d%sof %s::%s() must be a %s', + $argument, + $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ', + $stack[1]['class'], + $stack[1]['function'], + $type + ) + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php b/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php new file mode 100644 index 00000000..7bc5cf3e --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception that is raised when @covers must be used but is not. + */ +class MissingCoversAnnotationException extends RuntimeException +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php b/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php new file mode 100644 index 00000000..c143db7d --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php @@ -0,0 +1,15 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +class RuntimeException extends \RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php new file mode 100644 index 00000000..3ea542b1 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception that is raised when code is unintentionally covered. + */ +class UnintentionallyCoveredCodeException extends RuntimeException +{ + /** + * @var array + */ + private $unintentionallyCoveredUnits = []; + + /** + * @param array $unintentionallyCoveredUnits + */ + public function __construct(array $unintentionallyCoveredUnits) + { + $this->unintentionallyCoveredUnits = $unintentionallyCoveredUnits; + + parent::__construct($this->toString()); + } + + /** + * @return array + */ + public function getUnintentionallyCoveredUnits() + { + return $this->unintentionallyCoveredUnits; + } + + /** + * @return string + */ + private function toString() + { + $message = ''; + + foreach ($this->unintentionallyCoveredUnits as $unit) { + $message .= '- ' . $unit . "\n"; + } + + return $message; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Filter.php b/vendor/phpunit/php-code-coverage/src/Filter.php new file mode 100644 index 00000000..771a657a --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Filter.php @@ -0,0 +1,173 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Filter for whitelisting of code coverage information. + */ +class Filter +{ + /** + * Source files that are whitelisted. + * + * @var array + */ + private $whitelistedFiles = []; + + /** + * Adds a directory to the whitelist (recursively). + * + * @param string $directory + * @param string $suffix + * @param string $prefix + */ + public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '') + { + $facade = new \File_Iterator_Facade; + $files = $facade->getFilesAsArray($directory, $suffix, $prefix); + + foreach ($files as $file) { + $this->addFileToWhitelist($file); + } + } + + /** + * Adds a file to the whitelist. + * + * @param string $filename + */ + public function addFileToWhitelist($filename) + { + $this->whitelistedFiles[realpath($filename)] = true; + } + + /** + * Adds files to the whitelist. + * + * @param array $files + */ + public function addFilesToWhitelist(array $files) + { + foreach ($files as $file) { + $this->addFileToWhitelist($file); + } + } + + /** + * Removes a directory from the whitelist (recursively). + * + * @param string $directory + * @param string $suffix + * @param string $prefix + */ + public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '') + { + $facade = new \File_Iterator_Facade; + $files = $facade->getFilesAsArray($directory, $suffix, $prefix); + + foreach ($files as $file) { + $this->removeFileFromWhitelist($file); + } + } + + /** + * Removes a file from the whitelist. + * + * @param string $filename + */ + public function removeFileFromWhitelist($filename) + { + $filename = realpath($filename); + + unset($this->whitelistedFiles[$filename]); + } + + /** + * Checks whether a filename is a real filename. + * + * @param string $filename + * + * @return bool + */ + public function isFile($filename) + { + if ($filename == '-' || + strpos($filename, 'vfs://') === 0 || + strpos($filename, 'xdebug://debug-eval') !== false || + strpos($filename, 'eval()\'d code') !== false || + strpos($filename, 'runtime-created function') !== false || + strpos($filename, 'runkit created function') !== false || + strpos($filename, 'assert code') !== false || + strpos($filename, 'regexp code') !== false) { + return false; + } + + return file_exists($filename); + } + + /** + * Checks whether or not a file is filtered. + * + * @param string $filename + * + * @return bool + */ + public function isFiltered($filename) + { + if (!$this->isFile($filename)) { + return true; + } + + $filename = realpath($filename); + + return !isset($this->whitelistedFiles[$filename]); + } + + /** + * Returns the list of whitelisted files. + * + * @return array + */ + public function getWhitelist() + { + return array_keys($this->whitelistedFiles); + } + + /** + * Returns whether this filter has a whitelist. + * + * @return bool + */ + public function hasWhitelist() + { + return !empty($this->whitelistedFiles); + } + + /** + * Returns the whitelisted files. + * + * @return array + */ + public function getWhitelistedFiles() + { + return $this->whitelistedFiles; + } + + /** + * Sets the whitelisted files. + * + * @param array $whitelistedFiles + */ + public function setWhitelistedFiles($whitelistedFiles) + { + $this->whitelistedFiles = $whitelistedFiles; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php new file mode 100644 index 00000000..f3608058 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php @@ -0,0 +1,342 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\Util; + +/** + * Base class for nodes in the code coverage information tree. + */ +abstract class AbstractNode implements \Countable +{ + /** + * @var string + */ + private $name; + + /** + * @var string + */ + private $path; + + /** + * @var array + */ + private $pathArray; + + /** + * @var AbstractNode + */ + private $parent; + + /** + * @var string + */ + private $id; + + /** + * Constructor. + * + * @param string $name + * @param AbstractNode $parent + */ + public function __construct($name, AbstractNode $parent = null) + { + if (substr($name, -1) == '/') { + $name = substr($name, 0, -1); + } + + $this->name = $name; + $this->parent = $parent; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * @return string + */ + public function getId() + { + if ($this->id === null) { + $parent = $this->getParent(); + + if ($parent === null) { + $this->id = 'index'; + } else { + $parentId = $parent->getId(); + + if ($parentId == 'index') { + $this->id = str_replace(':', '_', $this->name); + } else { + $this->id = $parentId . '/' . $this->name; + } + } + } + + return $this->id; + } + + /** + * @return string + */ + public function getPath() + { + if ($this->path === null) { + if ($this->parent === null || $this->parent->getPath() === null || $this->parent->getPath() === false) { + $this->path = $this->name; + } else { + $this->path = $this->parent->getPath() . '/' . $this->name; + } + } + + return $this->path; + } + + /** + * @return array + */ + public function getPathAsArray() + { + if ($this->pathArray === null) { + if ($this->parent === null) { + $this->pathArray = []; + } else { + $this->pathArray = $this->parent->getPathAsArray(); + } + + $this->pathArray[] = $this; + } + + return $this->pathArray; + } + + /** + * @return AbstractNode + */ + public function getParent() + { + return $this->parent; + } + + /** + * Returns the percentage of classes that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedClassesPercent($asString = true) + { + return Util::percent( + $this->getNumTestedClasses(), + $this->getNumClasses(), + $asString + ); + } + + /** + * Returns the percentage of traits that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedTraitsPercent($asString = true) + { + return Util::percent( + $this->getNumTestedTraits(), + $this->getNumTraits(), + $asString + ); + } + + /** + * Returns the percentage of traits that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedClassesAndTraitsPercent($asString = true) + { + return Util::percent( + $this->getNumTestedClassesAndTraits(), + $this->getNumClassesAndTraits(), + $asString + ); + } + + /** + * Returns the percentage of methods that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedMethodsPercent($asString = true) + { + return Util::percent( + $this->getNumTestedMethods(), + $this->getNumMethods(), + $asString + ); + } + + /** + * Returns the percentage of executed lines. + * + * @param bool $asString + * + * @return int + */ + public function getLineExecutedPercent($asString = true) + { + return Util::percent( + $this->getNumExecutedLines(), + $this->getNumExecutableLines(), + $asString + ); + } + + /** + * Returns the number of classes and traits. + * + * @return int + */ + public function getNumClassesAndTraits() + { + return $this->getNumClasses() + $this->getNumTraits(); + } + + /** + * Returns the number of tested classes and traits. + * + * @return int + */ + public function getNumTestedClassesAndTraits() + { + return $this->getNumTestedClasses() + $this->getNumTestedTraits(); + } + + /** + * Returns the classes and traits of this node. + * + * @return array + */ + public function getClassesAndTraits() + { + return array_merge($this->getClasses(), $this->getTraits()); + } + + /** + * Returns the classes of this node. + * + * @return array + */ + abstract public function getClasses(); + + /** + * Returns the traits of this node. + * + * @return array + */ + abstract public function getTraits(); + + /** + * Returns the functions of this node. + * + * @return array + */ + abstract public function getFunctions(); + + /** + * Returns the LOC/CLOC/NCLOC of this node. + * + * @return array + */ + abstract public function getLinesOfCode(); + + /** + * Returns the number of executable lines. + * + * @return int + */ + abstract public function getNumExecutableLines(); + + /** + * Returns the number of executed lines. + * + * @return int + */ + abstract public function getNumExecutedLines(); + + /** + * Returns the number of classes. + * + * @return int + */ + abstract public function getNumClasses(); + + /** + * Returns the number of tested classes. + * + * @return int + */ + abstract public function getNumTestedClasses(); + + /** + * Returns the number of traits. + * + * @return int + */ + abstract public function getNumTraits(); + + /** + * Returns the number of tested traits. + * + * @return int + */ + abstract public function getNumTestedTraits(); + + /** + * Returns the number of methods. + * + * @return int + */ + abstract public function getNumMethods(); + + /** + * Returns the number of tested methods. + * + * @return int + */ + abstract public function getNumTestedMethods(); + + /** + * Returns the number of functions. + * + * @return int + */ + abstract public function getNumFunctions(); + + /** + * Returns the number of tested functions. + * + * @return int + */ + abstract public function getNumTestedFunctions(); +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/Builder.php b/vendor/phpunit/php-code-coverage/src/Node/Builder.php new file mode 100644 index 00000000..8a6a65c1 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/Builder.php @@ -0,0 +1,244 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\CodeCoverage; + +class Builder +{ + /** + * @param CodeCoverage $coverage + * + * @return Directory + */ + public function build(CodeCoverage $coverage) + { + $files = $coverage->getData(); + $commonPath = $this->reducePaths($files); + $root = new Directory( + $commonPath, + null + ); + + $this->addItems( + $root, + $this->buildDirectoryStructure($files), + $coverage->getTests(), + $coverage->getCacheTokens() + ); + + return $root; + } + + /** + * @param Directory $root + * @param array $items + * @param array $tests + * @param bool $cacheTokens + */ + private function addItems(Directory $root, array $items, array $tests, $cacheTokens) + { + foreach ($items as $key => $value) { + if (substr($key, -2) == '/f') { + $key = substr($key, 0, -2); + + if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) { + $root->addFile($key, $value, $tests, $cacheTokens); + } + } else { + $child = $root->addDirectory($key); + $this->addItems($child, $value, $tests, $cacheTokens); + } + } + } + + /** + * Builds an array representation of the directory structure. + * + * For instance, + * + * + * Array + * ( + * [Money.php] => Array + * ( + * ... + * ) + * + * [MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * + * + * is transformed into + * + * + * Array + * ( + * [.] => Array + * ( + * [Money.php] => Array + * ( + * ... + * ) + * + * [MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * ) + * + * + * @param array $files + * + * @return array + */ + private function buildDirectoryStructure($files) + { + $result = []; + + foreach ($files as $path => $file) { + $path = explode('/', $path); + $pointer = &$result; + $max = count($path); + + for ($i = 0; $i < $max; $i++) { + if ($i == ($max - 1)) { + $type = '/f'; + } else { + $type = ''; + } + + $pointer = &$pointer[$path[$i] . $type]; + } + + $pointer = $file; + } + + return $result; + } + + /** + * Reduces the paths by cutting the longest common start path. + * + * For instance, + * + * + * Array + * ( + * [/home/sb/Money/Money.php] => Array + * ( + * ... + * ) + * + * [/home/sb/Money/MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * + * + * is reduced to + * + * + * Array + * ( + * [Money.php] => Array + * ( + * ... + * ) + * + * [MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * + * + * @param array $files + * + * @return string + */ + private function reducePaths(&$files) + { + if (empty($files)) { + return '.'; + } + + $commonPath = ''; + $paths = array_keys($files); + + if (count($files) == 1) { + $commonPath = dirname($paths[0]) . '/'; + $files[basename($paths[0])] = $files[$paths[0]]; + + unset($files[$paths[0]]); + + return $commonPath; + } + + $max = count($paths); + + for ($i = 0; $i < $max; $i++) { + // strip phar:// prefixes + if (strpos($paths[$i], 'phar://') === 0) { + $paths[$i] = substr($paths[$i], 7); + $paths[$i] = strtr($paths[$i], '/', DIRECTORY_SEPARATOR); + } + $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]); + + if (empty($paths[$i][0])) { + $paths[$i][0] = DIRECTORY_SEPARATOR; + } + } + + $done = false; + $max = count($paths); + + while (!$done) { + for ($i = 0; $i < $max - 1; $i++) { + if (!isset($paths[$i][0]) || + !isset($paths[$i+1][0]) || + $paths[$i][0] != $paths[$i+1][0]) { + $done = true; + break; + } + } + + if (!$done) { + $commonPath .= $paths[0][0]; + + if ($paths[0][0] != DIRECTORY_SEPARATOR) { + $commonPath .= DIRECTORY_SEPARATOR; + } + + for ($i = 0; $i < $max; $i++) { + array_shift($paths[$i]); + } + } + } + + $original = array_keys($files); + $max = count($original); + + for ($i = 0; $i < $max; $i++) { + $files[implode('/', $paths[$i])] = $files[$original[$i]]; + unset($files[$original[$i]]); + } + + ksort($files); + + return substr($commonPath, 0, -1); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/Directory.php b/vendor/phpunit/php-code-coverage/src/Node/Directory.php new file mode 100644 index 00000000..6a9f28db --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/Directory.php @@ -0,0 +1,483 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\InvalidArgumentException; + +/** + * Represents a directory in the code coverage information tree. + */ +class Directory extends AbstractNode implements \IteratorAggregate +{ + /** + * @var AbstractNode[] + */ + private $children = []; + + /** + * @var Directory[] + */ + private $directories = []; + + /** + * @var File[] + */ + private $files = []; + + /** + * @var array + */ + private $classes; + + /** + * @var array + */ + private $traits; + + /** + * @var array + */ + private $functions; + + /** + * @var array + */ + private $linesOfCode = null; + + /** + * @var int + */ + private $numFiles = -1; + + /** + * @var int + */ + private $numExecutableLines = -1; + + /** + * @var int + */ + private $numExecutedLines = -1; + + /** + * @var int + */ + private $numClasses = -1; + + /** + * @var int + */ + private $numTestedClasses = -1; + + /** + * @var int + */ + private $numTraits = -1; + + /** + * @var int + */ + private $numTestedTraits = -1; + + /** + * @var int + */ + private $numMethods = -1; + + /** + * @var int + */ + private $numTestedMethods = -1; + + /** + * @var int + */ + private $numFunctions = -1; + + /** + * @var int + */ + private $numTestedFunctions = -1; + + /** + * Returns the number of files in/under this node. + * + * @return int + */ + public function count() + { + if ($this->numFiles == -1) { + $this->numFiles = 0; + + foreach ($this->children as $child) { + $this->numFiles += count($child); + } + } + + return $this->numFiles; + } + + /** + * Returns an iterator for this node. + * + * @return \RecursiveIteratorIterator + */ + public function getIterator() + { + return new \RecursiveIteratorIterator( + new Iterator($this), + \RecursiveIteratorIterator::SELF_FIRST + ); + } + + /** + * Adds a new directory. + * + * @param string $name + * + * @return Directory + */ + public function addDirectory($name) + { + $directory = new self($name, $this); + + $this->children[] = $directory; + $this->directories[] = &$this->children[count($this->children) - 1]; + + return $directory; + } + + /** + * Adds a new file. + * + * @param string $name + * @param array $coverageData + * @param array $testData + * @param bool $cacheTokens + * + * @return File + * + * @throws InvalidArgumentException + */ + public function addFile($name, array $coverageData, array $testData, $cacheTokens) + { + $file = new File( + $name, + $this, + $coverageData, + $testData, + $cacheTokens + ); + + $this->children[] = $file; + $this->files[] = &$this->children[count($this->children) - 1]; + + $this->numExecutableLines = -1; + $this->numExecutedLines = -1; + + return $file; + } + + /** + * Returns the directories in this directory. + * + * @return array + */ + public function getDirectories() + { + return $this->directories; + } + + /** + * Returns the files in this directory. + * + * @return array + */ + public function getFiles() + { + return $this->files; + } + + /** + * Returns the child nodes of this node. + * + * @return array + */ + public function getChildNodes() + { + return $this->children; + } + + /** + * Returns the classes of this node. + * + * @return array + */ + public function getClasses() + { + if ($this->classes === null) { + $this->classes = []; + + foreach ($this->children as $child) { + $this->classes = array_merge( + $this->classes, + $child->getClasses() + ); + } + } + + return $this->classes; + } + + /** + * Returns the traits of this node. + * + * @return array + */ + public function getTraits() + { + if ($this->traits === null) { + $this->traits = []; + + foreach ($this->children as $child) { + $this->traits = array_merge( + $this->traits, + $child->getTraits() + ); + } + } + + return $this->traits; + } + + /** + * Returns the functions of this node. + * + * @return array + */ + public function getFunctions() + { + if ($this->functions === null) { + $this->functions = []; + + foreach ($this->children as $child) { + $this->functions = array_merge( + $this->functions, + $child->getFunctions() + ); + } + } + + return $this->functions; + } + + /** + * Returns the LOC/CLOC/NCLOC of this node. + * + * @return array + */ + public function getLinesOfCode() + { + if ($this->linesOfCode === null) { + $this->linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0]; + + foreach ($this->children as $child) { + $linesOfCode = $child->getLinesOfCode(); + + $this->linesOfCode['loc'] += $linesOfCode['loc']; + $this->linesOfCode['cloc'] += $linesOfCode['cloc']; + $this->linesOfCode['ncloc'] += $linesOfCode['ncloc']; + } + } + + return $this->linesOfCode; + } + + /** + * Returns the number of executable lines. + * + * @return int + */ + public function getNumExecutableLines() + { + if ($this->numExecutableLines == -1) { + $this->numExecutableLines = 0; + + foreach ($this->children as $child) { + $this->numExecutableLines += $child->getNumExecutableLines(); + } + } + + return $this->numExecutableLines; + } + + /** + * Returns the number of executed lines. + * + * @return int + */ + public function getNumExecutedLines() + { + if ($this->numExecutedLines == -1) { + $this->numExecutedLines = 0; + + foreach ($this->children as $child) { + $this->numExecutedLines += $child->getNumExecutedLines(); + } + } + + return $this->numExecutedLines; + } + + /** + * Returns the number of classes. + * + * @return int + */ + public function getNumClasses() + { + if ($this->numClasses == -1) { + $this->numClasses = 0; + + foreach ($this->children as $child) { + $this->numClasses += $child->getNumClasses(); + } + } + + return $this->numClasses; + } + + /** + * Returns the number of tested classes. + * + * @return int + */ + public function getNumTestedClasses() + { + if ($this->numTestedClasses == -1) { + $this->numTestedClasses = 0; + + foreach ($this->children as $child) { + $this->numTestedClasses += $child->getNumTestedClasses(); + } + } + + return $this->numTestedClasses; + } + + /** + * Returns the number of traits. + * + * @return int + */ + public function getNumTraits() + { + if ($this->numTraits == -1) { + $this->numTraits = 0; + + foreach ($this->children as $child) { + $this->numTraits += $child->getNumTraits(); + } + } + + return $this->numTraits; + } + + /** + * Returns the number of tested traits. + * + * @return int + */ + public function getNumTestedTraits() + { + if ($this->numTestedTraits == -1) { + $this->numTestedTraits = 0; + + foreach ($this->children as $child) { + $this->numTestedTraits += $child->getNumTestedTraits(); + } + } + + return $this->numTestedTraits; + } + + /** + * Returns the number of methods. + * + * @return int + */ + public function getNumMethods() + { + if ($this->numMethods == -1) { + $this->numMethods = 0; + + foreach ($this->children as $child) { + $this->numMethods += $child->getNumMethods(); + } + } + + return $this->numMethods; + } + + /** + * Returns the number of tested methods. + * + * @return int + */ + public function getNumTestedMethods() + { + if ($this->numTestedMethods == -1) { + $this->numTestedMethods = 0; + + foreach ($this->children as $child) { + $this->numTestedMethods += $child->getNumTestedMethods(); + } + } + + return $this->numTestedMethods; + } + + /** + * Returns the number of functions. + * + * @return int + */ + public function getNumFunctions() + { + if ($this->numFunctions == -1) { + $this->numFunctions = 0; + + foreach ($this->children as $child) { + $this->numFunctions += $child->getNumFunctions(); + } + } + + return $this->numFunctions; + } + + /** + * Returns the number of tested functions. + * + * @return int + */ + public function getNumTestedFunctions() + { + if ($this->numTestedFunctions == -1) { + $this->numTestedFunctions = 0; + + foreach ($this->children as $child) { + $this->numTestedFunctions += $child->getNumTestedFunctions(); + } + } + + return $this->numTestedFunctions; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/File.php b/vendor/phpunit/php-code-coverage/src/Node/File.php new file mode 100644 index 00000000..44856f07 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/File.php @@ -0,0 +1,722 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\InvalidArgumentException; + +/** + * Represents a file in the code coverage information tree. + */ +class File extends AbstractNode +{ + /** + * @var array + */ + private $coverageData; + + /** + * @var array + */ + private $testData; + + /** + * @var int + */ + private $numExecutableLines = 0; + + /** + * @var int + */ + private $numExecutedLines = 0; + + /** + * @var array + */ + private $classes = []; + + /** + * @var array + */ + private $traits = []; + + /** + * @var array + */ + private $functions = []; + + /** + * @var array + */ + private $linesOfCode = []; + + /** + * @var int + */ + private $numClasses = null; + + /** + * @var int + */ + private $numTestedClasses = 0; + + /** + * @var int + */ + private $numTraits = null; + + /** + * @var int + */ + private $numTestedTraits = 0; + + /** + * @var int + */ + private $numMethods = null; + + /** + * @var int + */ + private $numTestedMethods = null; + + /** + * @var int + */ + private $numTestedFunctions = null; + + /** + * @var array + */ + private $startLines = []; + + /** + * @var array + */ + private $endLines = []; + + /** + * @var bool + */ + private $cacheTokens; + + /** + * Constructor. + * + * @param string $name + * @param AbstractNode $parent + * @param array $coverageData + * @param array $testData + * @param bool $cacheTokens + * + * @throws InvalidArgumentException + */ + public function __construct($name, AbstractNode $parent, array $coverageData, array $testData, $cacheTokens) + { + if (!is_bool($cacheTokens)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + parent::__construct($name, $parent); + + $this->coverageData = $coverageData; + $this->testData = $testData; + $this->cacheTokens = $cacheTokens; + + $this->calculateStatistics(); + } + + /** + * Returns the number of files in/under this node. + * + * @return int + */ + public function count() + { + return 1; + } + + /** + * Returns the code coverage data of this node. + * + * @return array + */ + public function getCoverageData() + { + return $this->coverageData; + } + + /** + * Returns the test data of this node. + * + * @return array + */ + public function getTestData() + { + return $this->testData; + } + + /** + * Returns the classes of this node. + * + * @return array + */ + public function getClasses() + { + return $this->classes; + } + + /** + * Returns the traits of this node. + * + * @return array + */ + public function getTraits() + { + return $this->traits; + } + + /** + * Returns the functions of this node. + * + * @return array + */ + public function getFunctions() + { + return $this->functions; + } + + /** + * Returns the LOC/CLOC/NCLOC of this node. + * + * @return array + */ + public function getLinesOfCode() + { + return $this->linesOfCode; + } + + /** + * Returns the number of executable lines. + * + * @return int + */ + public function getNumExecutableLines() + { + return $this->numExecutableLines; + } + + /** + * Returns the number of executed lines. + * + * @return int + */ + public function getNumExecutedLines() + { + return $this->numExecutedLines; + } + + /** + * Returns the number of classes. + * + * @return int + */ + public function getNumClasses() + { + if ($this->numClasses === null) { + $this->numClasses = 0; + + foreach ($this->classes as $class) { + foreach ($class['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numClasses++; + + continue 2; + } + } + } + } + + return $this->numClasses; + } + + /** + * Returns the number of tested classes. + * + * @return int + */ + public function getNumTestedClasses() + { + return $this->numTestedClasses; + } + + /** + * Returns the number of traits. + * + * @return int + */ + public function getNumTraits() + { + if ($this->numTraits === null) { + $this->numTraits = 0; + + foreach ($this->traits as $trait) { + foreach ($trait['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numTraits++; + + continue 2; + } + } + } + } + + return $this->numTraits; + } + + /** + * Returns the number of tested traits. + * + * @return int + */ + public function getNumTestedTraits() + { + return $this->numTestedTraits; + } + + /** + * Returns the number of methods. + * + * @return int + */ + public function getNumMethods() + { + if ($this->numMethods === null) { + $this->numMethods = 0; + + foreach ($this->classes as $class) { + foreach ($class['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numMethods++; + } + } + } + + foreach ($this->traits as $trait) { + foreach ($trait['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numMethods++; + } + } + } + } + + return $this->numMethods; + } + + /** + * Returns the number of tested methods. + * + * @return int + */ + public function getNumTestedMethods() + { + if ($this->numTestedMethods === null) { + $this->numTestedMethods = 0; + + foreach ($this->classes as $class) { + foreach ($class['methods'] as $method) { + if ($method['executableLines'] > 0 && + $method['coverage'] == 100) { + $this->numTestedMethods++; + } + } + } + + foreach ($this->traits as $trait) { + foreach ($trait['methods'] as $method) { + if ($method['executableLines'] > 0 && + $method['coverage'] == 100) { + $this->numTestedMethods++; + } + } + } + } + + return $this->numTestedMethods; + } + + /** + * Returns the number of functions. + * + * @return int + */ + public function getNumFunctions() + { + return count($this->functions); + } + + /** + * Returns the number of tested functions. + * + * @return int + */ + public function getNumTestedFunctions() + { + if ($this->numTestedFunctions === null) { + $this->numTestedFunctions = 0; + + foreach ($this->functions as $function) { + if ($function['executableLines'] > 0 && + $function['coverage'] == 100) { + $this->numTestedFunctions++; + } + } + } + + return $this->numTestedFunctions; + } + + /** + * Calculates coverage statistics for the file. + */ + protected function calculateStatistics() + { + $classStack = $functionStack = []; + + if ($this->cacheTokens) { + $tokens = \PHP_Token_Stream_CachingFactory::get($this->getPath()); + } else { + $tokens = new \PHP_Token_Stream($this->getPath()); + } + + $this->processClasses($tokens); + $this->processTraits($tokens); + $this->processFunctions($tokens); + $this->linesOfCode = $tokens->getLinesOfCode(); + unset($tokens); + + for ($lineNumber = 1; $lineNumber <= $this->linesOfCode['loc']; $lineNumber++) { + if (isset($this->startLines[$lineNumber])) { + // Start line of a class. + if (isset($this->startLines[$lineNumber]['className'])) { + if (isset($currentClass)) { + $classStack[] = &$currentClass; + } + + $currentClass = &$this->startLines[$lineNumber]; + } // Start line of a trait. + elseif (isset($this->startLines[$lineNumber]['traitName'])) { + $currentTrait = &$this->startLines[$lineNumber]; + } // Start line of a method. + elseif (isset($this->startLines[$lineNumber]['methodName'])) { + $currentMethod = &$this->startLines[$lineNumber]; + } // Start line of a function. + elseif (isset($this->startLines[$lineNumber]['functionName'])) { + if (isset($currentFunction)) { + $functionStack[] = &$currentFunction; + } + + $currentFunction = &$this->startLines[$lineNumber]; + } + } + + if (isset($this->coverageData[$lineNumber])) { + if (isset($currentClass)) { + $currentClass['executableLines']++; + } + + if (isset($currentTrait)) { + $currentTrait['executableLines']++; + } + + if (isset($currentMethod)) { + $currentMethod['executableLines']++; + } + + if (isset($currentFunction)) { + $currentFunction['executableLines']++; + } + + $this->numExecutableLines++; + + if (count($this->coverageData[$lineNumber]) > 0) { + if (isset($currentClass)) { + $currentClass['executedLines']++; + } + + if (isset($currentTrait)) { + $currentTrait['executedLines']++; + } + + if (isset($currentMethod)) { + $currentMethod['executedLines']++; + } + + if (isset($currentFunction)) { + $currentFunction['executedLines']++; + } + + $this->numExecutedLines++; + } + } + + if (isset($this->endLines[$lineNumber])) { + // End line of a class. + if (isset($this->endLines[$lineNumber]['className'])) { + unset($currentClass); + + if ($classStack) { + end($classStack); + $key = key($classStack); + $currentClass = &$classStack[$key]; + unset($classStack[$key]); + } + } // End line of a trait. + elseif (isset($this->endLines[$lineNumber]['traitName'])) { + unset($currentTrait); + } // End line of a method. + elseif (isset($this->endLines[$lineNumber]['methodName'])) { + unset($currentMethod); + } // End line of a function. + elseif (isset($this->endLines[$lineNumber]['functionName'])) { + unset($currentFunction); + + if ($functionStack) { + end($functionStack); + $key = key($functionStack); + $currentFunction = &$functionStack[$key]; + unset($functionStack[$key]); + } + } + } + } + + foreach ($this->traits as &$trait) { + foreach ($trait['methods'] as &$method) { + if ($method['executableLines'] > 0) { + $method['coverage'] = ($method['executedLines'] / + $method['executableLines']) * 100; + } else { + $method['coverage'] = 100; + } + + $method['crap'] = $this->crap( + $method['ccn'], + $method['coverage'] + ); + + $trait['ccn'] += $method['ccn']; + } + + if ($trait['executableLines'] > 0) { + $trait['coverage'] = ($trait['executedLines'] / + $trait['executableLines']) * 100; + + if ($trait['coverage'] == 100) { + $this->numTestedClasses++; + } + } else { + $trait['coverage'] = 100; + } + + $trait['crap'] = $this->crap( + $trait['ccn'], + $trait['coverage'] + ); + } + + foreach ($this->classes as &$class) { + foreach ($class['methods'] as &$method) { + if ($method['executableLines'] > 0) { + $method['coverage'] = ($method['executedLines'] / + $method['executableLines']) * 100; + } else { + $method['coverage'] = 100; + } + + $method['crap'] = $this->crap( + $method['ccn'], + $method['coverage'] + ); + + $class['ccn'] += $method['ccn']; + } + + if ($class['executableLines'] > 0) { + $class['coverage'] = ($class['executedLines'] / + $class['executableLines']) * 100; + + if ($class['coverage'] == 100) { + $this->numTestedClasses++; + } + } else { + $class['coverage'] = 100; + } + + $class['crap'] = $this->crap( + $class['ccn'], + $class['coverage'] + ); + } + } + + /** + * @param \PHP_Token_Stream $tokens + */ + protected function processClasses(\PHP_Token_Stream $tokens) + { + $classes = $tokens->getClasses(); + unset($tokens); + + $link = $this->getId() . '.html#'; + + foreach ($classes as $className => $class) { + $this->classes[$className] = [ + 'className' => $className, + 'methods' => [], + 'startLine' => $class['startLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => 0, + 'coverage' => 0, + 'crap' => 0, + 'package' => $class['package'], + 'link' => $link . $class['startLine'] + ]; + + $this->startLines[$class['startLine']] = &$this->classes[$className]; + $this->endLines[$class['endLine']] = &$this->classes[$className]; + + foreach ($class['methods'] as $methodName => $method) { + $this->classes[$className]['methods'][$methodName] = $this->newMethod($methodName, $method, $link); + + $this->startLines[$method['startLine']] = &$this->classes[$className]['methods'][$methodName]; + $this->endLines[$method['endLine']] = &$this->classes[$className]['methods'][$methodName]; + } + } + } + + /** + * @param \PHP_Token_Stream $tokens + */ + protected function processTraits(\PHP_Token_Stream $tokens) + { + $traits = $tokens->getTraits(); + unset($tokens); + + $link = $this->getId() . '.html#'; + + foreach ($traits as $traitName => $trait) { + $this->traits[$traitName] = [ + 'traitName' => $traitName, + 'methods' => [], + 'startLine' => $trait['startLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => 0, + 'coverage' => 0, + 'crap' => 0, + 'package' => $trait['package'], + 'link' => $link . $trait['startLine'] + ]; + + $this->startLines[$trait['startLine']] = &$this->traits[$traitName]; + $this->endLines[$trait['endLine']] = &$this->traits[$traitName]; + + foreach ($trait['methods'] as $methodName => $method) { + $this->traits[$traitName]['methods'][$methodName] = $this->newMethod($methodName, $method, $link); + + $this->startLines[$method['startLine']] = &$this->traits[$traitName]['methods'][$methodName]; + $this->endLines[$method['endLine']] = &$this->traits[$traitName]['methods'][$methodName]; + } + } + } + + /** + * @param \PHP_Token_Stream $tokens + */ + protected function processFunctions(\PHP_Token_Stream $tokens) + { + $functions = $tokens->getFunctions(); + unset($tokens); + + $link = $this->getId() . '.html#'; + + foreach ($functions as $functionName => $function) { + $this->functions[$functionName] = [ + 'functionName' => $functionName, + 'signature' => $function['signature'], + 'startLine' => $function['startLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => $function['ccn'], + 'coverage' => 0, + 'crap' => 0, + 'link' => $link . $function['startLine'] + ]; + + $this->startLines[$function['startLine']] = &$this->functions[$functionName]; + $this->endLines[$function['endLine']] = &$this->functions[$functionName]; + } + } + + /** + * Calculates the Change Risk Anti-Patterns (CRAP) index for a unit of code + * based on its cyclomatic complexity and percentage of code coverage. + * + * @param int $ccn + * @param float $coverage + * + * @return string + */ + protected function crap($ccn, $coverage) + { + if ($coverage == 0) { + return (string) (pow($ccn, 2) + $ccn); + } + + if ($coverage >= 95) { + return (string) $ccn; + } + + return sprintf( + '%01.2F', + pow($ccn, 2) * pow(1 - $coverage/100, 3) + $ccn + ); + } + + /** + * @param string $methodName + * @param array $method + * @param string $link + * + * @return array + */ + private function newMethod($methodName, array $method, $link) + { + return [ + 'methodName' => $methodName, + 'visibility' => $method['visibility'], + 'signature' => $method['signature'], + 'startLine' => $method['startLine'], + 'endLine' => $method['endLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => $method['ccn'], + 'coverage' => 0, + 'crap' => 0, + 'link' => $link . $method['startLine'], + ]; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/Iterator.php b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php new file mode 100644 index 00000000..e2463805 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php @@ -0,0 +1,103 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +/** + * Recursive iterator for node object graphs. + */ +class Iterator implements \RecursiveIterator +{ + /** + * @var int + */ + private $position; + + /** + * @var AbstractNode[] + */ + private $nodes; + + /** + * @param Directory $node + */ + public function __construct(Directory $node) + { + $this->nodes = $node->getChildNodes(); + } + + /** + * Rewinds the Iterator to the first element. + */ + public function rewind() + { + $this->position = 0; + } + + /** + * Checks if there is a current element after calls to rewind() or next(). + * + * @return bool + */ + public function valid() + { + return $this->position < count($this->nodes); + } + + /** + * Returns the key of the current element. + * + * @return int + */ + public function key() + { + return $this->position; + } + + /** + * Returns the current element. + * + * @return \PHPUnit_Framework_Test + */ + public function current() + { + return $this->valid() ? $this->nodes[$this->position] : null; + } + + /** + * Moves forward to next element. + */ + public function next() + { + $this->position++; + } + + /** + * Returns the sub iterator for the current element. + * + * @return Iterator + */ + public function getChildren() + { + return new self( + $this->nodes[$this->position] + ); + } + + /** + * Checks whether the current element has children. + * + * @return bool + */ + public function hasChildren() + { + return $this->nodes[$this->position] instanceof Directory; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Clover.php b/vendor/phpunit/php-code-coverage/src/Report/Clover.php new file mode 100644 index 00000000..054b1dfd --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Clover.php @@ -0,0 +1,251 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Node\File; + +/** + * Generates a Clover XML logfile from a code coverage object. + */ +class Clover +{ + /** + * @param CodeCoverage $coverage + * @param string $target + * @param string $name + * + * @return string + */ + public function process(CodeCoverage $coverage, $target = null, $name = null) + { + $xmlDocument = new \DOMDocument('1.0', 'UTF-8'); + $xmlDocument->formatOutput = true; + + $xmlCoverage = $xmlDocument->createElement('coverage'); + $xmlCoverage->setAttribute('generated', (int) $_SERVER['REQUEST_TIME']); + $xmlDocument->appendChild($xmlCoverage); + + $xmlProject = $xmlDocument->createElement('project'); + $xmlProject->setAttribute('timestamp', (int) $_SERVER['REQUEST_TIME']); + + if (is_string($name)) { + $xmlProject->setAttribute('name', $name); + } + + $xmlCoverage->appendChild($xmlProject); + + $packages = []; + $report = $coverage->getReport(); + unset($coverage); + + foreach ($report as $item) { + if (!$item instanceof File) { + continue; + } + + /* @var File $item */ + + $xmlFile = $xmlDocument->createElement('file'); + $xmlFile->setAttribute('name', $item->getPath()); + + $classes = $item->getClassesAndTraits(); + $coverage = $item->getCoverageData(); + $lines = []; + $namespace = 'global'; + + foreach ($classes as $className => $class) { + $classStatements = 0; + $coveredClassStatements = 0; + $coveredMethods = 0; + $classMethods = 0; + + foreach ($class['methods'] as $methodName => $method) { + if ($method['executableLines'] == 0) { + continue; + } + + $classMethods++; + $classStatements += $method['executableLines']; + $coveredClassStatements += $method['executedLines']; + + if ($method['coverage'] == 100) { + $coveredMethods++; + } + + $methodCount = 0; + + foreach (range($method['startLine'], $method['endLine']) as $line) { + if (isset($coverage[$line]) && ($coverage[$line] !== null)) { + $methodCount = max($methodCount, count($coverage[$line])); + } + } + + $lines[$method['startLine']] = [ + 'ccn' => $method['ccn'], + 'count' => $methodCount, + 'crap' => $method['crap'], + 'type' => 'method', + 'visibility' => $method['visibility'], + 'name' => $methodName + ]; + } + + if (!empty($class['package']['namespace'])) { + $namespace = $class['package']['namespace']; + } + + $xmlClass = $xmlDocument->createElement('class'); + $xmlClass->setAttribute('name', $className); + $xmlClass->setAttribute('namespace', $namespace); + + if (!empty($class['package']['fullPackage'])) { + $xmlClass->setAttribute( + 'fullPackage', + $class['package']['fullPackage'] + ); + } + + if (!empty($class['package']['category'])) { + $xmlClass->setAttribute( + 'category', + $class['package']['category'] + ); + } + + if (!empty($class['package']['package'])) { + $xmlClass->setAttribute( + 'package', + $class['package']['package'] + ); + } + + if (!empty($class['package']['subpackage'])) { + $xmlClass->setAttribute( + 'subpackage', + $class['package']['subpackage'] + ); + } + + $xmlFile->appendChild($xmlClass); + + $xmlMetrics = $xmlDocument->createElement('metrics'); + $xmlMetrics->setAttribute('complexity', $class['ccn']); + $xmlMetrics->setAttribute('methods', $classMethods); + $xmlMetrics->setAttribute('coveredmethods', $coveredMethods); + $xmlMetrics->setAttribute('conditionals', 0); + $xmlMetrics->setAttribute('coveredconditionals', 0); + $xmlMetrics->setAttribute('statements', $classStatements); + $xmlMetrics->setAttribute('coveredstatements', $coveredClassStatements); + $xmlMetrics->setAttribute('elements', $classMethods + $classStatements /* + conditionals */); + $xmlMetrics->setAttribute('coveredelements', $coveredMethods + $coveredClassStatements /* + coveredconditionals */); + $xmlClass->appendChild($xmlMetrics); + } + + foreach ($coverage as $line => $data) { + if ($data === null || isset($lines[$line])) { + continue; + } + + $lines[$line] = [ + 'count' => count($data), 'type' => 'stmt' + ]; + } + + ksort($lines); + + foreach ($lines as $line => $data) { + $xmlLine = $xmlDocument->createElement('line'); + $xmlLine->setAttribute('num', $line); + $xmlLine->setAttribute('type', $data['type']); + + if (isset($data['name'])) { + $xmlLine->setAttribute('name', $data['name']); + } + + if (isset($data['visibility'])) { + $xmlLine->setAttribute('visibility', $data['visibility']); + } + + if (isset($data['ccn'])) { + $xmlLine->setAttribute('complexity', $data['ccn']); + } + + if (isset($data['crap'])) { + $xmlLine->setAttribute('crap', $data['crap']); + } + + $xmlLine->setAttribute('count', $data['count']); + $xmlFile->appendChild($xmlLine); + } + + $linesOfCode = $item->getLinesOfCode(); + + $xmlMetrics = $xmlDocument->createElement('metrics'); + $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); + $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); + $xmlMetrics->setAttribute('classes', $item->getNumClassesAndTraits()); + $xmlMetrics->setAttribute('methods', $item->getNumMethods()); + $xmlMetrics->setAttribute('coveredmethods', $item->getNumTestedMethods()); + $xmlMetrics->setAttribute('conditionals', 0); + $xmlMetrics->setAttribute('coveredconditionals', 0); + $xmlMetrics->setAttribute('statements', $item->getNumExecutableLines()); + $xmlMetrics->setAttribute('coveredstatements', $item->getNumExecutedLines()); + $xmlMetrics->setAttribute('elements', $item->getNumMethods() + $item->getNumExecutableLines() /* + conditionals */); + $xmlMetrics->setAttribute('coveredelements', $item->getNumTestedMethods() + $item->getNumExecutedLines() /* + coveredconditionals */); + $xmlFile->appendChild($xmlMetrics); + + if ($namespace == 'global') { + $xmlProject->appendChild($xmlFile); + } else { + if (!isset($packages[$namespace])) { + $packages[$namespace] = $xmlDocument->createElement( + 'package' + ); + + $packages[$namespace]->setAttribute('name', $namespace); + $xmlProject->appendChild($packages[$namespace]); + } + + $packages[$namespace]->appendChild($xmlFile); + } + } + + $linesOfCode = $report->getLinesOfCode(); + + $xmlMetrics = $xmlDocument->createElement('metrics'); + $xmlMetrics->setAttribute('files', count($report)); + $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); + $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); + $xmlMetrics->setAttribute('classes', $report->getNumClassesAndTraits()); + $xmlMetrics->setAttribute('methods', $report->getNumMethods()); + $xmlMetrics->setAttribute('coveredmethods', $report->getNumTestedMethods()); + $xmlMetrics->setAttribute('conditionals', 0); + $xmlMetrics->setAttribute('coveredconditionals', 0); + $xmlMetrics->setAttribute('statements', $report->getNumExecutableLines()); + $xmlMetrics->setAttribute('coveredstatements', $report->getNumExecutedLines()); + $xmlMetrics->setAttribute('elements', $report->getNumMethods() + $report->getNumExecutableLines() /* + conditionals */); + $xmlMetrics->setAttribute('coveredelements', $report->getNumTestedMethods() + $report->getNumExecutedLines() /* + coveredconditionals */); + $xmlProject->appendChild($xmlMetrics); + + $buffer = $xmlDocument->saveXML(); + + if ($target !== null) { + if (!is_dir(dirname($target))) { + mkdir(dirname($target), 0777, true); + } + + file_put_contents($target, $buffer); + } + + return $buffer; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php new file mode 100644 index 00000000..7adf78fe --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php @@ -0,0 +1,172 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Node\File; +use SebastianBergmann\CodeCoverage\InvalidArgumentException; + +class Crap4j +{ + /** + * @var int + */ + private $threshold; + + /** + * @param int $threshold + */ + public function __construct($threshold = 30) + { + if (!is_int($threshold)) { + throw InvalidArgumentException::create( + 1, + 'integer' + ); + } + + $this->threshold = $threshold; + } + + /** + * @param CodeCoverage $coverage + * @param string $target + * @param string $name + * + * @return string + */ + public function process(CodeCoverage $coverage, $target = null, $name = null) + { + $document = new \DOMDocument('1.0', 'UTF-8'); + $document->formatOutput = true; + + $root = $document->createElement('crap_result'); + $document->appendChild($root); + + $project = $document->createElement('project', is_string($name) ? $name : ''); + $root->appendChild($project); + $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s', (int) $_SERVER['REQUEST_TIME']))); + + $stats = $document->createElement('stats'); + $methodsNode = $document->createElement('methods'); + + $report = $coverage->getReport(); + unset($coverage); + + $fullMethodCount = 0; + $fullCrapMethodCount = 0; + $fullCrapLoad = 0; + $fullCrap = 0; + + foreach ($report as $item) { + $namespace = 'global'; + + if (!$item instanceof File) { + continue; + } + + $file = $document->createElement('file'); + $file->setAttribute('name', $item->getPath()); + + $classes = $item->getClassesAndTraits(); + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + $crapLoad = $this->getCrapLoad($method['crap'], $method['ccn'], $method['coverage']); + + $fullCrap += $method['crap']; + $fullCrapLoad += $crapLoad; + $fullMethodCount++; + + if ($method['crap'] >= $this->threshold) { + $fullCrapMethodCount++; + } + + $methodNode = $document->createElement('method'); + + if (!empty($class['package']['namespace'])) { + $namespace = $class['package']['namespace']; + } + + $methodNode->appendChild($document->createElement('package', $namespace)); + $methodNode->appendChild($document->createElement('className', $className)); + $methodNode->appendChild($document->createElement('methodName', $methodName)); + $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature']))); + $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature']))); + $methodNode->appendChild($document->createElement('crap', $this->roundValue($method['crap']))); + $methodNode->appendChild($document->createElement('complexity', $method['ccn'])); + $methodNode->appendChild($document->createElement('coverage', $this->roundValue($method['coverage']))); + $methodNode->appendChild($document->createElement('crapLoad', round($crapLoad))); + + $methodsNode->appendChild($methodNode); + } + } + } + + $stats->appendChild($document->createElement('name', 'Method Crap Stats')); + $stats->appendChild($document->createElement('methodCount', $fullMethodCount)); + $stats->appendChild($document->createElement('crapMethodCount', $fullCrapMethodCount)); + $stats->appendChild($document->createElement('crapLoad', round($fullCrapLoad))); + $stats->appendChild($document->createElement('totalCrap', $fullCrap)); + + if ($fullMethodCount > 0) { + $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount); + } else { + $crapMethodPercent = 0; + } + + $stats->appendChild($document->createElement('crapMethodPercent', $crapMethodPercent)); + + $root->appendChild($stats); + $root->appendChild($methodsNode); + + $buffer = $document->saveXML(); + + if ($target !== null) { + if (!is_dir(dirname($target))) { + mkdir(dirname($target), 0777, true); + } + + file_put_contents($target, $buffer); + } + + return $buffer; + } + + /** + * @param float $crapValue + * @param int $cyclomaticComplexity + * @param float $coveragePercent + * + * @return float + */ + private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent) + { + $crapLoad = 0; + + if ($crapValue >= $this->threshold) { + $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100); + $crapLoad += $cyclomaticComplexity / $this->threshold; + } + + return $crapLoad; + } + + /** + * @param float $value + * + * @return float + */ + private function roundValue($value) + { + return round($value, 2); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php new file mode 100644 index 00000000..adcfe424 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php @@ -0,0 +1,179 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; +use SebastianBergmann\CodeCoverage\RuntimeException; + +/** + * Generates an HTML report from a code coverage object. + */ +class Facade +{ + /** + * @var string + */ + private $templatePath; + + /** + * @var string + */ + private $generator; + + /** + * @var int + */ + private $lowUpperBound; + + /** + * @var int + */ + private $highLowerBound; + + /** + * Constructor. + * + * @param int $lowUpperBound + * @param int $highLowerBound + * @param string $generator + */ + public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '') + { + $this->generator = $generator; + $this->highLowerBound = $highLowerBound; + $this->lowUpperBound = $lowUpperBound; + $this->templatePath = __DIR__ . '/Renderer/Template/'; + } + + /** + * @param CodeCoverage $coverage + * @param string $target + */ + public function process(CodeCoverage $coverage, $target) + { + $target = $this->getDirectory($target); + $report = $coverage->getReport(); + unset($coverage); + + if (!isset($_SERVER['REQUEST_TIME'])) { + $_SERVER['REQUEST_TIME'] = time(); + } + + $date = date('D M j G:i:s T Y', $_SERVER['REQUEST_TIME']); + + $dashboard = new Dashboard( + $this->templatePath, + $this->generator, + $date, + $this->lowUpperBound, + $this->highLowerBound + ); + + $directory = new Directory( + $this->templatePath, + $this->generator, + $date, + $this->lowUpperBound, + $this->highLowerBound + ); + + $file = new File( + $this->templatePath, + $this->generator, + $date, + $this->lowUpperBound, + $this->highLowerBound + ); + + $directory->render($report, $target . 'index.html'); + $dashboard->render($report, $target . 'dashboard.html'); + + foreach ($report as $node) { + $id = $node->getId(); + + if ($node instanceof DirectoryNode) { + if (!file_exists($target . $id)) { + mkdir($target . $id, 0777, true); + } + + $directory->render($node, $target . $id . '/index.html'); + $dashboard->render($node, $target . $id . '/dashboard.html'); + } else { + $dir = dirname($target . $id); + + if (!file_exists($dir)) { + mkdir($dir, 0777, true); + } + + $file->render($node, $target . $id . '.html'); + } + } + + $this->copyFiles($target); + } + + /** + * @param string $target + */ + private function copyFiles($target) + { + $dir = $this->getDirectory($target . 'css'); + copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css'); + copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css'); + copy($this->templatePath . 'css/style.css', $dir . 'style.css'); + + $dir = $this->getDirectory($target . 'fonts'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.eot', $dir . 'glyphicons-halflings-regular.eot'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.svg', $dir . 'glyphicons-halflings-regular.svg'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.ttf', $dir . 'glyphicons-halflings-regular.ttf'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff', $dir . 'glyphicons-halflings-regular.woff'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff2', $dir . 'glyphicons-halflings-regular.woff2'); + + $dir = $this->getDirectory($target . 'js'); + copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js'); + copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js'); + copy($this->templatePath . 'js/holder.min.js', $dir . 'holder.min.js'); + copy($this->templatePath . 'js/html5shiv.min.js', $dir . 'html5shiv.min.js'); + copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js'); + copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js'); + copy($this->templatePath . 'js/respond.min.js', $dir . 'respond.min.js'); + } + + /** + * @param string $directory + * + * @return string + * + * @throws RuntimeException + */ + private function getDirectory($directory) + { + if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) { + $directory .= DIRECTORY_SEPARATOR; + } + + if (is_dir($directory)) { + return $directory; + } + + if (@mkdir($directory, 0777, true)) { + return $directory; + } + + throw new RuntimeException( + sprintf( + 'Directory "%s" does not exist.', + $directory + ) + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php new file mode 100644 index 00000000..e5a2f0d0 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php @@ -0,0 +1,298 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\AbstractNode; +use SebastianBergmann\CodeCoverage\Node\File as FileNode; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; +use SebastianBergmann\Environment\Runtime; +use SebastianBergmann\Version; + +/** + * Base class for node renderers. + */ +abstract class Renderer +{ + /** + * @var string + */ + protected $templatePath; + + /** + * @var string + */ + protected $generator; + + /** + * @var string + */ + protected $date; + + /** + * @var int + */ + protected $lowUpperBound; + + /** + * @var int + */ + protected $highLowerBound; + + /** + * @var string + */ + protected $version; + + /** + * Constructor. + * + * @param string $templatePath + * @param string $generator + * @param string $date + * @param int $lowUpperBound + * @param int $highLowerBound + */ + public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) + { + $version = new Version('4.0.7', dirname(dirname(dirname(dirname(__DIR__))))); + + $this->templatePath = $templatePath; + $this->generator = $generator; + $this->date = $date; + $this->lowUpperBound = $lowUpperBound; + $this->highLowerBound = $highLowerBound; + $this->version = $version->getVersion(); + } + + /** + * @param \Text_Template $template + * @param array $data + * + * @return string + */ + protected function renderItemTemplate(\Text_Template $template, array $data) + { + $numSeparator = ' / '; + + if (isset($data['numClasses']) && $data['numClasses'] > 0) { + $classesLevel = $this->getColorLevel($data['testedClassesPercent']); + + $classesNumber = $data['numTestedClasses'] . $numSeparator . + $data['numClasses']; + + $classesBar = $this->getCoverageBar( + $data['testedClassesPercent'] + ); + } else { + $classesLevel = ''; + $classesNumber = '0' . $numSeparator . '0'; + $classesBar = ''; + $data['testedClassesPercentAsString'] = 'n/a'; + } + + if ($data['numMethods'] > 0) { + $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']); + + $methodsNumber = $data['numTestedMethods'] . $numSeparator . + $data['numMethods']; + + $methodsBar = $this->getCoverageBar( + $data['testedMethodsPercent'] + ); + } else { + $methodsLevel = ''; + $methodsNumber = '0' . $numSeparator . '0'; + $methodsBar = ''; + $data['testedMethodsPercentAsString'] = 'n/a'; + } + + if ($data['numExecutableLines'] > 0) { + $linesLevel = $this->getColorLevel($data['linesExecutedPercent']); + + $linesNumber = $data['numExecutedLines'] . $numSeparator . + $data['numExecutableLines']; + + $linesBar = $this->getCoverageBar( + $data['linesExecutedPercent'] + ); + } else { + $linesLevel = ''; + $linesNumber = '0' . $numSeparator . '0'; + $linesBar = ''; + $data['linesExecutedPercentAsString'] = 'n/a'; + } + + $template->setVar( + [ + 'icon' => isset($data['icon']) ? $data['icon'] : '', + 'crap' => isset($data['crap']) ? $data['crap'] : '', + 'name' => $data['name'], + 'lines_bar' => $linesBar, + 'lines_executed_percent' => $data['linesExecutedPercentAsString'], + 'lines_level' => $linesLevel, + 'lines_number' => $linesNumber, + 'methods_bar' => $methodsBar, + 'methods_tested_percent' => $data['testedMethodsPercentAsString'], + 'methods_level' => $methodsLevel, + 'methods_number' => $methodsNumber, + 'classes_bar' => $classesBar, + 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '', + 'classes_level' => $classesLevel, + 'classes_number' => $classesNumber + ] + ); + + return $template->render(); + } + + /** + * @param \Text_Template $template + * @param AbstractNode $node + */ + protected function setCommonTemplateVariables(\Text_Template $template, AbstractNode $node) + { + $template->setVar( + [ + 'id' => $node->getId(), + 'full_path' => $node->getPath(), + 'path_to_root' => $this->getPathToRoot($node), + 'breadcrumbs' => $this->getBreadcrumbs($node), + 'date' => $this->date, + 'version' => $this->version, + 'runtime' => $this->getRuntimeString(), + 'generator' => $this->generator, + 'low_upper_bound' => $this->lowUpperBound, + 'high_lower_bound' => $this->highLowerBound + ] + ); + } + + protected function getBreadcrumbs(AbstractNode $node) + { + $breadcrumbs = ''; + $path = $node->getPathAsArray(); + $pathToRoot = []; + $max = count($path); + + if ($node instanceof FileNode) { + $max--; + } + + for ($i = 0; $i < $max; $i++) { + $pathToRoot[] = str_repeat('../', $i); + } + + foreach ($path as $step) { + if ($step !== $node) { + $breadcrumbs .= $this->getInactiveBreadcrumb( + $step, + array_pop($pathToRoot) + ); + } else { + $breadcrumbs .= $this->getActiveBreadcrumb($step); + } + } + + return $breadcrumbs; + } + + protected function getActiveBreadcrumb(AbstractNode $node) + { + $buffer = sprintf( + '

  • %s
  • ' . "\n", + $node->getName() + ); + + if ($node instanceof DirectoryNode) { + $buffer .= '
  • (Dashboard)
  • ' . "\n"; + } + + return $buffer; + } + + protected function getInactiveBreadcrumb(AbstractNode $node, $pathToRoot) + { + return sprintf( + '
  • %s
  • ' . "\n", + $pathToRoot, + $node->getName() + ); + } + + protected function getPathToRoot(AbstractNode $node) + { + $id = $node->getId(); + $depth = substr_count($id, '/'); + + if ($id != 'index' && + $node instanceof DirectoryNode) { + $depth++; + } + + return str_repeat('../', $depth); + } + + protected function getCoverageBar($percent) + { + $level = $this->getColorLevel($percent); + + $template = new \Text_Template( + $this->templatePath . 'coverage_bar.html', + '{{', + '}}' + ); + + $template->setVar(['level' => $level, 'percent' => sprintf('%.2F', $percent)]); + + return $template->render(); + } + + /** + * @param int $percent + * + * @return string + */ + protected function getColorLevel($percent) + { + if ($percent <= $this->lowUpperBound) { + return 'danger'; + } elseif ($percent > $this->lowUpperBound && + $percent < $this->highLowerBound) { + return 'warning'; + } else { + return 'success'; + } + } + + /** + * @return string + */ + private function getRuntimeString() + { + $runtime = new Runtime; + + $buffer = sprintf( + '%s %s', + $runtime->getVendorUrl(), + $runtime->getName(), + $runtime->getVersion() + ); + + if ($runtime->hasXdebug() && !$runtime->hasPHPDBGCodeCoverage()) { + $buffer .= sprintf( + ' with Xdebug %s', + phpversion('xdebug') + ); + } + + return $buffer; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php new file mode 100644 index 00000000..7cde1755 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php @@ -0,0 +1,302 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\AbstractNode; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; + +/** + * Renders the dashboard for a directory node. + */ +class Dashboard extends Renderer +{ + /** + * @param DirectoryNode $node + * @param string $file + */ + public function render(DirectoryNode $node, $file) + { + $classes = $node->getClassesAndTraits(); + $template = new \Text_Template( + $this->templatePath . 'dashboard.html', + '{{', + '}}' + ); + + $this->setCommonTemplateVariables($template, $node); + + $baseLink = $node->getId() . '/'; + $complexity = $this->complexity($classes, $baseLink); + $coverageDistribution = $this->coverageDistribution($classes); + $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink); + $projectRisks = $this->projectRisks($classes, $baseLink); + + $template->setVar( + [ + 'insufficient_coverage_classes' => $insufficientCoverage['class'], + 'insufficient_coverage_methods' => $insufficientCoverage['method'], + 'project_risks_classes' => $projectRisks['class'], + 'project_risks_methods' => $projectRisks['method'], + 'complexity_class' => $complexity['class'], + 'complexity_method' => $complexity['method'], + 'class_coverage_distribution' => $coverageDistribution['class'], + 'method_coverage_distribution' => $coverageDistribution['method'] + ] + ); + + $template->renderTo($file); + } + + /** + * Returns the data for the Class/Method Complexity charts. + * + * @param array $classes + * @param string $baseLink + * + * @return array + */ + protected function complexity(array $classes, $baseLink) + { + $result = ['class' => [], 'method' => []]; + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($className != '*') { + $methodName = $className . '::' . $methodName; + } + + $result['method'][] = [ + $method['coverage'], + $method['ccn'], + sprintf( + '%s', + str_replace($baseLink, '', $method['link']), + $methodName + ) + ]; + } + + $result['class'][] = [ + $class['coverage'], + $class['ccn'], + sprintf( + '%s', + str_replace($baseLink, '', $class['link']), + $className + ) + ]; + } + + return [ + 'class' => json_encode($result['class']), + 'method' => json_encode($result['method']) + ]; + } + + /** + * Returns the data for the Class / Method Coverage Distribution chart. + * + * @param array $classes + * + * @return array + */ + protected function coverageDistribution(array $classes) + { + $result = [ + 'class' => [ + '0%' => 0, + '0-10%' => 0, + '10-20%' => 0, + '20-30%' => 0, + '30-40%' => 0, + '40-50%' => 0, + '50-60%' => 0, + '60-70%' => 0, + '70-80%' => 0, + '80-90%' => 0, + '90-100%' => 0, + '100%' => 0 + ], + 'method' => [ + '0%' => 0, + '0-10%' => 0, + '10-20%' => 0, + '20-30%' => 0, + '30-40%' => 0, + '40-50%' => 0, + '50-60%' => 0, + '60-70%' => 0, + '70-80%' => 0, + '80-90%' => 0, + '90-100%' => 0, + '100%' => 0 + ] + ]; + + foreach ($classes as $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($method['coverage'] == 0) { + $result['method']['0%']++; + } elseif ($method['coverage'] == 100) { + $result['method']['100%']++; + } else { + $key = floor($method['coverage'] / 10) * 10; + $key = $key . '-' . ($key + 10) . '%'; + $result['method'][$key]++; + } + } + + if ($class['coverage'] == 0) { + $result['class']['0%']++; + } elseif ($class['coverage'] == 100) { + $result['class']['100%']++; + } else { + $key = floor($class['coverage'] / 10) * 10; + $key = $key . '-' . ($key + 10) . '%'; + $result['class'][$key]++; + } + } + + return [ + 'class' => json_encode(array_values($result['class'])), + 'method' => json_encode(array_values($result['method'])) + ]; + } + + /** + * Returns the classes / methods with insufficient coverage. + * + * @param array $classes + * @param string $baseLink + * + * @return array + */ + protected function insufficientCoverage(array $classes, $baseLink) + { + $leastTestedClasses = []; + $leastTestedMethods = []; + $result = ['class' => '', 'method' => '']; + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($method['coverage'] < $this->highLowerBound) { + if ($className != '*') { + $key = $className . '::' . $methodName; + } else { + $key = $methodName; + } + + $leastTestedMethods[$key] = $method['coverage']; + } + } + + if ($class['coverage'] < $this->highLowerBound) { + $leastTestedClasses[$className] = $class['coverage']; + } + } + + asort($leastTestedClasses); + asort($leastTestedMethods); + + foreach ($leastTestedClasses as $className => $coverage) { + $result['class'] .= sprintf( + ' %s%d%%' . "\n", + str_replace($baseLink, '', $classes[$className]['link']), + $className, + $coverage + ); + } + + foreach ($leastTestedMethods as $methodName => $coverage) { + list($class, $method) = explode('::', $methodName); + + $result['method'] .= sprintf( + ' %s%d%%' . "\n", + str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), + $methodName, + $method, + $coverage + ); + } + + return $result; + } + + /** + * Returns the project risks according to the CRAP index. + * + * @param array $classes + * @param string $baseLink + * + * @return array + */ + protected function projectRisks(array $classes, $baseLink) + { + $classRisks = []; + $methodRisks = []; + $result = ['class' => '', 'method' => '']; + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($method['coverage'] < $this->highLowerBound && + $method['ccn'] > 1) { + if ($className != '*') { + $key = $className . '::' . $methodName; + } else { + $key = $methodName; + } + + $methodRisks[$key] = $method['crap']; + } + } + + if ($class['coverage'] < $this->highLowerBound && + $class['ccn'] > count($class['methods'])) { + $classRisks[$className] = $class['crap']; + } + } + + arsort($classRisks); + arsort($methodRisks); + + foreach ($classRisks as $className => $crap) { + $result['class'] .= sprintf( + ' %s%d' . "\n", + str_replace($baseLink, '', $classes[$className]['link']), + $className, + $crap + ); + } + + foreach ($methodRisks as $methodName => $crap) { + list($class, $method) = explode('::', $methodName); + + $result['method'] .= sprintf( + ' %s%d' . "\n", + str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), + $methodName, + $method, + $crap + ); + } + + return $result; + } + + protected function getActiveBreadcrumb(AbstractNode $node) + { + return sprintf( + '
  • %s
  • ' . "\n" . + '
  • (Dashboard)
  • ' . "\n", + $node->getName() + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php new file mode 100644 index 00000000..a4b1b96f --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\AbstractNode as Node; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; + +/** + * Renders a directory node. + */ +class Directory extends Renderer +{ + /** + * @param DirectoryNode $node + * @param string $file + */ + public function render(DirectoryNode $node, $file) + { + $template = new \Text_Template($this->templatePath . 'directory.html', '{{', '}}'); + + $this->setCommonTemplateVariables($template, $node); + + $items = $this->renderItem($node, true); + + foreach ($node->getDirectories() as $item) { + $items .= $this->renderItem($item); + } + + foreach ($node->getFiles() as $item) { + $items .= $this->renderItem($item); + } + + $template->setVar( + [ + 'id' => $node->getId(), + 'items' => $items + ] + ); + + $template->renderTo($file); + } + + /** + * @param Node $node + * @param bool $total + * + * @return string + */ + protected function renderItem(Node $node, $total = false) + { + $data = [ + 'numClasses' => $node->getNumClassesAndTraits(), + 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), + 'numMethods' => $node->getNumMethods(), + 'numTestedMethods' => $node->getNumTestedMethods(), + 'linesExecutedPercent' => $node->getLineExecutedPercent(false), + 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), + 'numExecutedLines' => $node->getNumExecutedLines(), + 'numExecutableLines' => $node->getNumExecutableLines(), + 'testedMethodsPercent' => $node->getTestedMethodsPercent(false), + 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), + 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false), + 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent() + ]; + + if ($total) { + $data['name'] = 'Total'; + } else { + if ($node instanceof DirectoryNode) { + $data['name'] = sprintf( + '%s', + $node->getName(), + $node->getName() + ); + + $data['icon'] = ' '; + } else { + $data['name'] = sprintf( + '%s', + $node->getName(), + $node->getName() + ); + + $data['icon'] = ' '; + } + } + + return $this->renderItemTemplate( + new \Text_Template($this->templatePath . 'directory_item.html', '{{', '}}'), + $data + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php new file mode 100644 index 00000000..5461c9e7 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php @@ -0,0 +1,551 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\File as FileNode; +use SebastianBergmann\CodeCoverage\Util; + +/** + * Renders a file node. + */ +class File extends Renderer +{ + /** + * @var int + */ + private $htmlspecialcharsFlags; + + /** + * Constructor. + * + * @param string $templatePath + * @param string $generator + * @param string $date + * @param int $lowUpperBound + * @param int $highLowerBound + */ + public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) + { + parent::__construct( + $templatePath, + $generator, + $date, + $lowUpperBound, + $highLowerBound + ); + + $this->htmlspecialcharsFlags = ENT_COMPAT; + + $this->htmlspecialcharsFlags = $this->htmlspecialcharsFlags | ENT_HTML401 | ENT_SUBSTITUTE; + } + + /** + * @param FileNode $node + * @param string $file + */ + public function render(FileNode $node, $file) + { + $template = new \Text_Template($this->templatePath . 'file.html', '{{', '}}'); + + $template->setVar( + [ + 'items' => $this->renderItems($node), + 'lines' => $this->renderSource($node) + ] + ); + + $this->setCommonTemplateVariables($template, $node); + + $template->renderTo($file); + } + + /** + * @param FileNode $node + * + * @return string + */ + protected function renderItems(FileNode $node) + { + $template = new \Text_Template($this->templatePath . 'file_item.html', '{{', '}}'); + + $methodItemTemplate = new \Text_Template( + $this->templatePath . 'method_item.html', + '{{', + '}}' + ); + + $items = $this->renderItemTemplate( + $template, + [ + 'name' => 'Total', + 'numClasses' => $node->getNumClassesAndTraits(), + 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), + 'numMethods' => $node->getNumMethods(), + 'numTestedMethods' => $node->getNumTestedMethods(), + 'linesExecutedPercent' => $node->getLineExecutedPercent(false), + 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), + 'numExecutedLines' => $node->getNumExecutedLines(), + 'numExecutableLines' => $node->getNumExecutableLines(), + 'testedMethodsPercent' => $node->getTestedMethodsPercent(false), + 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), + 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false), + 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(), + 'crap' => 'CRAP' + ] + ); + + $items .= $this->renderFunctionItems( + $node->getFunctions(), + $methodItemTemplate + ); + + $items .= $this->renderTraitOrClassItems( + $node->getTraits(), + $template, + $methodItemTemplate + ); + + $items .= $this->renderTraitOrClassItems( + $node->getClasses(), + $template, + $methodItemTemplate + ); + + return $items; + } + + /** + * @param array $items + * @param \Text_Template $template + * @param \Text_Template $methodItemTemplate + * + * @return string + */ + protected function renderTraitOrClassItems(array $items, \Text_Template $template, \Text_Template $methodItemTemplate) + { + if (empty($items)) { + return ''; + } + + $buffer = ''; + + foreach ($items as $name => $item) { + $numMethods = count($item['methods']); + $numTestedMethods = 0; + + foreach ($item['methods'] as $method) { + if ($method['executedLines'] == $method['executableLines']) { + $numTestedMethods++; + } + } + + if ($item['executableLines'] > 0) { + $numClasses = 1; + $numTestedClasses = $numTestedMethods == $numMethods ? 1 : 0; + $linesExecutedPercentAsString = Util::percent( + $item['executedLines'], + $item['executableLines'], + true + ); + } else { + $numClasses = 'n/a'; + $numTestedClasses = 'n/a'; + $linesExecutedPercentAsString = 'n/a'; + } + + $buffer .= $this->renderItemTemplate( + $template, + [ + 'name' => $name, + 'numClasses' => $numClasses, + 'numTestedClasses' => $numTestedClasses, + 'numMethods' => $numMethods, + 'numTestedMethods' => $numTestedMethods, + 'linesExecutedPercent' => Util::percent( + $item['executedLines'], + $item['executableLines'], + false + ), + 'linesExecutedPercentAsString' => $linesExecutedPercentAsString, + 'numExecutedLines' => $item['executedLines'], + 'numExecutableLines' => $item['executableLines'], + 'testedMethodsPercent' => Util::percent( + $numTestedMethods, + $numMethods, + false + ), + 'testedMethodsPercentAsString' => Util::percent( + $numTestedMethods, + $numMethods, + true + ), + 'testedClassesPercent' => Util::percent( + $numTestedMethods == $numMethods ? 1 : 0, + 1, + false + ), + 'testedClassesPercentAsString' => Util::percent( + $numTestedMethods == $numMethods ? 1 : 0, + 1, + true + ), + 'crap' => $item['crap'] + ] + ); + + foreach ($item['methods'] as $method) { + $buffer .= $this->renderFunctionOrMethodItem( + $methodItemTemplate, + $method, + ' ' + ); + } + } + + return $buffer; + } + + /** + * @param array $functions + * @param \Text_Template $template + * + * @return string + */ + protected function renderFunctionItems(array $functions, \Text_Template $template) + { + if (empty($functions)) { + return ''; + } + + $buffer = ''; + + foreach ($functions as $function) { + $buffer .= $this->renderFunctionOrMethodItem( + $template, + $function + ); + } + + return $buffer; + } + + /** + * @param \Text_Template $template + * + * @return string + */ + protected function renderFunctionOrMethodItem(\Text_Template $template, array $item, $indent = '') + { + $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0; + + return $this->renderItemTemplate( + $template, + [ + 'name' => sprintf( + '%s%s', + $indent, + $item['startLine'], + htmlspecialchars($item['signature']), + isset($item['functionName']) ? $item['functionName'] : $item['methodName'] + ), + 'numMethods' => 1, + 'numTestedMethods' => $numTestedItems, + 'linesExecutedPercent' => Util::percent( + $item['executedLines'], + $item['executableLines'], + false + ), + 'linesExecutedPercentAsString' => Util::percent( + $item['executedLines'], + $item['executableLines'], + true + ), + 'numExecutedLines' => $item['executedLines'], + 'numExecutableLines' => $item['executableLines'], + 'testedMethodsPercent' => Util::percent( + $numTestedItems, + 1, + false + ), + 'testedMethodsPercentAsString' => Util::percent( + $numTestedItems, + 1, + true + ), + 'crap' => $item['crap'] + ] + ); + } + + /** + * @param FileNode $node + * + * @return string + */ + protected function renderSource(FileNode $node) + { + $coverageData = $node->getCoverageData(); + $testData = $node->getTestData(); + $codeLines = $this->loadFile($node->getPath()); + $lines = ''; + $i = 1; + + foreach ($codeLines as $line) { + $trClass = ''; + $popoverContent = ''; + $popoverTitle = ''; + + if (array_key_exists($i, $coverageData)) { + $numTests = count($coverageData[$i]); + + if ($coverageData[$i] === null) { + $trClass = ' class="warning"'; + } elseif ($numTests == 0) { + $trClass = ' class="danger"'; + } else { + $lineCss = 'covered-by-large-tests'; + $popoverContent = '
      '; + + if ($numTests > 1) { + $popoverTitle = $numTests . ' tests cover line ' . $i; + } else { + $popoverTitle = '1 test covers line ' . $i; + } + + foreach ($coverageData[$i] as $test) { + if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') { + $lineCss = 'covered-by-medium-tests'; + } elseif ($testData[$test]['size'] == 'small') { + $lineCss = 'covered-by-small-tests'; + } + + switch ($testData[$test]['status']) { + case 0: + switch ($testData[$test]['size']) { + case 'small': + $testCSS = ' class="covered-by-small-tests"'; + break; + + case 'medium': + $testCSS = ' class="covered-by-medium-tests"'; + break; + + default: + $testCSS = ' class="covered-by-large-tests"'; + break; + } + break; + + case 1: + case 2: + $testCSS = ' class="warning"'; + break; + + case 3: + $testCSS = ' class="danger"'; + break; + + case 4: + $testCSS = ' class="danger"'; + break; + + default: + $testCSS = ''; + } + + $popoverContent .= sprintf( + '%s', + $testCSS, + htmlspecialchars($test) + ); + } + + $popoverContent .= '
    '; + $trClass = ' class="' . $lineCss . ' popin"'; + } + } + + if (!empty($popoverTitle)) { + $popover = sprintf( + ' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"', + $popoverTitle, + htmlspecialchars($popoverContent) + ); + } else { + $popover = ''; + } + + $lines .= sprintf( + ' %s' . "\n", + $trClass, + $popover, + $i, + $i, + $i, + $line + ); + + $i++; + } + + return $lines; + } + + /** + * @param string $file + * + * @return array + */ + protected function loadFile($file) + { + $buffer = file_get_contents($file); + $tokens = token_get_all($buffer); + $result = ['']; + $i = 0; + $stringFlag = false; + $fileEndsWithNewLine = substr($buffer, -1) == "\n"; + + unset($buffer); + + foreach ($tokens as $j => $token) { + if (is_string($token)) { + if ($token === '"' && $tokens[$j - 1] !== '\\') { + $result[$i] .= sprintf( + '%s', + htmlspecialchars($token) + ); + + $stringFlag = !$stringFlag; + } else { + $result[$i] .= sprintf( + '%s', + htmlspecialchars($token) + ); + } + + continue; + } + + list($token, $value) = $token; + + $value = str_replace( + ["\t", ' '], + ['    ', ' '], + htmlspecialchars($value, $this->htmlspecialcharsFlags) + ); + + if ($value === "\n") { + $result[++$i] = ''; + } else { + $lines = explode("\n", $value); + + foreach ($lines as $jj => $line) { + $line = trim($line); + + if ($line !== '') { + if ($stringFlag) { + $colour = 'string'; + } else { + switch ($token) { + case T_INLINE_HTML: + $colour = 'html'; + break; + + case T_COMMENT: + case T_DOC_COMMENT: + $colour = 'comment'; + break; + + case T_ABSTRACT: + case T_ARRAY: + case T_AS: + case T_BREAK: + case T_CALLABLE: + case T_CASE: + case T_CATCH: + case T_CLASS: + case T_CLONE: + case T_CONTINUE: + case T_DEFAULT: + case T_ECHO: + case T_ELSE: + case T_ELSEIF: + case T_EMPTY: + case T_ENDDECLARE: + case T_ENDFOR: + case T_ENDFOREACH: + case T_ENDIF: + case T_ENDSWITCH: + case T_ENDWHILE: + case T_EXIT: + case T_EXTENDS: + case T_FINAL: + case T_FINALLY: + case T_FOREACH: + case T_FUNCTION: + case T_GLOBAL: + case T_IF: + case T_IMPLEMENTS: + case T_INCLUDE: + case T_INCLUDE_ONCE: + case T_INSTANCEOF: + case T_INSTEADOF: + case T_INTERFACE: + case T_ISSET: + case T_LOGICAL_AND: + case T_LOGICAL_OR: + case T_LOGICAL_XOR: + case T_NAMESPACE: + case T_NEW: + case T_PRIVATE: + case T_PROTECTED: + case T_PUBLIC: + case T_REQUIRE: + case T_REQUIRE_ONCE: + case T_RETURN: + case T_STATIC: + case T_THROW: + case T_TRAIT: + case T_TRY: + case T_UNSET: + case T_USE: + case T_VAR: + case T_WHILE: + case T_YIELD: + $colour = 'keyword'; + break; + + default: + $colour = 'default'; + } + } + + $result[$i] .= sprintf( + '%s', + $colour, + $line + ); + } + + if (isset($lines[$jj + 1])) { + $result[++$i] = ''; + } + } + } + } + + if ($fileEndsWithNewLine) { + unset($result[count($result)-1]); + } + + return $result; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist new file mode 100644 index 00000000..5a09c354 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist @@ -0,0 +1,5 @@ +
    +
    + {{percent}}% covered ({{level}}) +
    +
    diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css new file mode 100644 index 00000000..ed3905e0 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css new file mode 100644 index 00000000..7a6f7fe9 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css @@ -0,0 +1 @@ +.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc} \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css new file mode 100644 index 00000000..824fb317 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css @@ -0,0 +1,122 @@ +body { + padding-top: 10px; +} + +.popover { + max-width: none; +} + +.glyphicon { + margin-right:.25em; +} + +.table-bordered>thead>tr>td { + border-bottom-width: 1px; +} + +.table tbody>tr>td, .table thead>tr>td { + padding-top: 3px; + padding-bottom: 3px; +} + +.table-condensed tbody>tr>td { + padding-top: 0; + padding-bottom: 0; +} + +.table .progress { + margin-bottom: inherit; +} + +.table-borderless th, .table-borderless td { + border: 0 !important; +} + +.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success { + background-color: #dff0d8; +} + +.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests { + background-color: #c3e3b5; +} + +.table tbody tr.covered-by-small-tests, li.covered-by-small-tests { + background-color: #99cb84; +} + +.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger { + background-color: #f2dede; +} + +.table tbody td.warning, li.warning, span.warning { + background-color: #fcf8e3; +} + +.table tbody td.info { + background-color: #d9edf7; +} + +td.big { + width: 117px; +} + +td.small { +} + +td.codeLine { + font-family: monospace; + white-space: pre; +} + +td span.comment { + color: #888a85; +} + +td span.default { + color: #2e3436; +} + +td span.html { + color: #888a85; +} + +td span.keyword { + color: #2e3436; + font-weight: bold; +} + +pre span.string { + color: #2e3436; +} + +span.success, span.warning, span.danger { + margin-right: 2px; + padding-left: 10px; + padding-right: 10px; + text-align: center; +} + +#classCoverageDistribution, #classComplexity { + height: 200px; + width: 475px; +} + +#toplink { + position: fixed; + left: 5px; + bottom: 5px; + outline: 0; +} + +svg text { + font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + color: #666; + fill: #666; +} + +.scrollbox { + height:245px; + overflow-x:hidden; + overflow-y:scroll; +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist new file mode 100644 index 00000000..8bdf04d8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist @@ -0,0 +1,284 @@ + + + + + Dashboard for {{full_path}} + + + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    Classes

    +
    +
    +
    +
    +

    Coverage Distribution

    +
    + +
    +
    +
    +

    Complexity

    +
    + +
    +
    +
    +
    +
    +

    Insufficient Coverage

    +
    + + + + + + + + +{{insufficient_coverage_classes}} + +
    ClassCoverage
    +
    +
    +
    +

    Project Risks

    +
    + + + + + + + + +{{project_risks_classes}} + +
    ClassCRAP
    +
    +
    +
    +
    +
    +

    Methods

    +
    +
    +
    +
    +

    Coverage Distribution

    +
    + +
    +
    +
    +

    Complexity

    +
    + +
    +
    +
    +
    +
    +

    Insufficient Coverage

    +
    + + + + + + + + +{{insufficient_coverage_methods}} + +
    MethodCoverage
    +
    +
    +
    +

    Project Risks

    +
    + + + + + + + + +{{project_risks_methods}} + +
    MethodCRAP
    +
    +
    +
    + +
    + + + + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist new file mode 100644 index 00000000..29fbf23e --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist @@ -0,0 +1,61 @@ + + + + + Code Coverage for {{full_path}} + + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + +{{items}} + +
     
    Code Coverage
     
    Lines
    Functions and Methods
    Classes and Traits
    +
    +
    +

    Legend

    +

    + Low: 0% to {{low_upper_bound}}% + Medium: {{low_upper_bound}}% to {{high_lower_bound}}% + High: {{high_lower_bound}}% to 100% +

    +

    + Generated by php-code-coverage {{version}} using {{runtime}}{{generator}} at {{date}}. +

    +
    +
    + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist new file mode 100644 index 00000000..78dbb356 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist @@ -0,0 +1,13 @@ + + {{icon}}{{name}} + {{lines_bar}} +
    {{lines_executed_percent}}
    +
    {{lines_number}}
    + {{methods_bar}} +
    {{methods_tested_percent}}
    +
    {{methods_number}}
    + {{classes_bar}} +
    {{classes_tested_percent}}
    +
    {{classes_number}}
    + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist new file mode 100644 index 00000000..8c42d4e8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist @@ -0,0 +1,90 @@ + + + + + Code Coverage for {{full_path}} + + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + +{{items}} + +
     
    Code Coverage
     
    Classes and Traits
    Functions and Methods
    Lines
    + + +{{lines}} + +
    +
    +
    +

    Legend

    +

    + Executed + Not Executed + Dead Code +

    +

    + Generated by php-code-coverage {{version}} using {{runtime}}{{generator}} at {{date}}. +

    + +
    +
    + + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist new file mode 100644 index 00000000..756fdd69 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist @@ -0,0 +1,14 @@ + + {{name}} + {{classes_bar}} +
    {{classes_tested_percent}}
    +
    {{classes_number}}
    + {{methods_bar}} +
    {{methods_tested_percent}}
    +
    {{methods_number}}
    + {{crap}} + {{lines_bar}} +
    {{lines_executed_percent}}
    +
    {{lines_number}}
    + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js new file mode 100644 index 00000000..9bcd2fcc --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js new file mode 100644 index 00000000..16648730 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js @@ -0,0 +1,5 @@ +!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++ie;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++aa;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)0?0:3:xo(r[0]-e)0?2:1:xo(r[1]-t)0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){ +r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)Uo?{x:s,y:xo(t-s)Uo?{x:xo(e-g)Uo?{x:h,y:xo(t-h)Uo?{x:xo(e-p)=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.yd||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.yr||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.yp){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.xu||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return ur;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++oe;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.ro;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++0;h--)o.push(u(c)*h);for(c=0;o[c]l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++oe?[NaN,NaN]:[e>0?a[e-1]:n[0],et?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}else{for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++ii){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++rr;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++uu;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], +shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++rn?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.xy&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++cs?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u0)for(u=-1;++u=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.xg.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++it?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++oe&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0; +if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++ue.dx)&&(f=e.dx);++ue&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++au;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}(); \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js new file mode 100644 index 00000000..6bfc844b --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js @@ -0,0 +1,12 @@ +/*! + +Holder - client side image placeholders +Version 2.7.1+6hydf +© 2015 Ivan Malopinsky - http://imsky.co + +Site: http://holderjs.com +Issues: https://github.com/imsky/holder/issues +License: http://opensource.org/licenses/MIT + +*/ +!function(a){if(a.document){var b=a.document;b.querySelectorAll||(b.querySelectorAll=function(c){var d,e=b.createElement("style"),f=[];for(b.documentElement.firstChild.appendChild(e),b._qsa=[],e.styleSheet.cssText=c+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",a.scrollBy(0,0),e.parentNode.removeChild(e);b._qsa.length;)d=b._qsa.shift(),d.style.removeAttribute("x-qsa"),f.push(d);return b._qsa=null,f}),b.querySelector||(b.querySelector=function(a){var c=b.querySelectorAll(a);return c.length?c[0]:null}),b.getElementsByClassName||(b.getElementsByClassName=function(a){return a=String(a).replace(/^|\s+/g,"."),b.querySelectorAll(a)}),Object.keys||(Object.keys=function(a){if(a!==Object(a))throw TypeError("Object.keys called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(a),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(){if("performance"in a==!1&&(a.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in a.performance==!1){var b=Date.now();performance.timing&&performance.timing.navigationStart&&(b=performance.timing.navigationStart),a.performance.now=function(){return Date.now()-b}}}(),a.requestAnimationFrame||(a.webkitRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return webkitRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=webkitCancelAnimationFrame}(a):a.mozRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return mozRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=mozCancelAnimationFrame}(a):!function(a){a.requestAnimationFrame=function(b){return a.setTimeout(b,1e3/60)},a.cancelAnimationFrame=a.clearTimeout}(a))}}(this),function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):"object"==typeof exports?exports.Holder=b():a.Holder=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){(function(b){function d(a,b,c,d){var f=e(c.substr(c.lastIndexOf(a.domain)),a);f&&h({mode:null,el:d,flags:f,engineSettings:b})}function e(a,b){var c={theme:B(J.settings.themes.gray,null),stylesheets:b.stylesheets,instanceOptions:b};return a.match(/([\d]+p?)x([\d]+p?)(?:\?|$)/)?f(a,c):g(a,c)}function f(a,b){var c=a.split("?"),d=c[0].split("/");b.holderURL=a;var e=d[1],f=e.match(/([\d]+p?)x([\d]+p?)/);if(!f)return!1;if(b.fluid=-1!==e.indexOf("p"),b.dimensions={width:f[1].replace("p","%"),height:f[2].replace("p","%")},2===c.length){var g=A.parse(c[1]);if(g.bg&&(b.theme.background=(-1===g.bg.indexOf("#")?"#":"")+g.bg),g.fg&&(b.theme.foreground=(-1===g.fg.indexOf("#")?"#":"")+g.fg),g.theme&&b.instanceOptions.themes.hasOwnProperty(g.theme)&&(b.theme=B(b.instanceOptions.themes[g.theme],null)),g.text&&(b.text=g.text),g.textmode&&(b.textmode=g.textmode),g.size&&(b.size=g.size),g.font&&(b.font=g.font),g.align&&(b.align=g.align),b.nowrap=z.truthy(g.nowrap),b.auto=z.truthy(g.auto),z.truthy(g.random)){J.vars.cache.themeKeys=J.vars.cache.themeKeys||Object.keys(b.instanceOptions.themes);var h=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(b.instanceOptions.themes[h],null)}}return b}function g(a,b){var c=!1,d=String.fromCharCode(11),e=a.replace(/([^\\])\//g,"$1"+d).split(d),f=/%[0-9a-f]{2}/gi,g=b.instanceOptions;b.holderURL=[];for(var h=e.length,i=0;h>i;i++){var j=e[i];if(j.match(f))try{j=decodeURIComponent(j)}catch(k){j=e[i]}var l=!1;if(J.flags.dimensions.match(j))c=!0,b.dimensions=J.flags.dimensions.output(j),l=!0;else if(J.flags.fluid.match(j))c=!0,b.dimensions=J.flags.fluid.output(j),b.fluid=!0,l=!0;else if(J.flags.textmode.match(j))b.textmode=J.flags.textmode.output(j),l=!0;else if(J.flags.colors.match(j)){var m=J.flags.colors.output(j);b.theme=B(b.theme,m),l=!0}else if(g.themes[j])g.themes.hasOwnProperty(j)&&(b.theme=B(g.themes[j],null)),l=!0;else if(J.flags.font.match(j))b.font=J.flags.font.output(j),l=!0;else if(J.flags.auto.match(j))b.auto=!0,l=!0;else if(J.flags.text.match(j))b.text=J.flags.text.output(j),l=!0;else if(J.flags.size.match(j))b.size=J.flags.size.output(j),l=!0;else if(J.flags.random.match(j)){null==J.vars.cache.themeKeys&&(J.vars.cache.themeKeys=Object.keys(g.themes));var n=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(g.themes[n],null),l=!0}l&&b.holderURL.push(j)}return b.holderURL.unshift(g.domain),b.holderURL=b.holderURL.join("/"),c?b:!1}function h(a){var b=a.mode,c=a.el,d=a.flags,e=a.engineSettings,f=d.dimensions,g=d.theme,h=f.width+"x"+f.height;if(b=null==b?d.fluid?"fluid":"image":b,null!=d.text&&(g.text=d.text,"object"===c.nodeName.toLowerCase())){for(var j=g.text.split("\\n"),k=0;k1){var n,o=0,p=0,q=0;j=new e.Group("line"+q),("left"===a.align||"right"===a.align)&&(m=a.width*(1-2*(1-J.setup.lineWrapRatio)));for(var r=0;r=m||t===!0)&&(b(g,j,o,g.properties.leading),g.add(j),o=0,p+=g.properties.leading,q+=1,j=new e.Group("line"+q),j.y=p),t!==!0&&(i.moveTo(o,0),o+=h.spaceWidth+s.width,j.add(i))}if(b(g,j,o,g.properties.leading),g.add(j),"left"===a.align)g.moveTo(a.width-l,null,null);else if("right"===a.align){for(n in g.children)j=g.children[n],j.moveTo(a.width-j.width,null,null);g.moveTo(0-(a.width-l),null,null)}else{for(n in g.children)j=g.children[n],j.moveTo((g.width-j.width)/2,null,null);g.moveTo((a.width-g.width)/2,null,null)}g.moveTo(null,(a.height-g.height)/2,null),(a.height-g.height)/2<0&&g.moveTo(null,0,null)}else i=new e.Text(a.text),j=new e.Group("line0"),j.add(i),g.add(j),"left"===a.align?g.moveTo(a.width-l,null,null):"right"===a.align?g.moveTo(0-(a.width-l),null,null):g.moveTo((a.width-h.boundingBox.width)/2,null,null),g.moveTo(null,(a.height-h.boundingBox.height)/2,null);return d}function k(a,b,c){var d=parseInt(a,10),e=parseInt(b,10),f=Math.max(d,e),g=Math.min(d,e),h=.8*Math.min(g,f*J.defaults.scale);return Math.round(Math.max(c,h))}function l(a){var b;b=null==a||null==a.nodeType?J.vars.resizableImages:[a];for(var c=0,d=b.length;d>c;c++){var e=b[c];if(e.holderData){var f=e.holderData.flags,g=D(e);if(g){if(!e.holderData.resizeUpdate)continue;if(f.fluid&&f.auto){var h=e.holderData.fluidConfig;switch(h.mode){case"width":g.height=g.width/h.ratio;break;case"height":g.width=g.height*h.ratio}}var j={mode:"image",holderSettings:{dimensions:g,theme:f.theme,flags:f},el:e,engineSettings:e.holderData.engineSettings};"exact"==f.textmode&&(f.exactDimensions=g,j.holderSettings.dimensions=f.dimensions),i(j)}else p(e)}}}function m(a){if(a.holderData){var b=D(a);if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}else p(a)}}function n(){for(var a,c=[],d=Object.keys(J.vars.invisibleImages),e=0,f=d.length;f>e;e++)a=J.vars.invisibleImages[d[e]],D(a)&&"img"==a.nodeName.toLowerCase()&&(c.push(a),delete J.vars.invisibleImages[d[e]]);c.length&&I.run({images:c}),b.requestAnimationFrame(n)}function o(){J.vars.visibilityCheckStarted||(b.requestAnimationFrame(n),J.vars.visibilityCheckStarted=!0)}function p(a){a.holderData.invisibleId||(J.vars.invisibleId+=1,J.vars.invisibleImages["i"+J.vars.invisibleId]=a,a.holderData.invisibleId=J.vars.invisibleId)}function q(a,b){return null==b?document.createElement(a):document.createElementNS(b,a)}function r(a,b){for(var c in b)a.setAttribute(c,b[c])}function s(a,b,c){var d,e;null==a?(a=q("svg",E),d=q("defs",E),e=q("style",E),r(e,{type:"text/css"}),d.appendChild(e),a.appendChild(d)):e=a.querySelector("style"),a.webkitMatchesSelector&&a.setAttribute("xmlns",E);for(var f=0;f=0;h--){var i=g.createProcessingInstruction("xml-stylesheet",'href="'+f[h]+'" rel="stylesheet"');g.insertBefore(i,g.firstChild)}g.removeChild(g.documentElement),e=d.serializeToString(g)}var j=d.serializeToString(a);return j=j.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),e+j}}function u(){return b.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0}function v(a){J.vars.debounceTimer||a.call(this),J.vars.debounceTimer&&b.clearTimeout(J.vars.debounceTimer),J.vars.debounceTimer=b.setTimeout(function(){J.vars.debounceTimer=null,a.call(this)},J.setup.debounce)}function w(){v(function(){l(null)})}var x=c(1),y=c(2),z=c(3),A=c(4),B=z.extend,C=z.getNodeArray,D=z.dimensionCheck,E="http://www.w3.org/2000/svg",F=8,G="2.7.1",H="\nCreated with Holder.js "+G+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n",I={version:G,addTheme:function(a,b){return null!=a&&null!=b&&(J.settings.themes[a]=b),delete J.vars.cache.themeKeys,this},addImage:function(a,b){var c=document.querySelectorAll(b);if(c.length)for(var d=0,e=c.length;e>d;d++){var f=q("img"),g={};g[J.vars.dataAttr]=a,r(f,g),c[d].appendChild(f)}return this},setResizeUpdate:function(a,b){a.holderData&&(a.holderData.resizeUpdate=!!b,a.holderData.resizeUpdate&&l(a))},run:function(a){a=a||{};var c={},f=B(J.settings,a);J.vars.preempted=!0,J.vars.dataAttr=f.dataAttr||J.vars.dataAttr,c.renderer=f.renderer?f.renderer:J.setup.renderer,-1===J.setup.renderers.join(",").indexOf(c.renderer)&&(c.renderer=J.setup.supportsSVG?"svg":J.setup.supportsCanvas?"canvas":"html");var g=C(f.images),i=C(f.bgnodes),j=C(f.stylenodes),k=C(f.objects);c.stylesheets=[],c.svgXMLStylesheet=!0,c.noFontFallback=f.noFontFallback?f.noFontFallback:!1;for(var l=0;l1){c.nodeValue="";for(var u=0;u=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}a.exports="undefined"!=typeof window&&b(window)},function(a,b,c){var d=c(5),e=function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}var c=1,e=d.defclass({constructor:function(a){c++,this.parent=null,this.children={},this.id=c,this.name="n"+c,null!=a&&(this.name=a),this.x=0,this.y=0,this.z=0,this.width=0,this.height=0},resize:function(a,b){null!=a&&(this.width=a),null!=b&&(this.height=b)},moveTo:function(a,b,c){this.x=null!=a?a:this.x,this.y=null!=b?b:this.y,this.z=null!=c?c:this.z},add:function(a){var b=a.name;if(null!=this.children[b])throw"SceneGraph: child with that name already exists: "+b;this.children[b]=a,a.parent=this}}),f=d(e,function(b){this.constructor=function(){b.constructor.call(this,"root"),this.properties=a}}),g=d(e,function(a){function c(c,d){if(a.constructor.call(this,c),this.properties={fill:"#000"},null!=d)b(this.properties,d);else if(null!=c&&"string"!=typeof c)throw"SceneGraph: invalid node name"}this.Group=d.extend(this,{constructor:c,type:"group"}),this.Rect=d.extend(this,{constructor:c,type:"rect"}),this.Text=d.extend(this,{constructor:function(a){c.call(this),this.properties.text=a},type:"text"})}),h=new f;return this.Shape=g,this.root=h,this};a.exports=e},function(a,b){(function(a){b.extend=function(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);if(null!=b)for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);return c},b.cssProps=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c+":"+a[c]);return b.join(";")},b.encodeHtmlEntity=function(a){for(var b=[],c=0,d=a.length-1;d>=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["&#",c,";"].join(""):a[d]);return b.join("")},b.getNodeArray=function(b){var c=null;return"string"==typeof b?c=document.querySelectorAll(b):a.NodeList&&b instanceof a.NodeList?c=b:a.Node&&b instanceof a.Node?c=[b]:a.HTMLCollection&&b instanceof a.HTMLCollection?c=b:b instanceof Array?c=b:null===b&&(c=[]),c},b.imageExists=function(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a},b.decodeHtmlEntity=function(a){return a.replace(/&#(\d+);/g,function(a,b){return String.fromCharCode(b)})},b.dimensionCheck=function(a){var b={height:a.clientHeight,width:a.clientWidth};return b.height&&b.width?b:!1},b.truthy=function(a){return"string"==typeof a?"true"===a||"yes"===a||"1"===a||"on"===a||"✓"===a:!!a}}).call(b,function(){return this}())},function(a,b,c){var d=encodeURIComponent,e=decodeURIComponent,f=c(6),g=c(7),h=/(\w+)\[(\d+)\]/,i=/\w+\.\w+/;b.parse=function(a){if("string"!=typeof a)return{};if(a=f(a),""===a)return{};"?"===a.charAt(0)&&(a=a.slice(1));for(var b={},c=a.split("&"),d=0;d

    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 literal 0 HcmV?d00001 diff --git a/var/cache/dev/profiler/d9/f4/dcf4d9 b/var/cache/dev/profiler/d9/f4/dcf4d9 new file mode 100644 index 0000000000000000000000000000000000000000..1b7f5d65df81da6ab528e407b1bf2b94bbc024aa GIT binary patch literal 209205 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