ਪਾਈਥਨ/ਨਾਮ _ 1 ਸਜਾਵਟ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ?'] ", 'ਪਾਈਥਨ/ਨਾਮ _ 1 ਸਜਾਵਟ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ?', " ['ਪਾਈਥਨ/ਨਾਮ _ 1 ਡੇਕੋਰੇਟਰ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ?', 'ਪਾਈਥਨ ਵਿੱਚ, ਇੱਕ ਡੇਕੋਰੇਟਰ ਇੱਕ ਅਜਿਹਾ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਇੱਕ ਹੋਰ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਇੰਪੁੱਟ ਵਜੋਂ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸ ਵਿੱਚ ਆਪਣੇ ਵਿਵਹਾਰ ਨੂੰ ਸੋਧਦਾ ਹੈ।ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ। ਸਜਾਵਟ ਦੀ ਵਰਤੋਂ ਅਕਸਰ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਵਾਧੂ ਕਾਰਜਸ਼ੀਲਤਾ ਜੋਡ਼ਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਲੌਗਿੰਗ, ਪ੍ਰਮਾਣਿਕਤਾ, ਜਾਂ ਕੈਚਿੰਗ। \\n\\n NAME _ 1 ਵਿੱਚ,ਸਜਾਵਟ ਕਰਨ ਵਾਲਿਆਂ ਦੀ ਵਰਤੋਂ ਦ੍ਰਿਸ਼ਾਂ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸੋਧਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਦ੍ਰਿਸ਼ ਉਹ ਕਾਰਜ ਹਨ ਜੋ ਬੇਨਤੀਆਂ ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ ਅਤੇ ਇੱਕ ਨਾਮ _ 1 ਵਿੱਚ ਪ੍ਰਤੀਕਿਰਿਆਵਾਂ ਪੈਦਾ ਕਰਦੇ ਹਨ।ਐਪਲੀਕੇਸ਼ਨ. NAME _ 1 ਵਿੱਚ \\n\\nA ਡੇਕੋਰੇਟਰ ਇੱਕ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਇੱਕ ਵਿਊ ਨੂੰ ਇਸ ਦੇ ਇੰਪੁੱਟ ਵਜੋਂ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਦਿੰਦਾ ਹੈ। ਨਵਾਂ ਫੰਕਸ਼ਨ ਵਿਊ ਫੰਕਸ਼ਨ ਹੈ।ਸਜਾਵਟੀ ਦੁਆਰਾ ਜੋਡ਼ੀ ਗਈ ਵਾਧੂ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੇ ਨਾਲ। \\n\\n ਉਦਾਹਰਨ ਲਈ, '@login_required' ਸਜਾਵਟੀ, ਜੋ ਦ੍ਰਿਸ਼ਾਂ ਤੱਕ ਪਹੁੰਚ ਨੂੰ ਸੀਮਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾਵਾਂ ਲਈ, ਇੱਕ ਫੰਕਸ਼ਨ ਦੇ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਇੱਕ ਦ੍ਰਿਸ਼ ਨੂੰ ਇਸਦੇ ਇੰਪੁੱਟ ਦੇ ਰੂਪ ਵਿੱਚ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਬੇਨਤੀ ਇੱਕ ਤੋਂ ਹੈਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਅਤੇ ਜੇ ਨਹੀਂ, ਤਾਂ 401 ਸਥਿਤੀ ਕੋਡ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ।ਲਾਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \\n\\ n@login_required \\ndef ਮਾਈ _ ਵਿਊ (ਬੇਨਤੀ): \\n... \\n '\\n ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ,' ਮਾਈ _ ਵਿਊ 'ਫੰਕਸ਼ਨ ਸਿਰਫ ਤਾਂ ਹੀ ਚਲਾਇਆ ਜਾਵੇਗਾ ਜੇ ਬੇਨਤੀ ਹੈਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਤੋਂ। \\n\\nਡੈਕਰੇਟਰਾਂ ਦੀ ਵਰਤੋਂ ਕਈ ਸਜਾਵਟ ਕਰਨ ਵਾਲਿਆਂ ਨੂੰ ਇਕੱਠੇ ਕਰਨ ਲਈ ਵੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਤਾਂ ਜੋ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀਆਂ ਕਈ ਪਰਤਾਂ ਨੂੰ ਜੋਡ਼ਿਆ ਜਾ ਸਕੇ।ਵੇਖੋ। \\n '' \\nfrom NAME_1.contrib.auth.decorators ਇੰਪੋਰਟ ਲੌਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \\nfrom NAME_1.cache ਇੰਪੋਰਟ ਕੈਸ਼\\n\\ n@login_required\\n@cache \\ndefਮਾਈ _ ਵਿਊ (ਬੇਨਤੀ): \\n... \\n '\\n ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ,' ਮਾਈ _ ਵਿਊ 'ਫੰਕਸ਼ਨ ਸਿਰਫ ਤਾਂ ਹੀ ਚਲਾਇਆ ਜਾਵੇਗਾ ਜੇ ਬੇਨਤੀ ਕਿਸੇ ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਦੀ ਹੈ ਅਤੇਜਵਾਬ ਕੈਸ਼ ਕੀਤਾ ਜਾਵੇਗਾ। \\n\\n ਤੁਸੀਂ 'functools.wrap_view' ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਇੱਕ ਦ੍ਰਿਸ਼ ਤੋਂ ਇੱਕ ਡੇਕੋਰੇਟਰ ਬਣਾਉਣ ਲਈ ਵੀ ਕਰ ਸਕਦੇ ਹੋ। \\n '' \\nfromNAME_1.contrib.auth.decorators ਇੰਪੋਰਟ ਲੌਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \\nfrom NAME_1.cache ਇੰਪੋਰਟ ਕੈਸ਼\\n\\ndef ਕੈਸ਼ _ ਅਤੇ _ ਲੌਗਇਨ (ਫੰਕ): \\n ਡਿਫ ਰੈਪਰ (* ਆਰਗਸ, * * ਕਵਾਰਗਸ): \\nਬੇਨਤੀ = ਆਰਜੀਐੱਸ [0] \\n ਪ੍ਰਤੀਕਿਰਿਆ = ਫੰਕ (ਬੇਨਤੀ, * ਆਰਜੀਐੱਸ [1:], * * ਕਵਾਰਗਸ) \\n cache.set (ਬੇਨਤੀ, ਪ੍ਰਤੀਕਿਰਿਆ) \\n ਵਾਪਸੀ ਪ੍ਰਤੀਕਿਰਿਆ \\n ਵਾਪਸੀਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, 'ਕੈਸ਼ _ ਅਤੇ _ ਲੌਗਇਨ' ਫੰਕਸ਼ਨ ਇੱਕ ਡੇਕੋਰੇਟਰ ਹੈ ਜੋ ਕਿਜੋਡ਼ਦਾ ਹੈ ',' ਜਾਰੀ ਰੱਖੋ '] ", 'ਪਾਈਥਨ/ਨਾਮ _ 1 ਸਜਾਵਟ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ?', ' [\'ਪਾਈਥਨ/ਨਾਮ _ 1 ਡੇਕੋਰੇਟਰ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ?\', \'ਪਾਈਥਨ ਵਿੱਚ, ਇੱਕ ਡੇਕੋਰੇਟਰ ਇੱਕ ਅਜਿਹਾ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਇੱਕ ਹੋਰ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਇੰਪੁੱਟ ਵਜੋਂ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸ ਵਿੱਚ ਆਪਣੇ ਵਿਵਹਾਰ ਨੂੰ ਸੋਧਦਾ ਹੈ।ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ। ਸਜਾਵਟ ਦੀ ਵਰਤੋਂ ਅਕਸਰ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਵਾਧੂ ਕਾਰਜਸ਼ੀਲਤਾ ਜੋਡ਼ਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਲੌਗਿੰਗ, ਪ੍ਰਮਾਣਿਕਤਾ, ਜਾਂ ਕੈਚਿੰਗ। \\n\\n NAME _ 1 ਵਿੱਚ,ਸਜਾਵਟ ਕਰਨ ਵਾਲਿਆਂ ਦੀ ਵਰਤੋਂ ਦ੍ਰਿਸ਼ਾਂ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸੋਧਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਦ੍ਰਿਸ਼ ਉਹ ਕਾਰਜ ਹਨ ਜੋ ਬੇਨਤੀਆਂ ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ ਅਤੇ ਇੱਕ ਨਾਮ _ 1 ਵਿੱਚ ਪ੍ਰਤੀਕਿਰਿਆਵਾਂ ਪੈਦਾ ਕਰਦੇ ਹਨ।ਐਪਲੀਕੇਸ਼ਨ. NAME _ 1 ਵਿੱਚ \\n\\nA ਡੇਕੋਰੇਟਰ ਇੱਕ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਇੱਕ ਵਿਊ ਨੂੰ ਇਸ ਦੇ ਇੰਪੁੱਟ ਵਜੋਂ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਦਿੰਦਾ ਹੈ। ਨਵਾਂ ਫੰਕਸ਼ਨ ਵਿਊ ਫੰਕਸ਼ਨ ਹੈ।ਸਜਾਵਟੀ ਦੁਆਰਾ ਜੋਡ਼ੀ ਗਈ ਵਾਧੂ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੇ ਨਾਲ। \\n\\n ਉਦਾਹਰਨ ਲਈ, \'@login_required\' ਸਜਾਵਟੀ, ਜੋ ਦ੍ਰਿਸ਼ਾਂ ਤੱਕ ਪਹੁੰਚ ਨੂੰ ਸੀਮਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾਵਾਂ ਲਈ, ਇੱਕ ਫੰਕਸ਼ਨ ਦੇ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਇੱਕ ਦ੍ਰਿਸ਼ ਨੂੰ ਇਸਦੇ ਇੰਪੁੱਟ ਦੇ ਰੂਪ ਵਿੱਚ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਬੇਨਤੀ ਇੱਕ ਤੋਂ ਹੈਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਅਤੇ ਜੇ ਨਹੀਂ, ਤਾਂ 401 ਸਥਿਤੀ ਕੋਡ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ।ਲਾਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \\n\\ n@login_required \\ndef ਮਾਈ _ ਵਿਊ (ਬੇਨਤੀ): \\n... \\n \'\\n ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ,\' ਮਾਈ _ ਵਿਊ \'ਫੰਕਸ਼ਨ ਸਿਰਫ ਤਾਂ ਹੀ ਚਲਾਇਆ ਜਾਵੇਗਾ ਜੇ ਬੇਨਤੀ ਹੈਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਤੋਂ। \\n\\nਡੈਕਰੇਟਰਾਂ ਦੀ ਵਰਤੋਂ ਕਈ ਸਜਾਵਟ ਕਰਨ ਵਾਲਿਆਂ ਨੂੰ ਇਕੱਠੇ ਕਰਨ ਲਈ ਵੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਤਾਂ ਜੋ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀਆਂ ਕਈ ਪਰਤਾਂ ਨੂੰ ਜੋਡ਼ਿਆ ਜਾ ਸਕੇ।ਵੇਖੋ। \\n \'\' \\nfrom NAME_1.contrib.auth.decorators ਇੰਪੋਰਟ ਲੌਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \\nfrom NAME_1.cache ਇੰਪੋਰਟ ਕੈਸ਼\\n\\ n@login_required\\n@cache \\ndefਮਾਈ _ ਵਿਊ (ਬੇਨਤੀ): \\n... \\n \'\\n ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ,\' ਮਾਈ _ ਵਿਊ \'ਫੰਕਸ਼ਨ ਸਿਰਫ ਤਾਂ ਹੀ ਚਲਾਇਆ ਜਾਵੇਗਾ ਜੇ ਬੇਨਤੀ ਕਿਸੇ ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਦੀ ਹੈ ਅਤੇਜਵਾਬ ਕੈਸ਼ ਕੀਤਾ ਜਾਵੇਗਾ। \\n\\n ਤੁਸੀਂ \'functools.wrap_view\' ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਇੱਕ ਦ੍ਰਿਸ਼ ਤੋਂ ਇੱਕ ਡੇਕੋਰੇਟਰ ਬਣਾਉਣ ਲਈ ਵੀ ਕਰ ਸਕਦੇ ਹੋ। \\n \'\' \\nfromNAME_1.contrib.auth.decorators ਇੰਪੋਰਟ ਲੌਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \\nfrom NAME_1.cache ਇੰਪੋਰਟ ਕੈਸ਼\\n\\ndef ਕੈਸ਼ _ ਅਤੇ _ ਲੌਗਇਨ (ਫੰਕ): \\n ਡਿਫ ਰੈਪਰ (* ਆਰਗਸ, * * ਕਵਾਰਗਸ): \\nਬੇਨਤੀ = ਆਰਜੀਐੱਸ [0] \\n ਪ੍ਰਤੀਕਿਰਿਆ = ਫੰਕ (ਬੇਨਤੀ, * ਆਰਜੀਐੱਸ [1:], * * ਕਵਾਰਗਸ) \\n cache.set (ਬੇਨਤੀ, ਪ੍ਰਤੀਕਿਰਿਆ) \\n ਵਾਪਸੀ ਪ੍ਰਤੀਕਿਰਿਆ \\n ਵਾਪਸੀਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, \'ਕੈਸ਼ _ ਅਤੇ _ ਲੌਗਇਨ\' ਫੰਕਸ਼ਨ ਇੱਕ ਡੇਕੋਰੇਟਰ ਹੈ ਜੋ ਕਿ\'ਮਾਈ _ ਵਿਊ\' ਫੰਕਸ਼ਨ ਵਿੱਚ \',\' ਜਾਰੀ ਰੱਖੋ \',\' ਲੌਗਇਨ _ ਲੋਡ਼ੀਂਦਾ \'ਅਤੇ\' ਕੈਸ਼ \'ਕਾਰਜਸ਼ੀਲਤਾ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ।\' ਕੈਸ਼ _ ਅਤੇ _ ਲੌਗਇਨ \'ਫੰਕਸ਼ਨ ਇੱਕ ਰੈਪਰ ਫੰਕਸ਼ਨ ਹੈ।ਜੋ \'ਮਾਈ _ ਵਿਊ\' ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਇੰਪੁੱਟ ਦੇ ਰੂਪ ਵਿੱਚ ਲੈਂਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਨਵਾਂ ਫੰਕਸ਼ਨ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਬੇਨਤੀ ਕਿਸੇ ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਦੀ ਹੈ ਅਤੇ ਜੇ ਨਹੀਂ,401 ਸਥਿਤੀ ਕੋਡ ਨਾਲ ਇੱਕ ਜਵਾਬ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਅਤੇ ਜਵਾਬ ਨੂੰ ਕੈਸ਼ ਵੀ ਕਰਦਾ ਹੈ। \\n\\n ਇਹ ਵੀ ਧਿਆਨ ਦੇਣ ਯੋਗ ਹੈ ਕਿ NAME _ 1 ਵਿੱਚ ਸਜਾਵਟ ਦੀ ਵਰਤੋਂ ਵੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈਫਾਰਮਾਂ, ਮਾਡਲਾਂ ਅਤੇ ਇੱਕ ਨਾਮ _ 1 ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਹੋਰ ਹਿੱਸਿਆਂ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸੋਧੋ, ਨਾ ਕਿ ਸਿਰਫ ਦ੍ਰਿਸ਼। \\n\\n ਸੰਖੇਪ ਵਿੱਚ, ਪਾਈਥਨ ਅਤੇ ਨਾਮ _ 1 ਵਿੱਚ ਸਜਾਵਟ ਕਰਨ ਵਾਲੇ ਹਨਫੰਕਸ਼ਨ ਜੋ ਇੱਕ ਹੋਰ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਇੰਪੁੱਟ ਵਜੋਂ ਲੈਂਦੇ ਹਨ ਅਤੇ ਇਸਦੇ ਵਿਵਹਾਰ ਨੂੰ ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ ਸੋਧਦੇ ਹਨ। ਉਹ ਅਕਸਰ ਵਾਧੂ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਜੋਡ਼ਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨਫੰਕਸ਼ਨ, ਜਿਵੇਂ ਕਿ ਲੌਗਿੰਗ, ਪ੍ਰਮਾਣਿਕਤਾ, ਜਾਂ ਕੈਚਿੰਗ। ਨਾਮ _ 1 ਵਿੱਚ, ਸਜਾਵਟ ਦੀ ਵਰਤੋਂ ਦ੍ਰਿਸ਼ਾਂ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸੋਧਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਚੇਨ ਲਈ ਵੀ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ।ਇੱਕ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀਆਂ ਕਈ ਪਰਤਾਂ ਨੂੰ ਜੋਡ਼ਨ ਲਈ ਕਈ ਸਜਾਵਟ ਕਰਨ ਵਾਲੇ ਇਕੱਠੇ ਹੁੰਦੇ ਹਨ। \'functools.wrap_view\' ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਇੱਕ ਸਜਾਵਟ ਕਰਨ ਵਾਲੇ ਨੂੰ ਬਣਾਉਣ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।", \'ਤੁਹਾਡੀ ਉਦਾਹਰਣ ਵਿੱਚ, ਕੈਸ਼ _ ਅਤੇ _ ਲੌਗਇਨ ਅਸਲ ਵਿੱਚ ਕਿਵੇਂ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਉਪਭੋਗਤਾ ਲੌਗ ਇਨ ਹੈ?\' ', 'ਪਾਈਥਨ/ਨਾਮ _ 1 ਸਜਾਵਟ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ? \n ']