ניהול סיכונים בשוק ההון

ניהול סיכונים במסחר – המדריך המלא

בעולם המסחר הרווחים עשויים להיות מפתים אך הסכנות אורבות בכל פינה. שווקים תנודתיים, החלטות אימפולסיביות, חוסר ידע או פשוט חוסר מזל.. כל אלה עלולים למחוק הון של שנים בתוך דקות. דווקא מסיבה זו, ניהול סיכונים אינו רק המלצה אלא הוא תנאי בסיס להישרדות ולהצלחה לאורך זמן.

ניהול סיכונים הוא האומנות של שמירה על ההון, גם כשהשוק לא משחק לטובתכם. מדובר באסטרטגיה שכל סוחר, מנוסה או מתחיל, חייב לאמץ לא רק כדי למזער הפסדים, אלא גם כדי לסחור מתוך שיקול דעת ולא מתוך רגש.

במאמר זה אעמיק בעקרונות המרכזיים של ניהול סיכונים במסחר: מה זה בכלל, איך מיישמים את זה בפועל, אילו כלים קיימים ואילו טעויות חשוב להימנע מהן. אם ברצונכם לסחור בצורה חכמה, שקולה ובטוחה יותר המדריך הזה הוא בדיוק בשבילכם.

מה זה ניהול סיכונים במסחר?

ניהול סיכונים במסחר הוא תהליך קבלת החלטות שמטרתו להגן על ההון של הסוחר מפני הפסדים גדולים ומיותרים. זהו הבסיס שעליו בנויה כל אסטרטגיית מסחר מקצועית והוא נועד להבטיח שסוחר יוכל להישאר במשחק גם אחרי שורה של עסקאות פחות מוצלחות.

במילים פשוטות, ניהול סיכונים עוסק בשאלות כמו:

  • כמה כסף אני מוכן להפסיד בעסקה מסוימת?

  • מה ייחשב כנקודת יציאה סבירה אם העסקה לא מתפתחת כפי שציפיתי?

  • כמה מההון שלי כדאי לחשוף לנכס מסוים?

  • האם הסיכון שאני לוקח מוצדק ביחס לפוטנציאל הרווח?

מסחר ללא ניהול סיכונים = הימור

חשוב להבין: סוחר שלא מיישם ניהול סיכונים  למעשה מהמר. הוא נכנס לעסקאות מתוך תקווה ולא מתוך תכנון ועלול לספוג הפסדים קשים ברגע שהשוק יפעל בניגוד לכיוון שציפה.

מונחי יסוד חשובים

  • Drawdown – ירידה זמנית מהשיא של תיק ההשקעות, עד לשפל מסוים. מדד חשוב להבנת העמידות של האסטרטגיה.

  • Stop Loss – פקודה אוטומטית שמפסיקה את העסקה כאשר המחיר מגיע לרמת הפסד מסוימת שהוגדרה מראש.

  • Risk Reward Ratio – יחס בין הסיכון שאתה לוקח לבין הרווח הפוטנציאלי. לדוגמה: סיכון של 100 ש"ח כדי לנסות להרוויח 300 ש"ח = יחס של 1:3.

  • חשיפה – אחוז מההון הכולל שמושקע באותה נקודת זמן בנכס מסוים או בכלל השוק.

  • גידור (Hedging) – טכניקה שנועדה לאזן סיכונים ע"י השקעה נוספת בכיוון הפוך או בנכס משלים.

בסופו של דבר, ניהול סיכונים הוא לא רק אמצעי הגנה אלא גם אמצעי לבניית שקט נפשי, בהירות מחשבתית ויכולת לקבל החלטות שקולות לאורך זמן.

רלוונטי: הכל על מסחר יומי בשוק ההון

עקרונות בסיסיים בניהול סיכונים

אלה העקרונות המרכזיים שיעזרו לכם לשמור על ההון, להפחית לחצים ולהתנהל בצורה מקצועית בשוק ההון.

1. אל תשקיעו יותר מ-1%-2% מההון בעסקה אחת

העיקרון הזה נועד להגן עליכם מפני רצף של הפסדים. כאשר כל עסקה מסכנת רק אחוז קטן מההון הכולל, גם תקופות פחות מוצלחות לא יפגעו בכם באופן קריטי. לדוגמה: אם יש לכם הון של 50,000 ש"ח הגבילו את ההפסד בעסקה ל-500–1,000 ש"ח בלבד.

