حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكاميرا
دليل عملي للحلقات غير المصرح بها RTSP 401، ومصادقة الملخص، والمصادقة الأساسية، والاستجابات غير القديمة، ومستخدمي الكاميرا الخاطئين، ومشكلات اعتماد عنوان URL.
تبدو إحدى مشكلات كاميرا RTSP الأكثر شيوعًا بسيطة في البداية: "يتصل العميل، وتجيب الكاميرا، لكن البث لا يبدأ أبدًا. يكرر السجل "401 غير مصرح به"، أو يطلب العارض كلمة المرور مرة أخرى، أو يقول التطبيق أن عنوان URL لـ RTSP خاطئ على الرغم من أن اسم المستخدم وكلمة المرور يبدوان صحيحين."
هذه حلقة مصادقة RTSP. يحدث ذلك عندما تتحدى الكاميرا العميل، ويرسل العميل بيانات الاعتماد، وترفضها الكاميرا أو تسأل مرة أخرى. يمكن أن يكون السبب الجذري هو كلمة مرور سيئة، ولكن يمكن أيضًا أن يكون عدم تطابق مصادقة الملخص، أو المعالجة القديمة، أو أذونات الحساب، أو الأحرف الخاصة في عنوان URL، أو مسار دفق خاطئ، أو الكاميرا التي تتطلب المصادقة على DESCRIBE، وSETUP، وPLAY بشكل منفصل.
يعد RTSP Inspector مفيدًا هنا لأن الدليل المهم موجود في تبادل التحكم في RTSP. غالبًا ما يقوم مشغل الوسائط بإخفاء تفاصيل التحدي وإعادة المحاولة خلف خطأ تسجيل دخول واحد. يمكن أن يُظهر العرض التشخيصي للبروتوكول ما إذا كان الفشل قد حدث في OPTIONS أو DESCRIBE أو SETUP أو PLAY، وما إذا كانت الكاميرا قد أعادت WWW-Authenticate أو stale = true أو تحديًا متكررًا للمجال.
ماذا تعني الاستجابة غير المصرح بها RTSP 401
في RTSP، يعني "401 غير مصرح به" عادةً "المصادقة مطلوبة" بدلاً من "الخادم غير قابل للوصول". يمكن للكاميرا الرد على طلب لم تتم مصادقته مثل هذا:
RTSP/1.0 401 Unauthorized
CSeq: 2
WWW-Authenticate: Digest realm="IP Camera", nonce="abc123"
Basic authentication vs Digest authentication
Special characters in RTSP URL credentials
Credentials in an RTSP URL can break when the password contains characters such as @, :, /, ?, #, %, or &.
A URL like this is ambiguous:
rtsp://admin:pa@ss@192.168.1.50:554/stream1
rtsp://admin:pa%40ss@192.168.1.50:554/stream1
Account permissions can block RTSP even when web login works
Wrong stream path can look like wrong credentials
That means a 401 does not prove the URL path is valid.
Common RTSP path patterns include:
/stream1/stream2/live/h264/h265/cam/realmonitor?channel=1&subtype=0/Streaming/Channels/101/profile1/media.smp
Stale nonce and repeated Digest challenges
The camera may respond with:
WWW-Authenticate: Digest realm="IP Camera", nonce="new-value", stale=true
يجب على العميل الصحيح إعادة المحاولة باستخدام الرقم الجديد. إذا لم يفهم العميل معالجة nonce التي لا معنى لها، فقد لا يتقدم الدفق أبدًا بعد المصادقة.
هذه المشكلة شائعة بشكل خاص مع الكاميرات الموجودة خلف الوكلاء، أو طبقات ترحيل NVR، أو البرامج الثابتة التي تنفذ مصادقة Digest بشكل فضفاض. ويمكن أن يظهر أيضًا عندما يعيد العميل استخدام جلسة RTSP قديمة بشكل مفرط.
المصادقة على الوصف والإعداد والتشغيل
تتحدى بعض الكاميرات طلب DESCRIBE الأولي فقط. ويتحدى آخرون أساليب متعددة. يمكن أن يفشل الدفق مثل هذا:
- نجح
DESCRIBEبعد المصادقة. - يتلقى
SETUP`401 غير مصرح به' آخر. - لا يقوم العميل بإعادة إرسال بيانات الاعتماد لـ
SETUP. - التشغيل لا يبدأ أبدًا.
يمكن أن يحدث نفس الشيء في "PLAY". قد تتطلب الكاميرا رؤوس "التفويض" في جميع الطلبات المحمية. إذا قام العميل بمصادقة الطلب الأول فقط، فقد يظهر خطأ "لا يمكن تشغيل الدفق" مربكًا بدلاً من خطأ المصادقة.
يسهل RTSP Inspector رؤية ذلك لأنه يتعامل مع تسلسل أسلوب RTSP كدليل من الدرجة الأولى. السؤال ليس فقط "هل نجح تسجيل الدخول؟" ولكن "ما هي الطريقة التي تم تحديها وهل أجاب العميل بشكل صحيح؟"
قائمة مرجعية لحلقات المصادقة RTSP 401
استخدم هذا الترتيب عند التصحيح:
- قم بتأكيد اسم المستخدم وكلمة المرور الدقيقين باستخدام حساب كاميرا معروف.
- أحرف خاصة لتشفير عنوان URL في عنوان URL لـ RTSP.
- اختبر ما إذا كانت الكاميرا تتطلب مصادقة Digest أو Basic.
- افحص رأس
WWW-Authenticateبحثًا عن النطاق والرقم والخوارزمية والأعلام التي لا معنى لها. - تحقق مما إذا كان العميل يرسل "التفويض" على "الوصف" و"الإعداد" و"التشغيل".
- تأكد من أن الحساب لديه إذن RTSP وإذن القناة، وليس إذن واجهة مستخدم الويب فقط.
- اختبر مسارات التيار الرئيسي والتيار الفرعي بشكل منفصل.
- قارن معرف URI المستخدم في طلب RTSP بمعرف URI المستخدم في حساب الاستجابة الموجزة.
- تحقق مما إذا كانت البرامج الثابتة للكاميرا قد غيرت سلوك المصادقة.
- تجنب تشخيص برامج ترميز الوسائط حتى تكتمل مصادقة RTSP فعليًا.
ما تعنيه عمليات بحث Google عادة
عندما يبحث شخص ما عن "RTSP 401 Unauthorized IP Camera"، فإنه عادةً ما يحتاج إلى معرفة ما إذا كانت بيانات الاعتماد خاطئة. عندما يبحثون عن "حلقة مصادقة RTSP Digest"، عادةً ما يقومون بتجربة كلمة المرور بالفعل ويحتاجون إلى دليل البروتوكول. عندما يبحثون عن "الكاميرا RTSP تطلب كلمة المرور بشكل متكرر"، فإنهم بحاجة إلى فحص التحدي وإعادة محاولة التسلسل.
الإجابة المفيدة ليست مجرد "إعادة تعيين كلمة المرور". الجواب المفيد هو:
- هل طعنت الكاميرا في الطلب؟
- هل أجاب العميل بنظام المصادقة المتوقع؟
- هل قبلت الكاميرا الإجابة؟
- هل فشلت طريقة RTSP اللاحقة مرة أخرى؟
- هل فشل مسار البث أو إذن الحساب بعد تسجيل الدخول؟
وهذا هو السبب في أن الأداة الموجهة نحو البروتوكول أفضل من اختبار اللاعب فقط لهذه الفئة من المشكلات.
التشخيص النهائي
يتم حل حلقة مصادقة RTSP عن طريق مطابقة بيانات الاعتماد، وترميز URL، ونظام المصادقة، وطلب URI، وإذن الحساب، وسلوك التفويض على مستوى الطريقة. إذا أظهر التتبع استجابات `401 غير مصرح بها' متكررة مع تغيير الحروف، فافحص معالجة الملخص. إذا أظهر نجاح المصادقة متبوعًا بأخطاء الدفق، فانتقل إلى مسار URL وSDP والنقل وRTP وتشخيصات برنامج الترميز.
تم تصميم RTSP Inspector لسير العمل الذي يعتمد على الأدلة أولاً: تأكد من مسار التحكم في RTSP قبل افتراض أن الكاميرا أو المشغل أو برنامج الترميز أو الشبكة على خطأ.
<!-- rtsp-localized-evidence-foundation-v1:start -->خطة إثبات عملية لموضوع «حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكاميرا»
الإجابة المباشرة هي أن تشخيص بث كاميرا لا يعتمد على ظهور صورة أو على رمز خطأ منفرد. يجب ربط النتيجة بطلب RTSP وردّه، وباختيار Transport، وبهوية جلسة صالحة، ثم بأرقام تسلسل RTP والطوابع الزمنية وبيانات RTCP عند وصول الوسائط. في موضوع «حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكاميرا» ابدأ بأقرب طبقة إلى العرض الظاهر، لكن احتفظ بسجل زمني واحد حتى لا تختلط مشكلة التحكم بمشكلة الشبكة أو برنامج فك الترميز.
أنشئ حالة اختبار صغيرة قبل تغيير إعدادات الكاميرا أو الجدار الناري. دوّن عنوان RTSP بعد إخفاء كلمة المرور، ووقت الاختبار، واسم المسار، ونوع النقل المطلوب، ورد الخادم، وأول لحظة تصل فيها الوسائط. نفّذ محاولة واحدة عبر UDP وأخرى عبر TCP interleaved عندما يسمح الجهاز بذلك. لا تغيّر عنوان المسار وبيانات الاعتماد والنقل في التجربة نفسها، لأن نجاح المحاولة التالية لن يوضح أي متغير أصلح العطل.
| طبقة الفحص | الدليل الذي يجب حفظه | سؤال القرار |
|---|---|---|
| RTSP | الطلب، الحالة، الرؤوس، CSeq وSession | هل وافق الخادم على العملية نفسها؟ |
| SDP | control وpayload type وclock rate وcodec | هل وصف الخادم المسار الذي سيُستقبل؟ |
| Transport | client_port أو interleaved وقيمة server_port | هل يرسل الطرفان عبر القناة نفسها؟ |
| RTP | SSRC والتسلسل والطابع الزمني وmarker | هل تصل وحدات الوسائط بترتيب يمكن تفسيره؟ |
| RTCP | sender report وCNAME وBYE | هل توجد ساعة وهوية ونهاية جلسة قابلة للتتبع؟ |
| Decoder | SPS/PPS/VPS وpacketization mode | هل البيانات الواصلة قابلة للتهيئة وفك الترميز؟ |
افصل دائمًا بين «لم تصل وسائط» و«وصلت وسائط غير قابلة للفك». غياب حزم RTP بعد SETUP وPLAY يشير إلى مسار UDP أو NAT أو جدار ناري أو رد Transport غير متطابق. وصول RTP مع فجوات في التسلسل يثبت فقدًا أو إعادة ترتيب. وصول تسلسل متماسك مع فشل الصورة ينقل التحقيق إلى payload type وclock rate وحدود الإطار ومعلمات H.264 أو H.265. هذه الحدود أهم من رسالة اللاعب العامة لأنها تحدد المالك المحتمل للإصلاح.
كيف تُكتب إجابة قابلة للاقتباس؟
اكتب النتيجة في ثلاث جمل: العملية التي نجحت، أول دليل أخفق، والتجربة التالية التي تفصل بين سببين. مثال البنية هو: «نجح DESCRIBE وSETUP وPLAY؛ لم تصل أي حزمة RTP إلى منافذ العميل المعلن عنها؛ إعادة الاختبار عبر TCP interleaved ستفصل بين حجب UDP وخطأ عنوان المسار». لا تقل إن الكاميرا أو الشبكة «معطلة» من دون حزمة أو رد يثبت الحد.
ما الحد الأدنى لإعادة إنتاج المشكلة؟
احتفظ بنسخة من تبادل OPTIONS وDESCRIBE وSETUP وPLAY، ونص SDP، ورد Transport، ومعرّف Session بعد إخفاء الأسرار. بالنسبة للوسائط، سجّل SSRC وأول وآخر رقم تسلسل ومعدل الساعة وعدد الفجوات ومدة الالتقاط. اذكر هل يعمل VLC أو VMS آخر، لكن تعامل مع ذلك كاختبار فرق لا كدليل أن الطرف الآخر صحيح في كل شيء.
متى يجب فحص الخادم بدل العميل؟
افحص الخادم عندما يرفض العملية بحالة واضحة، أو يغيّر عنوان control إلى مسار غير موجود، أو يعيد Transport لا يطابق العرض، أو يبدّل SSRC والساعة من دون انتقال معلن. افحص العميل عندما يكرر nonce قديمًا، أو يرسل Session مفقودة، أو يطلب UDP ثم لا يفتح المنافذ، أو يفسر marker بوصفه نهاية كل NAL. قد يكون العطل بينهما؛ لذلك يجب أن تبقى الحزمة والوقت جزءًا من التقرير.
كيف تُراجع النتيجة قبل التسليم؟
أعد المحاولة من بداية اتصال جديدة، ثم قارن السجلين عند أول اختلاف فقط. تأكد من أن التقرير لا يحتوي كلمة مرور أو رمز Authorization كاملًا. اربط كل استنتاج برقم CSeq أو رقم تسلسل أو طابع زمني. استخدم دليل RTSP المرتبط للخطوات المجاورة، وارجع إلى RTSP Inspector لمسار اختبار بث RTSP وجمع الأدلة محليًا. لا يحتاج هذا التشخيص إلى رفع تدفق الكاميرا إلى خدمة عامة.
<!-- rtsp-localized-evidence-foundation-v1:end -->اختبار قبول خاص بحلقة المصادقة
لا تعتبر تغيير كلمة المرور إصلاحًا نهائيًا حتى تنفذ اتصالًا جديدًا من دون ذاكرة تخزين مؤقت وتثبت أن كل طلب محمي تلقى التفويض الصحيح. سجّل قيمة CSeq لكل من DESCRIBE وSETUP وPLAY، ثم قارن النطاق والخوارزمية وقيمة qop والرقم الجديد في كل تحدٍّ. أخفِ قيمة الاستجابة واسم المستخدم عند مشاركة التقرير، لكن احتفظ بنوع المصادقة ومسار الطلب والوقت.
إذا نجح الطلب الأول وفشل الطلب التالي، فاختبر ما إذا كان العميل يعيد حساب Digest باستخدام URI الخاص بالطريقة الجديدة بدل إعادة استخدام جواب سابق. وإذا أرسل الخادم stale=true، يجب أن يعيد العميل المحاولة بالرقم الجديد من دون مطالبة المستخدم بكلمة مرور أخرى. معيار القبول هو تسلسل واحد واضح: تحدٍّ متوقع، إعادة محاولة مصادق عليها، حالات نجاح متتابعة، ثم وصول RTP أو انتقال التحقيق إلى طبقة الوسائط. هذا الفصل يمنع وصف خطأ URL أو إذن قناة أو نقل UDP بأنه مشكلة كلمة مرور.
إجابة مباشرة وحدود القبول
الإجابة المختصرة عن «حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكاميرا» هي: دليل عملي للحلقات غير المصرح بها RTSP 401، ومصادقة الملخص، والمصادقة الأساسية، والاستجابات غير القديمة، ومستخدمي الكاميرا الخاطئين، ومشكلات اعتماد عنوان URL. تعامل مع هذه العبارة كنتيجة يجب التحقق منها، لا كوعد ينطبق على كل إدخال أو جهاز أو مشروع أو بيئة. النتيجة المكتملة تسجل الحالة الأولية والإجراء الدقيق والمخرج المرئي والشرط الذي يثبت اكتمال المهمة في RTSP Inspector.
إجراء يبدأ من الأدلة
ابدأ بحالة صغيرة قابلة للتكرار قبل تغيير مشروع كامل. سجل إصدار التطبيق ونظام التشغيل وهوية الإدخال أو الجهاز والإعدادات المهمة والنتيجة المتوقعة. نفذ إجراءً واحدًا مقصودًا، واحتفظ بأول انتقال غير متوقع، وقارنه بحالة سليمة معروفة إن توفرت. تغيير عدة عناصر معًا يخفي الشرط الذي أنشأ المشكلة أو أصلحها.
نقطة التحقق 1: حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكام
لا تغلق «حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكاميرا» حتى تظل النتيجة المحفوظة أو المصدرة أو المعاد فتحها مطابقة للحالة المرصودة. استجابة الواجهة المؤقتة مفيدة، لكن الدليل الدائم أقوى. سجل أي قيد باق لمن يتابع العمل.
نقطة التحقق 2: دليل عملي للحلقات غير المصرح بها RTSP 401، ومصادقة الملخص، والمصادقة الأساسية، والاستجابات
عند «دليل عملي للحلقات غير المصرح بها RTSP 401، ومصادقة الملخص، والمصادقة الأساسية، والاستجابات غير القديمة، ومستخدمي الكاميرا الخاطئين، ومشكلات اعتماد عنو»، افصل قرار المنتج عن حدود النظام أو العتاد أو الملف المصدر أو الصلاحية أو سير العمل. أثبت أي طبقة قدمت الدليل قبل نسبة السبب. بذلك لا يتحول عرض قريب إلى سبب جذري مزعوم.
نقطة التحقق 3: ماذا تعني الاستجابة غير المصرح بها RTSP 401
لا تغلق «ماذا تعني الاستجابة غير المصرح بها RTSP 401» حتى تظل النتيجة المحفوظة أو المصدرة أو المعاد فتحها مطابقة للحالة المرصودة. استجابة الواجهة المؤقتة مفيدة، لكن الدليل الدائم أقوى. سجل أي قيد باق لمن يتابع العمل.
نقطة التحقق 4: Basic authentication vs Digest authentication
عند «Basic authentication vs Digest authentication»، افصل قرار المنتج عن حدود النظام أو العتاد أو الملف المصدر أو الصلاحية أو سير العمل. أثبت أي طبقة قدمت الدليل قبل نسبة السبب. بذلك لا يتحول عرض قريب إلى سبب جذري مزعوم.
نقطة التحقق 5: Special characters in RTSP URL credentials
لا تغلق «Special characters in RTSP URL credentials» حتى تظل النتيجة المحفوظة أو المصدرة أو المعاد فتحها مطابقة للحالة المرصودة. استجابة الواجهة المؤقتة مفيدة، لكن الدليل الدائم أقوى. سجل أي قيد باق لمن يتابع العمل.
نقطة التحقق 6: Account permissions can block RTSP even when web login works
عند «Account permissions can block RTSP even when web login works»، افصل قرار المنتج عن حدود النظام أو العتاد أو الملف المصدر أو الصلاحية أو سير العمل. أثبت أي طبقة قدمت الدليل قبل نسبة السبب. بذلك لا يتحول عرض قريب إلى سبب جذري مزعوم.
نقطة التحقق 7: Wrong stream path can look like wrong credentials
لا تغلق «Wrong stream path can look like wrong credentials» حتى تظل النتيجة المحفوظة أو المصدرة أو المعاد فتحها مطابقة للحالة المرصودة. استجابة الواجهة المؤقتة مفيدة، لكن الدليل الدائم أقوى. سجل أي قيد باق لمن يتابع العمل.
نقطة التحقق 8: Stale nonce and repeated Digest challenges
عند «Stale nonce and repeated Digest challenges»، افصل قرار المنتج عن حدود النظام أو العتاد أو الملف المصدر أو الصلاحية أو سير العمل. أثبت أي طبقة قدمت الدليل قبل نسبة السبب. بذلك لا يتحول عرض قريب إلى سبب جذري مزعوم.
نقطة التحقق 9: المصادقة على الوصف والإعداد والتشغيل
لا تغلق «المصادقة على الوصف والإعداد والتشغيل» حتى تظل النتيجة المحفوظة أو المصدرة أو المعاد فتحها مطابقة للحالة المرصودة. استجابة الواجهة المؤقتة مفيدة، لكن الدليل الدائم أقوى. سجل أي قيد باق لمن يتابع العمل.
نقطة التحقق 10: قائمة مرجعية لحلقات المصادقة RTSP 401
عند «قائمة مرجعية لحلقات المصادقة RTSP 401»، افصل قرار المنتج عن حدود النظام أو العتاد أو الملف المصدر أو الصلاحية أو سير العمل. أثبت أي طبقة قدمت الدليل قبل نسبة السبب. بذلك لا يتحول عرض قريب إلى سبب جذري مزعوم.
مصفوفة القبول
| النقطة | الدليل الواجب حفظه | شرط النجاح |
|---|---|---|
| حلقة مصادقة RTSP: إصلاح فشل 401 غير المصرح به، ومصادقة الملخص، وفشل تسجيل الدخول إلى الكاميرا | الحالة الأولية وإجراء واحد والحالة الناتجة | يستطيع مشغل ثان تكرار النتيجة |
| دليل عملي للحلقات غير المصرح بها RTSP 401، ومصادقة الملخص، والمصادقة الأساسية، والاستجابات غير القديمة، ومستخدمي الكامير | الحالة الأولية وإجراء واحد والحالة الناتجة | يستطيع مشغل ثان تكرار النتيجة |
| ماذا تعني الاستجابة غير المصرح بها RTSP 401 | الحالة الأولية وإجراء واحد والحالة الناتجة | يستطيع مشغل ثان تكرار النتيجة |
| Basic authentication vs Digest authentication | الحالة الأولية وإجراء واحد والحالة الناتجة | يستطيع مشغل ثان تكرار النتيجة |
| Special characters in RTSP URL credentials | الحالة الأولية وإجراء واحد والحالة الناتجة | يستطيع مشغل ثان تكرار النتيجة |
| Account permissions can block RTSP even when web login works | الحالة الأولية وإجراء واحد والحالة الناتجة | يستطيع مشغل ثان تكرار النتيجة |
عزل الفشل والاستعادة والتسليم
توقف عند أول حد يفشل. احتفظ بالمصدر أو المشروع أو الجلسة أو الالتقاط، وأنشئ نسخة قبل التحرير المدمر، وغيّر متغيرًا واحدًا في كل تجربة. إعادة سير واسع بعد عدة تغييرات قد تعطي نتيجة مختلفة من دون تفسير السبب.
افصل غياب الدليل عن دليل الغياب. قد تعني الشاشة الفارغة إدخالًا أو نطاقًا أو مرشحًا أو صلاحية أو جهازًا أو فترة أو حالة مشروع خاطئة. أثبت مسار الالتقاط أو الاستيراد قبل تفسير decoder أو المحرر أو التقرير أو التصدير.
قبل التسليم، أعد فتح الأثر الدائم وافحص بدايته ونقطة القرار ونهايته. سجل الإصدار والمنصة والإعداد والتوقع والملاحظة وأصغر إعادة إنتاج. احذف البيانات الحساسة أو احجبها وتأكد من أن المستلم مخول.
أسئلة وأجوبة
ما أسرع بداية موثوقة؟
استخدم أصغر حالة ممثلة، واكتب النتيجة المتوقعة، وغيّر متغيرًا واحدًا. أثبت المسار الأساسي قبل إضافة المرشحات أو التأثيرات أو التعديلات أو الأتمتة أو مصدر أكبر.
ما الأدلة التي ينبغي حفظها؟
احتفظ بهوية الإدخال والإصدار والمنصة والإعدادات والإجراء الدقيق وأول انتقال غير متوقع والمخرج النهائي. أغلق المشروع أو الجلسة أو التقرير أو التصدير وأعد فتحه.
متى يجب تكرار الإجراء؟
كرره بعد تغيير مؤثر في التطبيق أو النظام أو driver أو firmware أو النموذج أو المصدر أو سير العمل. احتفظ بالحالة المقبولة السابقة كأساس مقارنة دون تعديل.
متى تصبح المهمة جاهزة للتسليم؟
عندما يستطيع شخص مخول آخر تحديد الإدخال وتكرار الإجراء ورؤية النتيجة نفسها وفهم القيود وفتح الأثر المحفوظ دون الاعتماد على حالة محلية غير موثقة.
أدلة مرتبطة
تغطي الصفحات التالية باللغة نفسها المراحل المجاورة من دون تغيير المالك القانوني لهذا الموضوع:
<!-- multilingual-blog-closeout:end -->