2. הגדירו יחס סיכון-סיכוי ברור מראש

לפני כל כניסה לעסקה, שאלו את עצמכם: האם הסיכון מצדיק את הסיכוי? יחס מקובל הוא לפחות 1:2 כלומר, סיכון של 100 ש"ח במטרה להרוויח 200 ש"ח. כך, גם אם רק חצי מהעסקאות שלכם מצליחות תישארו רווחיים.

3. השתמשו בפקודות Stop Loss ו-Take Profit

אל תסמכו על תחושת בטן או על כך שתהיו זמינים בזמן אמת. פקודת Stop Loss תעצור את ההפסד בזמן ו-Take Profit תבטיח שתנעלו רווח כשתגיעו ליעד. השילוב בין השתיים יעניק לכם שליטה וביטחון.

4. הימנעו מחשיפה יתרה לנכס או מגזר אחד

פיזור סיכונים נכון הוא עיקרון בסיסי. אל תתפתו "לשים את כל הביצים בסל אחד" גם אם הנכס נראה מבטיח במיוחד. גוונו את התיק שלכם ואל תתמקדו רק בתחום או במטבע אחד.

5. פעלו לפי תוכנית מסחר ברורה

סוחרים מצליחים לא פועלים מתוך אינטואיציה או אמוציות  אלא לפי תוכנית מוגדרת מראש. הגדירו כללים ברורים לכניסה ויציאה מעסקאות, יחס סיכון-סיכוי, מיקום פקודות, ועוד. עקביות היא שם המשחק.

6. התאימו את גודל העסקאות לגודל ההון

כשההון משתנה גם גודל הפוזיציה צריך להשתנות בהתאם. אם הרווחתם או הפסדתם חלק מההון חשבו מחדש את גודל העסקה כדי לשמור על סיכון מבוקר לאורך כל הדרך.

רלוונטי: כמה אפשר להרוויח ממסחר יומי?

טכניקות וכלים מתקדמים

לאחר שמיישמים את העקרונות הבסיסיים, אפשר להתקדם לשלב הבא – טכניקות וכלים שיכולים לשפר משמעותית את הדיוק והשליטה בניהול הסיכונים. הכלים הללו מיועדים לסוחרים שרוצים לנהל את ההון שלהם בצורה מקצועית ומבוססת יותר.

1. ניהול גודל פוזיציה (Position Sizing)

טכניקה שמטרתה להתאים את גודל העסקה לסיכון שאתם מוכנים לקחת. החישוב מתבצע לפי גובה ההון הכולל, רמת הסיכון שאתם מוכנים לקחת בעסקה, ומרחק ה-Stop Loss. כך, ניתן להבטיח שכל עסקה מסכנת אחוז קבוע מהתיק ולא מתבססת על תחושות או סכומים אקראיים.

2. שימוש בנקודות תמיכה והתנגדות

קווי תמיכה והתנגדות יכולים לעזור בהצבת פקודות Stop Loss ו-Take Profit במיקומים הגיוניים. עצם ההבנה איפה נמצאות הנקודות הקריטיות בשוק מאפשרת לנהל את הסיכון בצורה מחושבת יותר.

3. ממוצעים נעים (Moving Averages)

ממוצעים נעים יכולים לשמש כבסיס לכניסה ויציאה מעסקאות, וגם לזיהוי מגמות כלליות. שימוש נכון בהם מאפשר להימנע מכניסה לשוק בנקודות בעייתיות ובכך להפחית את הסיכון.

4. גידור (Hedging)

גידור הוא טכניקה בה פותחים עסקה נוספת  לעיתים בכיוון הפוך, כדי לקזז את הסיכון מהעסקה הראשית. לדוגמה: אם אתם חשופים למניה מסוימת, תוכלו לגדר את הפוזיציה על ידי קניית אופציה להגנה או השקעה בנכס שיפעל הפוך במקרה של ירידות.

5. ניתוח סטטיסטי ו-Backtesting

לפני שמיישמים אסטרטגיה מסוימת, מומלץ לבדוק אותה היסטורית (Backtesting) על נתונים מהעבר. כך ניתן להבין את רמת הסיכון, מספר ההפסדים הרצופים האפשריים, ואחוזי ההצלחה של האסטרטגיה וזה עוד לפני שמכניסים כסף אמיתי.

6. תוכנות לניהול סיכונים

קיימות מערכות מסחר מקצועיות שמציעות כלים מתקדמים לניהול סיכונים כולל חישוב אוטומטי של גודל הפוזיציה, ניהול תיק דינמי ואזהרות במצבים של חשיפה יתרה. כדאי לנצל את הכלים האלה כדי לחזק את השליטה.

טעויות נפוצות בניהול סיכונים

גם הסוחרים המנוסים ביותר נופלים לעיתים לטעות אחת או יותר בניהול סיכונים טעויות שיכולות לעלות ביוקר. הכרה מוקדמת בטעויות הנפוצות היא שלב חשוב בדרך לשיפור ולצמיחה בתחום. הנה כמה מהן:

1. התעלמות מהגדרת Stop Loss

אחת הטעויות הנפוצות וההרסניות ביותר היא להיכנס לעסקה בלי להגדיר מראש את נקודת היציאה במקרה של הפסד. לעיתים מתוך תקווה שהשוק "יתקן את עצמו", סוחרים נשארים בעסקה הרבה מעבר למה שתכננו, עד שההפסד הופך לבלתי הפיך.

2. הגדלת פוזיציה לאחר הפסד (כדי “להחזיר”)

רבים מגדילים את גודל העסקה מיד לאחר הפסד, בניסיון "לפצות" על ההפסד הקודם. פעולה כזו לרוב מתבצעת מתוך לחץ ולא מתוך שיקול דעת ועלולה להוביל להפסדים גדולים עוד יותר. חשוב להבין: הפסדים הם חלק מהמשחק, לא סיבה להמר.

3. הזנחת פיזור ההשקעות

השקעה במספר נכסים דומים או במגזר אחד בלבד יוצרת חשיפה גבוהה לסיכון מערכתי. חוסר גיוון בתיק ההשקעות מגביר את הסיכון, גם אם כל עסקה בנפרד נראית מבטיחה.

4. ביטול Stop Loss תוך כדי תנועה

יש סוחרים שמזיזים את פקודת ה-Stop Loss או מבטלים אותה לגמרי כשהשוק לא הולך בכיוון הרצוי. לרוב זה מסתיים בהפסד גדול ובלקח כואב.
פקודות הגנה נועדו להישמר, לא להיפטר מהן כשלא נוח.

5. התעלמות מנתונים וסטטיסטיקות

התבססות על תחושות בטן במקום על ניתוח נתונים, ביצוע Backtesting, או ניהול יומן מסחר היא מתכון לטעויות חוזרות. ידע הוא כוח וסוחרים שמסתמכים על נתונים מקבלים החלטות טובות יותר.

6. חוסר בהערכת סיכונים חיצוניים

שינויים חיצוניים כמו הודעות כלכליות, ריבית, אינפלציה או אירועים גיאופוליטיים יכולים לשנות מגמות בשוק במהירות. התעלמות מהקשר רחב יותר היא סיכון בפני עצמו.

אני משקיע פסיבית במדדים. אני עדיין צריך לעשות ניהול סיכונים?

אה, אוקיי. אם אתה משקיע במדדים לטווח ארוך (כמו S&P 500, MSCI World וכאלה), אז ניהול הסיכונים נראה אחרת לגמרי ממה שסוחרים יומיומיים עושים. אבל כן, גם אתה צריך ניהול סיכונים, פשוט מהכיוון אחר. הנה כמה דברים שכדאי לשים לב אליהם:

1. פיזור רחב ככל האפשר

גם אם אתה כבר משקיע במדדים, שווה לבדוק שאתה לא יותר מדי מרוכז בשוק אחד (למשל, רק ארה"ב). תמהיל בין מדדי מניות, אג"ח, שווקים מתפתחים ומפותחים נותן יותר יציבות.

2. התאמה לרמת הסיכון האישית שלך

אם אתה לא ישן טוב בלילה כשיש ירידות בבורסה אולי אתה יותר סולידי ממה שחשבת. ניהול סיכונים אצלך מתחיל בשאלה: מה יקרה אם השוק ירד 30%? אם התשובה היא "אמכור מתוך פאניקה" אז החשיפה שלך למניות כנראה גבוהה מדי.

3. איזון תיק תקופתי (Rebalancing)

נניח שהשקעת 70% במניות ו-30% באג"ח, אבל אחרי שנה המניות עלו בטירוף והיחס נהיה 85%-15%. כדאי "להחזיר" את המאזן. למכור קצת מהמניות ולקנות אג"ח. זה עוזר לשמור על רמת הסיכון שבחרת מראש.

4. שמירה על נזילות לטווח קצר

השקעה במדדים זה מעולה לטווח הארוך, אבל אם אתה צריך כסף בקרוב (נגיד לדירה, לימודים, או הוצאה גדולה), כדאי שהוא לא יהיה בשוק ההון. ניהול סיכונים = לא להסתמך על השקעות תנודתיות לטווח קצר.

5. לא לנסות לתזמן את השוק

אחד הסיכונים הכי גדולים למשקיעים פסיביים זה… עצמם. כשיש ירידות, הרבה "משקיעים" מוכרים מתוך לחץ. כשיש עליות, הם רצים לקנות כי הם לא רוצים לפספס. עדיף פשוט להשקיע בצורה קבועה (כמו הוראת קבע חודשית) ולא לנסות להיות חכמים יותר מהשוק.

דוגמה מעשית (Case Study): יוסף, סוחר עצמאי  והלקח שעלה לו ביוקר

יוסף, בן 34 מחדרה, התחיל לסחור לבד מהבית בזמן הקורונה. הוא קרא כמה כתבות, עקב אחרי כמה יוטיוברים ופתח תיק של 50,000 ש"ח. הוא החליט להתחיל "בקטן"  אבל מהר מאוד נכנס לעסקאות עם פוזיציות גדולות מההון היחסי שלו. למה? כי "המניה בטוח תתפוצץ" לדבריו.

בהתחלה זה באמת הלך לו. הוא הכפיל את התיק כמעט תוך חודשיים. הביטחון הרקיע שחקים, ועם הזמן כללי הזהירות נעלמו. לא היה Stop Loss, לא היה ניהול סיכונים מסודר, לא הייתה בדיקה מקדימה של הסיכוי לעומת הסיכון. יוסף השקיע כמעט את כל ההון במניה אחת מתחום הטכנולוגיה, שנראתה לו כמו "הדבר הבא".

ואז הדו"ח הרבעוני של אותה חברה איכזב. המניה צללה ב-40% ביום אחד. יוסף לא יצא מהעסקה בזמן. הוא דחה את הקץ, קיווה לתיקון, לא רצה "לממש הפסד" והמשיך להחזיק אותה.
תוך שבועיים נוספים המניה ירדה בעוד 20%. התיק שלו הצטמק חזרה ל-30,000 ש"ח.

הוא אמנם לא התרסק לגמרי  אבל הלך לו רוב הרווח, ועוד קצת מהקרן.
רק אחרי המשבר הזה יוסף התחיל ללמוד ברצינות על ניהול סיכונים. הוא בנה לעצמו אסטרטגיית מסחר, התחיל להשתמש בפקודות Stop Loss, הגדיר תקרת סיכון לכל עסקה  והכי חשוב, התחיל להבין שלא כל עסקה היא "להרפתקה", אלא תהליך שדורש שליטה ומודעות.  אל תהיו יוסף.

לסיכום, האם חייבים לעשות ניהול סיכונים בהשקעות?

ניהול סיכונים היא לא תוספת נחמדה אלא זה חלק בלתי נפרד מכל פעילות בשוק ההון. בין אם אתם סוחרים יומיים עם מסך מלא גרפים או משקיעים במדדים לטווח הארוך בלי ניהול סיכונים, אתם פשוט משחקים באש.
העקרונות הבסיסיים, הטכניקות המתקדמות והטעויות שראינו, כולם מזכירים דבר אחד פשוט: אתם לא יכולים לשלוט בתשואה, אבל כן יכולים לשלוט בסיכון.

ברמה האישית, אני חושב שהרבה אנשים נכנסים לעולם ההשקעות או המסחר עם חלומות על רווחים מהירים, אבל בלי לבנות קודם כל יסודות של משמעת, הבנה וסבלנות.
ניהול סיכונים זה אולי לא הנושא הכי "סקסי", אבל הוא זה שעושה את ההבדל בין מישהו שנשאר לאורך זמן- למישהו שנשרף ונעלם.

רלוונטי: איך להתחיל להשקיע בשוק ההון?

 

הצטרפו לניוזלטר הסודי שלנו!

אנחנו גם שונאים ספאם אז מבטיחים לא לבלבל לכם את השכל, רק דברים שווים

הצטרפו לקבוצת הפייסבוק שלנו

הצטרפו לקבוצת הפייסבוק שלנו

האקסל לניהול תקציב של פיננקה עושה לכם סדר בכספים!
חדש! עכשיו בגרסה 3.0: תוכלו לעקוב בקלות אחרי ההכנסות וההוצאות, לתכנן את התקציב שלכם מראש ולראות גרפים ודוחות מתקדמים בלחיצה. הורידו עכשיו והתחילו לנהל את הכלכלה שלכם בצורה פשוטה, חכמה ויעילה!

מידע מקצועי נוסף עבורכם

רוצה לדבר עם מומחה?

ניתן להשתמש בחצי המקלדת בכדי לנווט בין כפתורי הרכיב
",e=e.removeChild(e.firstChild)):"string"==typeof o.is?e=l.createElement(a,{is:o.is}):(e=l.createElement(a),"select"===a&&(l=e,o.multiple?l.multiple=!0:o.size&&(l.size=o.size))):e=l.createElementNS(e,a),e[Ni]=t,e[Pi]=o,Pl(e,t,!1,!1),t.stateNode=e,l=Ae(a,o),a){case"iframe":case"object":case"embed":Te("load",e),u=o;break;case"video":case"audio":for(u=0;u<$a.length;u++)Te($a[u],e);u=o;break;case"source":Te("error",e),u=o;break;case"img":case"image":case"link":Te("error",e),Te("load",e),u=o;break;case"form":Te("reset",e),Te("submit",e),u=o;break;case"details":Te("toggle",e),u=o;break;case"input":A(e,o),u=M(e,o),Te("invalid",e),Ie(n,"onChange");break;case"option":u=B(e,o);break;case"select":e._wrapperState={wasMultiple:!!o.multiple},u=Uo({},o,{value:void 0}),Te("invalid",e),Ie(n,"onChange");break;case"textarea":V(e,o),u=H(e,o),Te("invalid",e),Ie(n,"onChange");break;default:u=o}Me(a,u);var s=u;for(i in s)if(s.hasOwnProperty(i)){var c=s[i];"style"===i?ze(e,c):"dangerouslySetInnerHTML"===i?(c=c?c.__html:void 0,null!=c&&Aa(e,c)):"children"===i?"string"==typeof c?("textarea"!==a||""!==c)&&X(e,c):"number"==typeof c&&X(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(ea.hasOwnProperty(i)?null!=c&&Ie(n,i):null!=c&&x(e,i,c,l))}switch(a){case"input":L(e),j(e,o,!1);break;case"textarea":L(e),$(e);break;case"option":null!=o.value&&e.setAttribute("value",""+P(o.value));break;case"select":e.multiple=!!o.multiple,n=o.value,null!=n?q(e,!!o.multiple,n,!1):null!=o.defaultValue&&q(e,!!o.multiple,o.defaultValue,!0);break;default:"function"==typeof u.onClick&&(e.onclick=Fe)}Ve(a,o)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Ll(e,t,e.memoizedProps,o);else{if("string"!=typeof o&&null===t.stateNode)throw Error(r(166));n=yn(yu.current),yn(bu.current),Jn(t)?(n=t.stateNode,o=t.memoizedProps,n[Ni]=t,n.nodeValue!==o&&(t.effectTag|=4)):(n=(9===n.nodeType?n:n.ownerDocument).createTextNode(o),n[Ni]=t,t.stateNode=n)}return null;case 13:return zt(vu),o=t.memoizedState,0!==(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==o,o=!1,null===e?void 0!==t.memoizedProps.fallback&&Jn(t):(a=e.memoizedState,o=null!==a,n||null===a||(a=e.child.sibling,null!==a&&(i=t.firstEffect,null!==i?(t.firstEffect=a,a.nextEffect=i):(t.firstEffect=t.lastEffect=a,a.nextEffect=null),a.effectTag=8))),n&&!o&&0!==(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!==(1&vu.current)?rs===Qu&&(rs=Yu):(rs!==Qu&&rs!==Yu||(rs=Gu),0!==us&&null!==es&&(To(es,ns),Co(es,us)))),(n||o)&&(t.effectTag|=4),null);case 4:return wn(),Ol(t),null;case 10:return Zt(t),null;case 17:return It(t.type)&&Ft(),null;case 19:if(zt(vu),o=t.memoizedState,null===o)return null;if(a=0!==(64&t.effectTag),i=o.rendering,null===i){if(a)mr(o,!1);else if(rs!==Qu||null!==e&&0!==(64&e.effectTag))for(i=t.child;null!==i;){if(e=_n(i),null!==e){for(t.effectTag|=64,mr(o,!1),a=e.updateQueue,null!==a&&(t.updateQueue=a,t.effectTag|=4),null===o.lastEffect&&(t.firstEffect=null),t.lastEffect=o.lastEffect,o=t.child;null!==o;)a=o,i=n,a.effectTag&=2,a.nextEffect=null,a.firstEffect=null,a.lastEffect=null,e=a.alternate,null===e?(a.childExpirationTime=0,a.expirationTime=i,a.child=null,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null):(a.childExpirationTime=e.childExpirationTime,a.expirationTime=e.expirationTime,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,i=e.dependencies,a.dependencies=null===i?null:{expirationTime:i.expirationTime,firstContext:i.firstContext,responders:i.responders}),o=o.sibling;return Mt(vu,1&vu.current|2),t.child}i=i.sibling}}else{if(!a)if(e=_n(i),null!==e){if(t.effectTag|=64,a=!0,n=e.updateQueue,null!==n&&(t.updateQueue=n,t.effectTag|=4),mr(o,!0),null===o.tail&&"hidden"===o.tailMode&&!i.alternate)return t=t.lastEffect=o.lastEffect,null!==t&&(t.nextEffect=null),null}else 2*ru()-o.renderingStartTime>o.tailExpiration&&1t)&&vs.set(e,t)))}}function Ur(e,t){e.expirationTimee?n:e,2>=e&&t!==e?0:e}function qr(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=$t(Vr.bind(null,e));else{var t=Br(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=Fr();if(1073741823===t?r=99:1===t||2===t?r=95:(r=10*(1073741821-t)-10*(1073741821-r),r=0>=r?99:250>=r?98:5250>=r?97:95),null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==Yl&&Bl(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?$t(Vr.bind(null,e)):Wt(r,Hr.bind(null,e),{timeout:10*(1073741821-t)-ru()}),e.callbackNode=t}}}function Hr(e,t){if(ks=0,t)return t=Fr(),No(e,t),qr(e),null;var n=Br(e);if(0!==n){if(t=e.callbackNode,(Ju&(Wu|$u))!==Hu)throw Error(r(327));if(lo(),e===es&&n===ns||Kr(e,n),null!==ts){var o=Ju;Ju|=Wu;for(var a=Yr();;)try{eo();break}catch(t){Xr(e,t)}if(Gt(),Ju=o,Bu.current=a,rs===Ku)throw t=os,Kr(e,n),To(e,n),qr(e),t;if(null===ts)switch(a=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,o=rs,es=null,o){case Qu:case Ku:throw Error(r(345));case Xu:No(e,2=n){e.lastPingedTime=n,Kr(e,n);break}}if(i=Br(e),0!==i&&i!==n)break;if(0!==o&&o!==n){e.lastPingedTime=o;break}e.timeoutHandle=Si(oo.bind(null,e),a);break}oo(e);break;case Gu:if(To(e,n),o=e.lastSuspendedTime,n===o&&(e.nextKnownPendingLevel=ro(a)),ss&&(a=e.lastPingedTime,0===a||a>=n)){e.lastPingedTime=n,Kr(e,n);break}if(a=Br(e),0!==a&&a!==n)break;if(0!==o&&o!==n){e.lastPingedTime=o;break}if(1073741823!==is?o=10*(1073741821-is)-ru():1073741823===as?o=0:(o=10*(1073741821-as)-5e3,a=ru(),n=10*(1073741821-n)-a,o=a-o,0>o&&(o=0),o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Uu(o/1960))-o,n=o?o=0:(a=0|l.busyDelayMs,i=ru()-(10*(1073741821-i)-(0|l.timeoutMs||5e3)),o=i<=a?0:a+o-i),10 component higher in the tree to provide a loading indicator or placeholder to display."+N(i))}rs!==Zu&&(rs=Xu),l=yr(l,i),f=a;do{switch(f.tag){case 3:u=l,f.effectTag|=4096,f.expirationTime=t;var w=Ar(f,u,t);ln(f,w); break e;case 1:u=l;var E=f.type,k=f.stateNode;if(0===(64&f.effectTag)&&("function"==typeof E.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===ms||!ms.has(k)))){f.effectTag|=4096,f.expirationTime=t;var _=Ir(f,u,t);ln(f,_);break e}}f=f.return}while(null!==f)}ts=no(ts)}catch(e){t=e;continue}break}}function Yr(){var e=Bu.current;return Bu.current=Cu,null===e?Cu:e}function Gr(e,t){eus&&(us=e)}function Jr(){for(;null!==ts;)ts=to(ts)}function eo(){for(;null!==ts&&!Gl();)ts=to(ts)}function to(e){var t=Fu(e.alternate,e,ns);return e.memoizedProps=e.pendingProps,null===t&&(t=no(e)),qu.current=null,t}function no(e){ts=e;do{var t=ts.alternate;if(e=ts.return,0===(2048&ts.effectTag)){if(t=br(t,ts,ns),1===ns||1!==ts.childExpirationTime){for(var n=0,r=ts.child;null!==r;){var o=r.expirationTime,a=r.childExpirationTime;o>n&&(n=o),a>n&&(n=a),r=r.sibling}ts.childExpirationTime=n}if(null!==t)return t;null!==e&&0===(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=ts.firstEffect),null!==ts.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=ts.firstEffect),e.lastEffect=ts.lastEffect),1e?t:e}function oo(e){var t=qt();return Vt(99,ao.bind(null,e,t)),null}function ao(e,t){do lo();while(null!==gs);if((Ju&(Wu|$u))!==Hu)throw Error(r(327));var n=e.finishedWork,o=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(r(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var a=ro(n);if(e.firstPendingTime=a,o<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:o<=e.firstSuspendedTime&&(e.firstSuspendedTime=o-1),o<=e.lastPingedTime&&(e.lastPingedTime=0),o<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===es&&(ts=es=null,ns=0),1u&&(c=u,u=l,l=c),c=Ue(w,l),f=Ue(w,u),c&&f&&(1!==k.rangeCount||k.anchorNode!==c.node||k.anchorOffset!==c.offset||k.focusNode!==f.node||k.focusOffset!==f.offset)&&(E=E.createRange(),E.setStart(c.node,c.offset),k.removeAllRanges(),l>u?(k.addRange(E),k.extend(f.node,f.offset)):(E.setEnd(f.node,f.offset),k.addRange(E)))))),E=[];for(k=w;k=k.parentNode;)1===k.nodeType&&E.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof w.focus&&w.focus(),w=0;w=t&&e<=t}function To(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Co(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function No(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Po(e,t,n,o){var a=t.current,i=Fr(),l=su.suspense;i=jr(i,a,l);e:if(n){n=n._reactInternalFiber;t:{if(J(n)!==n||1!==n.tag)throw Error(r(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(It(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(r(171))}if(1===n.tag){var s=n.type;if(It(s)){n=Dt(n,s,u);break e}}n=u}else n=Al;return null===t.context?t.context=n:t.pendingContext=n,t=on(i,l),t.payload={element:e},o=void 0===o?null:o,null!==o&&(t.callback=o),an(a,t),Dr(a,i),i}function Oo(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Ro(e,t){e=e.memoizedState,null!==e&&null!==e.dehydrated&&e.retryTime